public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
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/>


             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