From: "Matt Jolly" <kangie@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: media-sound/beets/
Date: Wed, 22 May 2024 13:19:30 +0000 (UTC) [thread overview]
Message-ID: <1716383842.ddb0475a2677d178669a9f6f53eb2bdf1ce77264.kangie@gentoo> (raw)
commit: ddb0475a2677d178669a9f6f53eb2bdf1ce77264
Author: Matt Jolly <kangie <AT> gentoo <DOT> org>
AuthorDate: Mon May 13 06:08:04 2024 +0000
Commit: Matt Jolly <kangie <AT> gentoo <DOT> org>
CommitDate: Wed May 22 13:17:22 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ddb0475a
media-sound/beets: add 1.7.0_pre20240501; update 9999
- Update metadata.xml to remove "smart" quotes
- Skip failing bash completions test instead of patching it out.
- add `sed` to drop some `addopts` that break pytest due to disabled
code coverage testing.
- Support py312
- Use PEP 517
- Add a proper VCS build path (any non-pypi build)
- add `EPYTEST_XDIST=1`
1.7.0_pre release has been added to support py312; there were too many
patches to sanely backport (and a lot of churn upstream). Upstream are
gearing up for an actual 1.7.0 release, hopefully soon:
https://github.com/beetbox/beets/discussions/4501#discussioncomment-9171769
Drop 'obsessive-compulsive' from the package description; upstream don't
(or no longer) use this phrase to describe their package and we don't
want or need phrasing like that in ::gentoo.
Signed-off-by: Matt Jolly <kangie <AT> gentoo.org>
media-sound/beets/Manifest | 1 +
media-sound/beets/beets-1.6.0-r1.ebuild | 2 +-
...-9999.ebuild => beets-1.7.0_pre20240501.ebuild} | 68 ++++++++++++++++++----
media-sound/beets/beets-9999.ebuild | 60 ++++++++++++++++---
media-sound/beets/metadata.xml | 6 +-
5 files changed, 116 insertions(+), 21 deletions(-)
diff --git a/media-sound/beets/Manifest b/media-sound/beets/Manifest
index 27f6f1a84bbe..7939d4065748 100644
--- a/media-sound/beets/Manifest
+++ b/media-sound/beets/Manifest
@@ -1 +1,2 @@
DIST beets-1.6.0.tar.gz 1698333 BLAKE2B 7d3ded703524d5f8740a6adf3769a5752a1e47720ebf0653238f117e4ef6f97461abcd0c7a0d7f428c9848c95277070b5687f9007c04e47b07cdb22eca8c9cbf SHA512 b03759a2be7d3318b4f43cac09ada229cea6496774ba3dcdb1458427e41f6329a627241afc0bfaa9a91afb6818ba944ef6088e38c5635a3bfe730a6a8011a0dc
+DIST beets-1.7.0_pre20240501.gh.tar.gz 2247319 BLAKE2B e215c8a2a30a44d298746351be4fa2de1cebb7d6aec2bc7dfc679b133ea5eddefec20d038aa1aa1d734b176c09163b93f917c6c29ea5115c4c2349e090c8c5df SHA512 f397c72b481d7d8822db598ab37c99d0b9063ae45455c0d34116fab7b5a4cc683a3357bdfe436181b1dea46ee05192cc37faf355b5e093d63c2e440e523b92bc
diff --git a/media-sound/beets/beets-1.6.0-r1.ebuild b/media-sound/beets/beets-1.6.0-r1.ebuild
index 5d407a5cc040..05075184f5f8 100644
--- a/media-sound/beets/beets-1.6.0-r1.ebuild
+++ b/media-sound/beets/beets-1.6.0-r1.ebuild
@@ -20,7 +20,7 @@ else
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"
diff --git a/media-sound/beets/beets-9999.ebuild b/media-sound/beets/beets-1.7.0_pre20240501.ebuild
similarity index 55%
copy from media-sound/beets/beets-9999.ebuild
copy to media-sound/beets/beets-1.7.0_pre20240501.ebuild
index 8c8520a503a4..cd2e96c3b30f 100644
--- a/media-sound/beets/beets-9999.ebuild
+++ b/media-sound/beets/beets-1.7.0_pre20240501.ebuild
@@ -4,23 +4,31 @@
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"
inherit git-r3
else
- inherit pypi
- MY_PV=${PV/_beta/-beta.}
- MY_P=${PN}-${MY_PV}
+ MY_COMMIT=c75f07a0da6c622d3cd0f5aad0a08edaea360dad
+ # This should be set to 1 if we're not sourcing tarballs from pypi; we need to generate mans.
+ IS_VCS_SOURCE="yes"
+ UPDATE_VERSION="yes"
+ SRC_URI="https://github.com/beetbox/beets/archive/${MY_COMMIT}.tar.gz -> ${P}.gh.tar.gz"
KEYWORDS="~amd64 ~x86"
- S="${WORKDIR}/${MY_P}"
+ S="${WORKDIR}/${PN}-${MY_COMMIT}"
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 +90,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 +125,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 +150,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]"
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]"
diff --git a/media-sound/beets/metadata.xml b/media-sound/beets/metadata.xml
index 36c57a9de9b8..5de446482bcd 100644
--- a/media-sound/beets/metadata.xml
+++ b/media-sound/beets/metadata.xml
@@ -18,17 +18,17 @@
Because beets is designed as a library, it can do almost anything you can
imagine for your music collection. Via plugins, beets becomes a panacea:
- * Embed and extract album art from files’ tags.
+ * Embed and extract album art from files' tags.
* Listen to your library with a music player that speaks the MPD protocol
and works with a staggering variety of interfaces.
* Fetch lyrics for all your songs from databases on the Web.
* Manage your MusicBrainz music collection.
- * Analyze music files’ metadata from the command line.
+ * Analyze music files' metadata from the command line.
* Clean up crufty tags left behind by other, less-awesome tools.
* Browse your music library graphically through a Web browser and play it
in any browser that supports HTML5 Audio.
- If beets doesn’t do what you want yet, writing your own plugin is
+ If beets doesn't do what you want yet, writing your own plugin is
shockingly simple if you know a little Python.
</longdescription>
<stabilize-allarches/>
next reply other threads:[~2024-05-22 13:19 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-22 13:19 Matt Jolly [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-03-11 9:04 [gentoo-commits] repo/gentoo:master commit in: media-sound/beets/ Ionen Wolkens
2024-12-19 7:54 Arsen Arsenović
2024-12-19 7:54 Arsen Arsenović
2024-06-13 9:26 Matt Jolly
2024-06-03 5:06 Matt Jolly
2024-06-03 5:06 Matt Jolly
2024-05-28 22:01 Sam James
2024-05-23 7:51 Matt Jolly
2024-05-08 21:33 Sam James
2023-07-14 12:09 Sam James
2023-05-20 6:22 Michał Górny
2023-05-01 0:34 Sam James
2023-05-01 0:19 Sam James
2023-02-22 16:02 Sam James
2023-02-22 16:02 Sam James
2023-02-22 16:00 Sam James
2023-02-22 16:00 Sam James
2022-06-22 13:22 Agostino Sarubbo
2022-06-21 6:40 Sam James
2022-06-21 5:35 Sam James
2022-06-07 21:09 Sam James
2022-02-13 22:59 Jakov Smolić
2021-10-31 18:29 Sam James
2021-10-31 8:46 Sam James
2021-10-31 2:58 Sam James
2021-06-01 0:28 Sam James
2021-05-14 11:21 Sam James
2021-01-26 11:37 Joonas Niilola
2021-01-26 11:37 Joonas Niilola
2021-01-26 11:37 Joonas Niilola
2021-01-24 8:09 Joonas Niilola
2021-01-24 8:09 Joonas Niilola
2021-01-18 12:27 Joonas Niilola
2021-01-18 12:27 Joonas Niilola
2021-01-18 12:27 Joonas Niilola
2020-06-01 13:10 Joonas Niilola
2020-06-01 13:07 Joonas Niilola
2020-06-01 13:07 Joonas Niilola
2020-06-01 12:28 Joonas Niilola
2020-06-01 12:28 Joonas Niilola
2020-06-01 12:28 Joonas Niilola
2020-06-01 12:28 Joonas Niilola
2020-03-16 18:55 Michał Górny
2019-08-30 11:46 Joonas Niilola
2019-08-30 11:46 Joonas Niilola
2019-06-01 14:26 Andreas Sturmlechner
2019-05-19 17:54 Andreas Sturmlechner
2018-09-05 21:08 Andreas Sturmlechner
2018-09-05 21:08 Andreas Sturmlechner
2018-09-05 21:08 Andreas Sturmlechner
2018-09-05 21:08 Andreas Sturmlechner
2018-03-18 12:42 Pacho Ramos
2018-03-18 12:42 Pacho Ramos
2017-02-20 0:36 Robin H. Johnson
2016-08-10 20:18 Michael Palimaka
2016-08-10 20:18 Michael Palimaka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1716383842.ddb0475a2677d178669a9f6f53eb2bdf1ce77264.kangie@gentoo \
--to=kangie@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox