diff options
author | V3n3RiX <venerix@koprulu.sector> | 2024-05-23 00:06:40 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2024-05-23 00:06:40 +0100 |
commit | b3b92de25c3fc5f6bddc5e513027140591a0b2a5 (patch) | |
tree | f2ce6d7e747abea3e8fa7d99e32ad5d98cf33988 /media-sound/beets/beets-9999.ebuild | |
parent | 236e75597883501f8700d9ba1a5c8276f578a17f (diff) |
gentoo auto-resync : 23:05:2024 - 00:06:39
Diffstat (limited to 'media-sound/beets/beets-9999.ebuild')
-rw-r--r-- | media-sound/beets/beets-9999.ebuild | 60 |
1 files changed, 53 insertions, 7 deletions
diff --git a/media-sound/beets/beets-9999.ebuild b/media-sound/beets/beets-9999.ebuild index 8c8520a503a4..65e7d9973471 100644 --- a/media-sound/beets/beets-9999.ebuild +++ b/media-sound/beets/beets-9999.ebuild @@ -4,10 +4,16 @@ EAPI=8 DISTUTILS_SINGLE_IMPL=1 -PYTHON_COMPAT=( python3_{9..11} ) +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..12} ) PYTHON_REQ_USE="sqlite" -inherit distutils-r1 bash-completion-r1 optfeature +# These envvars are used to treat github tarball builds differently +# from pypi sources. Enable where required +: ${IS_VCS_SOURCE="no"} +: ${UPDATE_VERSION="no"} + +inherit distutils-r1 bash-completion-r1 multiprocessing optfeature if [[ ${PV} == "9999" ]]; then EGIT_REPO_URI="https://github.com/beetbox/beets.git" @@ -16,11 +22,11 @@ else inherit pypi MY_PV=${PV/_beta/-beta.} MY_P=${PN}-${MY_PV} - KEYWORDS="~amd64 ~x86" + KEYWORDS="amd64 ~x86" S="${WORKDIR}/${MY_P}" fi -DESCRIPTION="Media library management system for obsessive-compulsive music geeks" +DESCRIPTION="Media library management system for obsessive music geeks" HOMEPAGE="https://beets.io/ https://pypi.org/project/beets/" LICENSE="MIT" @@ -82,10 +88,33 @@ BDEPEND=" ) ')" +# Beets uses sphinx to generate manpages; these are not available +# directly in VCS sources, only pypi tarballs, so handle the dependency +# here automagically. +if [[ ${PV} == "9999" ]] || [[ ${IS_VCS_SOURCE} == "yes" ]]; then + BDEPEND+=" + dev-python/sphinx + " +fi + DOCS=( README.rst docs/changelog.rst ) +EPYTEST_XDIST=1 distutils_enable_tests pytest +src_prepare() { + # https://github.com/beetbox/beets/commit/8b4983fe7cae9397acd3e23602e419d8dc1041d4 + # merged code coverage into standard test runs; since we disable coverage globally + # we need to sed out some 'addopts' for coverage in setup.cfg that cause tests to choke. + sed -i -e "/--cov=beets/,+9d" setup.cfg || die "Failed to disable code coverage options in setup.cfg" + # Update the version if we're not building from pypy; it's probably a _pre or live ebuild. + if [[ ${PV} == "9999" ]] || [[ ${UPDATE_VERSION} == "yes" ]]; then + sed -i -e "s/version=\".*\"/version=\"${PV}\"/" setup.py || die "Failed to update version in VCS sources" + sed -i -e "s/__version__ = \".*\"/__version__ = \"${PV}\"/" beets/__init__.py + fi + default +} + python_prepare_all() { distutils-r1_python_prepare_all } @@ -94,6 +123,23 @@ python_compile_all() { if use doc ; then sphinx-build -b html docs docs/build || die fi + # If building from VCS sources we need to generate manpages, then copy them to ${S}/man + # We could install mans from the sphinx build path, but to be consistent with pypi for src_install + # we'll instead generate them and copy to the same install location if building from VCS sources. + if [[ ${PV} == "9999" ]] || [[ ${IS_VCS_SOURCE} == "yes" ]]; then + einfo "Building man pages" + sphinx-build -b man docs docs/build/man || die "Failed to generate man pages" + mkdir ${S}/man || die + cp docs/build/man/{beet.1,beetsconfig.5} ${S}/man || die + fi +} + +python_test() { + # https://github.com/beetbox/beets/issues/5243 testing bash completions is broken. + local EPYTEST_DESELECT=( + test/test_ui.py::CompletionTest::test_completion + ) + epytest -n$(makeopts_jobs) -v } python_install_all() { @@ -102,11 +148,11 @@ python_install_all() { doman man/* use doc && local HTML_DOCS=( docs/build/html/. ) einstalldocs - - ${PYTHON} "${ED}/usr/bin/beet" completion > "${T}/beet.bash" || die + # Generate the bash completions; we'll set PYTHONPATH for this invocation so that beets can start. + PYTHONPATH="${ED}/usr/lib/${PYTHON}:$PYTHONPATH" ${PYTHON} "${ED}/usr/bin/beet" completion > "${T}/beet.bash" || die newbashcomp "${T}/beet.bash" beet insinto /usr/share/zsh/site-functions - newins "${WORKDIR}/${P}/extra/_beet" _beet + newins "${S}/extra/_beet" _beet optfeature "badfiles support" "media-libs/flac media-sound/mp3val" optfeature "chromaprint support" "dev-python/pyacoustid media-libs/chromaprint[tools]" |