public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Michał Górny" <mgorny@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
Date: Tue, 22 Sep 2020 11:12:52 +0000 (UTC)	[thread overview]
Message-ID: <1600773169.4b0b254144141866ac51f66ad27cadf477f43da3.mgorny@gentoo> (raw)

commit:     4b0b254144141866ac51f66ad27cadf477f43da3
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 22 11:10:48 2020 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Sep 22 11:12:49 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4b0b2541

install-qa-check.d: Fix DUS check for DISTUTILS_OPTIONAL

Fix DISTUTILS_USE_SETUPTOOLS check to process all Python implementations
with egg-infos present in site-packages (possibly none).  This fixes
eclass errors when trying to call distutils-r1 functions when it is
actually disabled in DISTUTILS_OPTIONAL ebuilds.  It also reduces noise
while processing.

Closes: https://bugs.gentoo.org/744079
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 .../install-qa-check.d/60distutils-use-setuptools  | 63 +++++++++++-----------
 1 file changed, 33 insertions(+), 30 deletions(-)

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
index 0a1688a83c5..698d832800f 100644
--- a/metadata/install-qa-check.d/60distutils-use-setuptools
+++ b/metadata/install-qa-check.d/60distutils-use-setuptools
@@ -4,31 +4,6 @@
 # QA check: verify correctness of DISTUTILS_USE_SETUPTOOLS
 # Maintainer: Python project <python@gentoo.org>
 
-get_expected_distutils_use_setuptools() {
-	local sitedir=${D}$(python_get_sitedir)
-	local egg new_expected
-	while read -d $'\0' -r egg; do
-		if [[ -f ${egg} ]]; then
-			# if .egg-info is a file, it's plain distutils
-			new_expected=no
-		elif grep -q -s -F '[console_scripts]' "${egg}"/entry_points.txt
-		then
-			# entry_points == we need rdepend
-			new_expected=rdepend
-		elif grep -q -E -s '^setuptools' "${egg}"/requires.txt
-		then
-			# explicit rdepend in package metadata
-			new_expected=rdepend
-		else
-			new_expected=bdepend
-		fi
-
-		if ! has "${new_expected}" "${expected[@]}"; then
-			expected+=( "${new_expected[@]}" )
-		fi
-	done < <(find "${sitedir}" -name '*.egg-info' -print0)
-}
-
 distutils_use_setuptools_check() {
 	# applicable only to ebuilds inheriting distutils-r1
 	[[ ${_DISTUTILS_R1} ]] || return
@@ -38,18 +13,46 @@ distutils_use_setuptools_check() {
 	[[ ${DISTUTILS_USE_SETUPTOOLS} == pyproject.toml ]] && return
 
 	local expected=()
-	_distutils-r1_run_foreach_impl get_expected_distutils_use_setuptools
+	for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; do
+		local EPYTHON PYTHON
+		_python_export "${impl}" EPYTHON PYTHON
+		[[ -x ${PYTHON} ]] || continue
+		local sitedir=${D}$(python_get_sitedir)
+		if [[ -d ${sitedir} ]]; then
+			local egg new_expected
+			while read -d $'\0' -r egg; do
+				if [[ -f ${egg} ]]; then
+					# if .egg-info is a file, it's plain distutils
+					new_expected=no
+				elif grep -q -s -F '[console_scripts]' \
+						"${egg}"/entry_points.txt
+				then
+					# entry_points == we need rdepend
+					new_expected=rdepend
+				elif grep -q -E -s '^setuptools' \
+						"${egg}"/requires.txt
+				then
+					# explicit rdepend in package metadata
+					new_expected=rdepend
+				else
+					new_expected=bdepend
+				fi
+
+				if ! has "${new_expected}" "${expected[@]}"; then
+					expected+=( "${new_expected[@]}" )
+				fi
+			done < <(find "${sitedir}" -name '*.egg-info' -print0)
+		fi
+	done
 
 	# at this point, expected can contain: no bdepend rdepend
-	if [[ ${#expected[@]} -eq 0 ]]; then
-		eerror "No .egg-info found.  Please report a bug and CC python@"
-	elif [[ ${#expected[@]} -gt 1 ]] && has no "${expected[@]}"; then
+	if [[ ${#expected[@]} -gt 1 ]] && has no "${expected[@]}"; then
 		# 'no' and '[rb]depend' are mutually exclusive
 		eerror "The package seems to have used distutils and setuptools simultaneously."
 		eerror "This could mean the package has bad conditions:"
 		eerror "https://dev.gentoo.org/~mgorny/python-guide/distutils.html#conditional-distutils-setuptools-use-in-packages"
 		eerror "Please report a bug about this and CC python@"
-	else
+	elif [[ ${#expected[@]} -gt 0 ]]; then
 		# bdepend+rdepend=rdepend
 		has rdepend "${expected[@]}" && expected=( rdepend )
 		# at this point, expected should have exactly one value


             reply	other threads:[~2020-09-22 11:12 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-22 11:12 Michał Górny [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-08-13  4:59 [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/ Arthur Zamarin
2025-08-13  4:59 Arthur Zamarin
2025-06-01 12:35 Michał Górny
2025-04-19  1:27 Sam James
2025-04-18 17:21 Michał Górny
2025-04-18 15:22 Arthur Zamarin
2025-04-16  0:54 Michał Górny
2025-04-16  0:54 Michał Górny
2024-10-21 15:12 Michał Górny
2024-09-05  8:43 Michał Górny
2024-03-29 18:47 Sam James
2024-01-08 14:48 Michał Górny
2024-01-08 14:48 Michał Górny
2024-01-08 14:48 Michał Górny
2024-01-08 14:48 Michał Górny
2024-01-08 14:48 Michał Górny
2024-01-08 14:48 Michał Górny
2024-01-08 14:48 Michał Górny
2024-01-08 14:48 Michał Górny
2024-01-08 14:48 Michał Górny
2023-08-17 22:08 Ulrich Müller
2023-05-17  3:40 Michał Górny
2022-09-19  3:52 Sam James
2022-08-21  2:31 Sam James
2022-08-04 23:49 Sam James
2022-08-03 18:56 Sam James
2022-08-03  4:27 Sam James
2022-08-03  1:53 Sam James
2022-08-02  4:08 Michał Górny
2022-07-16 11:26 Michał Górny
2022-06-08  0:25 Mike Gilbert
2022-05-06 12:48 Ionen Wolkens
2022-05-05 23:38 Sam James
2022-05-02  6:01 Agostino Sarubbo
2022-04-30 19:13 Sam James
2022-04-28  3:06 Sam James
2022-04-27  0:13 Sam James
2022-04-26 23:45 Sam James
2022-04-26 15:32 Sam James
2022-04-19 18:31 Sam James
2022-04-19 18:31 Sam James
2022-04-17 14:21 Sam James
2022-04-17 14:18 Sam James
2022-03-04  1:26 Sam James
2022-03-04  1:26 Sam James
2022-02-01 18:19 Mike Gilbert
2022-02-01  1:37 Mike Gilbert
2022-01-16  9:40 Michał Górny
2021-08-19  1:35 Sam James
2021-08-16  2:12 Sam James
2021-08-16  2:12 Sam James
2021-08-16  2:12 Sam James
2021-08-16  2:12 Sam James
2021-08-02  8:17 Michał Górny
2021-07-03  8:16 Michał Górny
2021-07-01  8:57 Georgy Yakovlev
2021-06-28 18:47 Georgy Yakovlev
2021-06-28  8:56 Georgy Yakovlev
2021-06-28  0:12 Georgy Yakovlev
2021-06-27  2:08 Sam James
2021-06-26 23:25 Georgy Yakovlev
2021-06-26 23:09 Georgy Yakovlev
2021-05-29 15:15 Michał Górny
2021-05-25  5:13 Michał Górny
2021-04-29 11:42 Michał Górny
2021-04-29 11:42 Michał Górny
2021-04-29 11:42 Michał Górny
2021-04-29 11:42 Michał Górny
2021-04-09 23:17 Sam James
2020-10-17 19:01 Michał Górny
2020-10-16  7:42 Michał Górny
2020-09-22  7:33 Michał Górny
2020-09-22  7:00 Michał Górny
2020-09-22  7:00 Michał Górny
2020-09-21 17:48 Michał Górny
2020-09-21 15:30 Michał Górny
2020-02-13 18:59 Georgy Yakovlev
2020-01-20 20:45 Michael Orlitzky
2019-12-30 16:10 Michał Górny
2019-11-12  7:53 Sergei Trofimovich
2019-11-11 23:05 Zac Medico
2019-11-11 22:25 Sergei Trofimovich
2019-11-01 13:16 Michał Górny
2018-10-06  8:35 Michał Górny

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=1600773169.4b0b254144141866ac51f66ad27cadf477f43da3.mgorny@gentoo \
    --to=mgorny@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