public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2018-10-06  8:35 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2018-10-06  8:35 UTC (permalink / raw
  To: gentoo-commits

commit:     67ffc42815419f5b33698f5739de321f6a6edd4a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Oct  6 08:30:50 2018 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Oct  6 08:35:33 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=67ffc428

install-qa-check.d: Move 08gentoo-paths check outta Portage

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
Bug: https://bugs.gentoo.org/show_bug.cgi?id=667604

 metadata/install-qa-check.d/08gentoo-paths | 77 ++++++++++++++++++++++++++++++
 1 file changed, 77 insertions(+)

diff --git a/metadata/install-qa-check.d/08gentoo-paths b/metadata/install-qa-check.d/08gentoo-paths
new file mode 100644
index 00000000000..3ee887df08f
--- /dev/null
+++ b/metadata/install-qa-check.d/08gentoo-paths
@@ -0,0 +1,77 @@
+# Check whether ebuilds are not installing new, non-Gentoo-ey paths.
+
+gentoo_path_check() {
+	# allowed path definitions
+	# ------------------------
+
+	# directories common to / and /usr
+	local allowed_common_dirs=(
+		bin lib lib32 lib64 libx32 sbin
+	)
+
+	# toplevel directories which can be installed to by ebuilds
+	# /home is not included as no ebuilds should install files there
+	local allowed_paths_toplevel=(
+		"${allowed_common_dirs[@]}"
+		boot dev etc opt srv usr var
+	)
+
+	# directories in /usr which can be installed to by ebuilds
+	# /usr/games is not included as it is banned nowadays
+	local allowed_paths_usr=(
+		"${allowed_common_dirs[@]}"
+		include libexec share src
+		# toolchain stuff
+		"${CHOST}" "${CTARGET}"
+	)
+
+
+	# the logic
+	# ---------
+	local bad_paths=()
+	local x
+
+	local shopt_save=$(shopt -p nullglob)
+	shopt -s nullglob
+
+	# 1. check for unexpected top-level directories
+	local toplevel_dirs=( "${ED%/}"/* )
+	for x in "${toplevel_dirs[@]##*/}"; do
+		if ! has "${x}" "${allowed_paths_toplevel[@]}"; then
+			bad_paths+=( "/${x}" )
+		fi
+	done
+
+	# 2. check for unexpected /usr subdirectories
+	local usr_dirs=( "${ED%/}"/usr/* )
+	for x in "${usr_dirs[@]##*/}"; do
+		if ! has "${x}" "${allowed_paths_usr[@]}"; then
+			bad_paths+=( "/usr/${x}" )
+		fi
+	done
+
+	# 3. check for unexpected /usr/share/doc subdirectories
+	local doc_dirs=( "${ED%/}"/usr/share/doc/* )
+	for x in "${doc_dirs[@]##*/}"; do
+		if [[ ${x} != ${PF} ]]; then
+			bad_paths+=( "/usr/share/doc/${x}" )
+		fi
+	done
+
+	${shopt_save}
+
+	# report
+	# ------
+	if [[ -n ${bad_paths[@]} ]]; then
+		eqawarn "The ebuild is installing to one or more unexpected paths:"
+		eqawarn
+		eqatag -v non-gentoo-paths "${bad_paths[@]}"
+		eqawarn
+		eqawarn "Please fix the ebuild to use correct FHS/Gentoo policy paths."
+	fi
+}
+
+gentoo_path_check
+: # guarantee successful exit
+
+# vim:ft=sh


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2019-11-01 13:16 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2019-11-01 13:16 UTC (permalink / raw
  To: gentoo-commits

commit:     e882a48879d732a777ff10cd80063d2e3de3b8da
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct 23 10:13:30 2019 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Nov  1 13:15:59 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e882a488

install-qa-check.d: Add check for missing Python bytecode (.pyc)

Add a check that detects Python modules that were not compiled after
installation.  To limit false positives, this is only done on modules
installed to site-packages.

Early testing of this check made it possible to detect a bug
in python_optimize.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60python-pyc | 84 ++++++++++++++++++++++++++++++++
 1 file changed, 84 insertions(+)

diff --git a/metadata/install-qa-check.d/60python-pyc b/metadata/install-qa-check.d/60python-pyc
new file mode 100644
index 00000000000..ef668aed995
--- /dev/null
+++ b/metadata/install-qa-check.d/60python-pyc
@@ -0,0 +1,84 @@
+# Copyright 2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# QA check: ensure that Python modules are compiled after installing
+# Maintainer: Python project <python@gentoo.org>
+
+inherit python-utils-r1
+
+python_pyc_check() {
+	local impl missing=() outdated=()
+	for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; do
+		python_export "${impl}" EPYTHON PYTHON
+		[[ -x ${PYTHON} ]] || continue
+		local sitedir=$(python_get_sitedir "${impl}")
+
+		if [[ -d ${D}${sitedir} ]]; then
+			local suffixes=() subdir=
+			case ${EPYTHON} in
+				python2*)
+					suffixes=( .py{c,o} )
+					;;
+				pypy)
+					suffixes=( .pyc )
+					;;
+				python3*|pypy3*)
+					local tag=$("${PYTHON}" -c 'import sys; print(sys.implementation.cache_tag)')
+					suffixes=( ".${tag}"{,.opt-{1,2}}.pyc )
+					subdir=__pycache__/
+					;;
+				*)
+					# skip testing unknown impl
+					continue
+					;;
+			esac
+
+			einfo "Verifying compiled files in ${sitedir}"
+			local f s
+			while read -d $'\0' -r f; do
+				local dir=${f%/*}
+				local basename=${f##*/}
+				basename=${basename%.py}
+
+				for s in "${suffixes[@]}"; do
+					local cache=${dir}/${subdir}${basename}${s}
+					if [[ ! -f ${cache} ]]; then
+						missing+=( "${cache}" )
+					elif [[ ${f} -nt ${cache} ]]; then
+						outdated+=( "${cache}" )
+					fi
+				done
+			done < <(find "${D}${sitedir}" -name '*.py' -print0)
+		fi
+	done
+
+	if [[ ${missing[@]} ]]; then
+		eqawarn
+		eqawarn "This package installs one or more Python modules that are not byte-compiled."
+		eqawarn "The following files are missing:"
+		eqawarn
+		eqatag -v python-pyc.missing "${missing[@]#${D}}"
+	fi
+
+	if [[ ${outdated[@]} ]]; then
+		eqawarn
+		eqawarn "This package installs one or more compiled Python modules that have older"
+		eqawarn "timestamps than the corresponding source files:"
+		eqawarn
+		eqatag -v python-pyc.outdated "${outdated[@]#${D}}"
+	fi
+
+	if [[ ${missing[@]} || ${outdated[@]} ]]; then
+		eqawarn
+		eqawarn "Please either fix the upstream build system to byte-compile Python modules"
+		eqawarn "correctly, or call python_optimize after installing them.  For more"
+		eqawarn "information, see:"
+		eqawarn "https://wiki.gentoo.org/wiki/Project:Python/Byte_compiling"
+		eqawarn
+	fi
+}
+
+python_pyc_check
+: # guarantee successful exit
+
+# vim:ft=ebuild


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2019-11-11 22:25 Sergei Trofimovich
  0 siblings, 0 replies; 76+ messages in thread
From: Sergei Trofimovich @ 2019-11-11 22:25 UTC (permalink / raw
  To: gentoo-commits

commit:     61d8c12e7207b9e22b9d63692e8157a314101742
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Sun Nov  3 22:14:22 2019 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Mon Nov 11 22:24:51 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=61d8c12e

metadata/install-qa-check.d/08gentoo-paths: add explicit maintainer

Bugs like bug #670902 get stuck due to unclear maintainership status.
Let's assign it to dev-portage@ as it historicallily lived in portage
source tree and QA does not take it over in bug #670902.

Bug: https://bugs.gentoo.org/670902
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 metadata/install-qa-check.d/08gentoo-paths | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/metadata/install-qa-check.d/08gentoo-paths b/metadata/install-qa-check.d/08gentoo-paths
index 3ee887df08f..5161aef9922 100644
--- a/metadata/install-qa-check.d/08gentoo-paths
+++ b/metadata/install-qa-check.d/08gentoo-paths
@@ -1,5 +1,8 @@
 # Check whether ebuilds are not installing new, non-Gentoo-ey paths.
 
+# QA check: validate Gentoo's filesystem layout policies
+# Maintainer: Portage team <dev-portage@gentoo.org>
+
 gentoo_path_check() {
 	# allowed path definitions
 	# ------------------------


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2019-11-11 23:05 Zac Medico
  0 siblings, 0 replies; 76+ messages in thread
From: Zac Medico @ 2019-11-11 23:05 UTC (permalink / raw
  To: gentoo-commits

commit:     598e450e5615e32a63c5fd6f3a9ce65ffc557b4f
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Mon Nov 11 23:03:40 2019 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Mon Nov 11 23:04:48 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=598e450e

install-qa-check.d/08gentoo-paths: add nix to allowed_paths_toplevel

Closes: https://bugs.gentoo.org/670902
Suggested-by: Michał Górny <mgorny <AT> gentoo.org>
Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>

 metadata/install-qa-check.d/08gentoo-paths | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/08gentoo-paths b/metadata/install-qa-check.d/08gentoo-paths
index 5161aef9922..9db1f9b3ce0 100644
--- a/metadata/install-qa-check.d/08gentoo-paths
+++ b/metadata/install-qa-check.d/08gentoo-paths
@@ -16,7 +16,7 @@ gentoo_path_check() {
 	# /home is not included as no ebuilds should install files there
 	local allowed_paths_toplevel=(
 		"${allowed_common_dirs[@]}"
-		boot dev etc opt srv usr var
+		boot dev etc nix opt srv usr var
 	)
 
 	# directories in /usr which can be installed to by ebuilds


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2019-11-12  7:53 Sergei Trofimovich
  0 siblings, 0 replies; 76+ messages in thread
From: Sergei Trofimovich @ 2019-11-12  7:53 UTC (permalink / raw
  To: gentoo-commits

commit:     5a11dc4c64a5b98067e9e350e608b1bf0a7162e3
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Tue Nov 12 07:46:04 2019 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Tue Nov 12 07:53:20 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5a11dc4c

metadata/install-qa-check.d/08gentoo-paths: add guix

sys-apps/nix and sys-apps/guix are twins:
- sys-apps/nix manages /nix/store
- sys-apps/guix manages /gnu/store

Added 'gnu' and mentioned packages that own the directory.

Bug: https://bugs.gentoo.org/670902
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 metadata/install-qa-check.d/08gentoo-paths | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/08gentoo-paths b/metadata/install-qa-check.d/08gentoo-paths
index 9db1f9b3ce0..e6cd7e67442 100644
--- a/metadata/install-qa-check.d/08gentoo-paths
+++ b/metadata/install-qa-check.d/08gentoo-paths
@@ -16,7 +16,9 @@ gentoo_path_check() {
 	# /home is not included as no ebuilds should install files there
 	local allowed_paths_toplevel=(
 		"${allowed_common_dirs[@]}"
-		boot dev etc nix opt srv usr var
+		boot dev etc opt srv usr var
+		nix # sys-apps/nix, bug #670902
+		gnu # sys-apps/guix, bug #670902
 	)
 
 	# directories in /usr which can be installed to by ebuilds


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2019-12-30 16:10 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2019-12-30 16:10 UTC (permalink / raw
  To: gentoo-commits

commit:     45df9e6b42511ed01a367ab2552b761682730c01
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon Dec 30 16:09:59 2019 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Dec 30 16:09:59 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=45df9e6b

metadata/install-qa-check.d/60python-pyc: Add EAPI guard

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

 metadata/install-qa-check.d/60python-pyc | 135 ++++++++++++++++---------------
 1 file changed, 69 insertions(+), 66 deletions(-)

diff --git a/metadata/install-qa-check.d/60python-pyc b/metadata/install-qa-check.d/60python-pyc
index ef668aed995..644c27243cd 100644
--- a/metadata/install-qa-check.d/60python-pyc
+++ b/metadata/install-qa-check.d/60python-pyc
@@ -4,81 +4,84 @@
 # QA check: ensure that Python modules are compiled after installing
 # Maintainer: Python project <python@gentoo.org>
 
-inherit python-utils-r1
+if [[ ${EAPI} == [5-7] ]]; then
+	inherit python-utils-r1
 
-python_pyc_check() {
-	local impl missing=() outdated=()
-	for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; do
-		python_export "${impl}" EPYTHON PYTHON
-		[[ -x ${PYTHON} ]] || continue
-		local sitedir=$(python_get_sitedir "${impl}")
+	python_pyc_check() {
+		local impl missing=() outdated=()
+		for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; do
+			python_export "${impl}" EPYTHON PYTHON
+			[[ -x ${PYTHON} ]] || continue
+			local sitedir=$(python_get_sitedir "${impl}")
 
-		if [[ -d ${D}${sitedir} ]]; then
-			local suffixes=() subdir=
-			case ${EPYTHON} in
-				python2*)
-					suffixes=( .py{c,o} )
-					;;
-				pypy)
-					suffixes=( .pyc )
-					;;
-				python3*|pypy3*)
-					local tag=$("${PYTHON}" -c 'import sys; print(sys.implementation.cache_tag)')
-					suffixes=( ".${tag}"{,.opt-{1,2}}.pyc )
-					subdir=__pycache__/
-					;;
-				*)
-					# skip testing unknown impl
-					continue
-					;;
-			esac
+			if [[ -d ${D}${sitedir} ]]; then
+				local suffixes=() subdir=
+				case ${EPYTHON} in
+					python2*)
+						suffixes=( .py{c,o} )
+						;;
+					pypy)
+						suffixes=( .pyc )
+						;;
+					python3*|pypy3*)
+						local tag=$("${PYTHON}" -c 'import sys; print(sys.implementation.cache_tag)')
+						suffixes=( ".${tag}"{,.opt-{1,2}}.pyc )
+						subdir=__pycache__/
+						;;
+					*)
+						# skip testing unknown impl
+						continue
+						;;
+				esac
 
-			einfo "Verifying compiled files in ${sitedir}"
-			local f s
-			while read -d $'\0' -r f; do
-				local dir=${f%/*}
-				local basename=${f##*/}
-				basename=${basename%.py}
+				einfo "Verifying compiled files in ${sitedir}"
+				local f s
+				while read -d $'\0' -r f; do
+					local dir=${f%/*}
+					local basename=${f##*/}
+					basename=${basename%.py}
 
-				for s in "${suffixes[@]}"; do
-					local cache=${dir}/${subdir}${basename}${s}
-					if [[ ! -f ${cache} ]]; then
-						missing+=( "${cache}" )
-					elif [[ ${f} -nt ${cache} ]]; then
-						outdated+=( "${cache}" )
-					fi
-				done
-			done < <(find "${D}${sitedir}" -name '*.py' -print0)
+					for s in "${suffixes[@]}"; do
+						local cache=${dir}/${subdir}${basename}${s}
+						if [[ ! -f ${cache} ]]; then
+							missing+=( "${cache}" )
+						elif [[ ${f} -nt ${cache} ]]; then
+							outdated+=( "${cache}" )
+						fi
+					done
+				done < <(find "${D}${sitedir}" -name '*.py' -print0)
+			fi
+		done
+
+		if [[ ${missing[@]} ]]; then
+			eqawarn
+			eqawarn "This package installs one or more Python modules that are not byte-compiled."
+			eqawarn "The following files are missing:"
+			eqawarn
+			eqatag -v python-pyc.missing "${missing[@]#${D}}"
 		fi
-	done
 
-	if [[ ${missing[@]} ]]; then
-		eqawarn
-		eqawarn "This package installs one or more Python modules that are not byte-compiled."
-		eqawarn "The following files are missing:"
-		eqawarn
-		eqatag -v python-pyc.missing "${missing[@]#${D}}"
-	fi
+		if [[ ${outdated[@]} ]]; then
+			eqawarn
+			eqawarn "This package installs one or more compiled Python modules that have older"
+			eqawarn "timestamps than the corresponding source files:"
+			eqawarn
+			eqatag -v python-pyc.outdated "${outdated[@]#${D}}"
+		fi
 
-	if [[ ${outdated[@]} ]]; then
-		eqawarn
-		eqawarn "This package installs one or more compiled Python modules that have older"
-		eqawarn "timestamps than the corresponding source files:"
-		eqawarn
-		eqatag -v python-pyc.outdated "${outdated[@]#${D}}"
-	fi
+		if [[ ${missing[@]} || ${outdated[@]} ]]; then
+			eqawarn
+			eqawarn "Please either fix the upstream build system to byte-compile Python modules"
+			eqawarn "correctly, or call python_optimize after installing them.  For more"
+			eqawarn "information, see:"
+			eqawarn "https://wiki.gentoo.org/wiki/Project:Python/Byte_compiling"
+			eqawarn
+		fi
+	}
 
-	if [[ ${missing[@]} || ${outdated[@]} ]]; then
-		eqawarn
-		eqawarn "Please either fix the upstream build system to byte-compile Python modules"
-		eqawarn "correctly, or call python_optimize after installing them.  For more"
-		eqawarn "information, see:"
-		eqawarn "https://wiki.gentoo.org/wiki/Project:Python/Byte_compiling"
-		eqawarn
-	fi
-}
+	python_pyc_check
+fi
 
-python_pyc_check
 : # guarantee successful exit
 
 # vim:ft=ebuild


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2020-01-20 20:45 Michael Orlitzky
  0 siblings, 0 replies; 76+ messages in thread
From: Michael Orlitzky @ 2020-01-20 20:45 UTC (permalink / raw
  To: gentoo-commits

commit:     48735f318b6509fe5bc80f9b5d2a298f9cef5d73
Author:     Michael Orlitzky <mjo <AT> gentoo <DOT> org>
AuthorDate: Mon Jan 20 01:02:08 2020 +0000
Commit:     Michael Orlitzky <mjo <AT> gentoo <DOT> org>
CommitDate: Mon Jan 20 20:43:45 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=48735f31

install-qa-check.d: disallow "nix" and "gnu" as top-level paths.

These exceptions were made for the sys-apps/nix and sys-apps/guix
packages that are no longer in the tree.

Signed-off-by: Michael Orlitzky <mjo <AT> gentoo.org>

 metadata/install-qa-check.d/08gentoo-paths | 2 --
 1 file changed, 2 deletions(-)

diff --git a/metadata/install-qa-check.d/08gentoo-paths b/metadata/install-qa-check.d/08gentoo-paths
index e6cd7e67442..5161aef9922 100644
--- a/metadata/install-qa-check.d/08gentoo-paths
+++ b/metadata/install-qa-check.d/08gentoo-paths
@@ -17,8 +17,6 @@ gentoo_path_check() {
 	local allowed_paths_toplevel=(
 		"${allowed_common_dirs[@]}"
 		boot dev etc opt srv usr var
-		nix # sys-apps/nix, bug #670902
-		gnu # sys-apps/guix, bug #670902
 	)
 
 	# directories in /usr which can be installed to by ebuilds


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2020-02-13 18:59 Georgy Yakovlev
  0 siblings, 0 replies; 76+ messages in thread
From: Georgy Yakovlev @ 2020-02-13 18:59 UTC (permalink / raw
  To: gentoo-commits

commit:     c219df8f32291b0e9194f0187032de7b9070fbac
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Thu Feb 13 07:32:27 2020 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Thu Feb 13 18:59:38 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c219df8f

metadata/install-qa-check.d/60appdata-path: new check

this will warn if package installs xml files to /usr/share/appdata
this location is deprecated, files should be installed to
/usr/share/metainfo

https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html

Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 metadata/install-qa-check.d/60appdata-path | 35 ++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/metadata/install-qa-check.d/60appdata-path b/metadata/install-qa-check.d/60appdata-path
new file mode 100644
index 00000000000..578137a3e9e
--- /dev/null
+++ b/metadata/install-qa-check.d/60appdata-path
@@ -0,0 +1,35 @@
+# Copyright 2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# QA check: ensure that metadata files are installed in /usr/share/metainfo
+# Maintainer: Georgy Yakovlev <gyakovlev@gentoo.org>
+
+appdata_path_check() {
+	[[ -d ${ED%/}/usr/share/appdata ]] || return
+
+	local found=() f
+	while read -d '' -r f; do
+		found+=( "${f%/*}" )
+	done < <(find "${ED%/}/usr/share/appdata" -name '*.xml' -print0 || die)
+
+	if [[ ${found[@]} ]]; then
+		eqawarn
+		eqawarn "This package seems to install metainfo files into the following"
+		eqawarn "location(s):"
+		eqawarn
+		eqatag -v appdata.invalid-path "${found[@]#${D%/}}"
+		eqawarn
+		eqawarn "This location is deprecated, it should not be used anymore by new software."
+		eqawarn "Appdata/Metainfo files should be installed into /usr/share/metainfo directory."
+		eqawarn "For more details, please see the freedesktop Upstream Metadata guidelines at"
+		eqawarn "https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html"
+		eqawarn
+		eqawarn "Gentoo Tracker bug: https://bugs.gentoo.org/709450"
+		eqawarn
+	fi
+}
+
+appdata_path_check
+: # guarantee successful exit
+
+# vim:ft=sh


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2020-09-21 15:30 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2020-09-21 15:30 UTC (permalink / raw
  To: gentoo-commits

commit:     9520fd88a9f8f9a8141e51a53305a5ee13195bd8
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 18 20:37:55 2020 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Sep 21 15:30:01 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9520fd88

install-qa-check.d: add DISTUTILS_USE_SETUPTOOLS check

Move DISTUTILS_USE_SETUPTOOLS check from distutils-r1.eclass to install
QA checks, and rewrite it to use installed egg-info rather than greps
on input files.  This produces less false positives, particularly
in packages that use boilerplate empty 'entry_points' in their setup
script or configuration file.

We also no longer require explicit setuptools RDEPEND for packages using
other entry point types than console_scripts -- instead, we assume that
the package consuming these entry points will bring setuptools
as necessary.

The rough idea is to look at egg-info metadata installed by distutils
or setuptools.  Plain distutils installs it as a regular file, while
setuptools as a directory, and that's how we distinguish the two.
For setuptools, we additionally grep entry_points.txt for
`[console_scripts]`, and require RDEPEND when they are present.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

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

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
new file mode 100644
index 00000000000..db07212cce4
--- /dev/null
+++ b/metadata/install-qa-check.d/60distutils-use-setuptools
@@ -0,0 +1,60 @@
+# Copyright 2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# 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
+		else
+			new_expected=bdepend
+		fi
+
+		if [[ ${expected} && ${new_expected} != ${expected} ]]; then
+			expected=integrity-error
+		else
+			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
+	# 'manual' means no checking
+	[[ ${DISTUTILS_USE_SETUPTOOLS} == manual ]] && return
+	# pyproject.toml is verified by using it
+	[[ ${DISTUTILS_USE_SETUPTOOLS} == pyproject.toml ]] && return
+
+	local expected
+	_distutils-r1_run_foreach_impl get_expected_distutils_use_setuptools
+
+	if [[ ${expected} == integrity-error ]]; then
+		eerror "DISTUTILS_USE_SETUPTOOLS integrity error!"
+		eerror "expected was:    ${expected}"
+		eerror "new_expected is: ${new_expected}"
+		eerror "Please report a bug about this and CC python@"
+	elif [[ ${DISTUTILS_USE_SETUPTOOLS} != ${expected} ]]; then
+			local def=
+			[[ ${DISTUTILS_USE_SETUPTOOLS} == bdepend ]] && def=' (or unset)'
+
+			eqawarn "DISTUTILS_USE_SETUPTOOLS value is probably incorrect"
+			eqawarn "  have:     DISTUTILS_USE_SETUPTOOLS=${DISTUTILS_USE_SETUPTOOLS}${def}"
+			eqawarn "  expected: DISTUTILS_USE_SETUPTOOLS=${expected}"
+	fi
+}
+
+distutils_use_setuptools_check
+
+: # guarantee successful exit
+
+# vim:ft=ebuild


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2020-09-21 17:48 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2020-09-21 17:48 UTC (permalink / raw
  To: gentoo-commits

commit:     ce4ffcbe97e237429594136a3b600c3948f6d6c0
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon Sep 21 17:23:53 2020 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Sep 21 17:48:47 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ce4ffcbe

install-qa-check.d: Account for setuptools in requires.txt

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60distutils-use-setuptools | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
index db07212cce4..6581b5dab09 100644
--- a/metadata/install-qa-check.d/60distutils-use-setuptools
+++ b/metadata/install-qa-check.d/60distutils-use-setuptools
@@ -15,6 +15,10 @@ get_expected_distutils_use_setuptools() {
 		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


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2020-09-22  7:00 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2020-09-22  7:00 UTC (permalink / raw
  To: gentoo-commits

commit:     9652aac4adf41834b6afabcc8a09b80c4e598592
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 22 06:59:06 2020 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Sep 22 07:00:39 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9652aac4

install-qa-check.d: Allow bdepend/rdepend mix in DUS check

Allow DISTUTILS_USE_SETUPTOOLS guess to partially evaluate to bdepend
and partially to rdepend.  That is the case in dev-python/hypothesis
that installs CLI tools for CPython but not PyPy3.  In this case,
rdepend is the expected value.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60distutils-use-setuptools | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
index cc3434f586c..551cb0f0b6c 100644
--- a/metadata/install-qa-check.d/60distutils-use-setuptools
+++ b/metadata/install-qa-check.d/60distutils-use-setuptools
@@ -26,8 +26,15 @@ get_expected_distutils_use_setuptools() {
 		fi
 
 		if [[ ${expected} && ${new_expected} != ${expected} ]]; then
-			integrity_error_new=${new_expected}
-			return 1
+			if [[ ${expected}${new_expected} == [br]depend[br]depend ]]
+			then
+				# packages can have scripts that are installed
+				# conditionally to implementation
+				expected=rdepend
+			else
+				integrity_error_new=${new_expected}
+				return 1
+			fi
 		else
 			expected=${new_expected}
 		fi


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2020-09-22  7:00 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2020-09-22  7:00 UTC (permalink / raw
  To: gentoo-commits

commit:     001ccd6e3e1ac673b67eb68f9a4b67559506607b
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 22 06:48:26 2020 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Sep 22 07:00:38 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=001ccd6e

install-qa-check.d: Fix reporting integrity-errors in DUS check

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60distutils-use-setuptools | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
index 6581b5dab09..cc3434f586c 100644
--- a/metadata/install-qa-check.d/60distutils-use-setuptools
+++ b/metadata/install-qa-check.d/60distutils-use-setuptools
@@ -5,6 +5,8 @@
 # Maintainer: Python project <python@gentoo.org>
 
 get_expected_distutils_use_setuptools() {
+	[[ ${integrity_error_new} ]] && return 1
+
 	local sitedir=${D}$(python_get_sitedir)
 	local egg new_expected
 	while read -d $'\0' -r egg; do
@@ -24,7 +26,8 @@ get_expected_distutils_use_setuptools() {
 		fi
 
 		if [[ ${expected} && ${new_expected} != ${expected} ]]; then
-			expected=integrity-error
+			integrity_error_new=${new_expected}
+			return 1
 		else
 			expected=${new_expected}
 		fi
@@ -39,13 +42,13 @@ distutils_use_setuptools_check() {
 	# pyproject.toml is verified by using it
 	[[ ${DISTUTILS_USE_SETUPTOOLS} == pyproject.toml ]] && return
 
-	local expected
+	local expected integrity_error_new
 	_distutils-r1_run_foreach_impl get_expected_distutils_use_setuptools
 
-	if [[ ${expected} == integrity-error ]]; then
+	if [[ ${integrity_error_new} ]]; then
 		eerror "DISTUTILS_USE_SETUPTOOLS integrity error!"
 		eerror "expected was:    ${expected}"
-		eerror "new_expected is: ${new_expected}"
+		eerror "new_expected is: ${integrity_error_new}"
 		eerror "Please report a bug about this and CC python@"
 	elif [[ ${DISTUTILS_USE_SETUPTOOLS} != ${expected} ]]; then
 			local def=


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2020-09-22  7:33 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2020-09-22  7:33 UTC (permalink / raw
  To: gentoo-commits

commit:     697ade8b8aa51f6bba030a1c01c1f9896f3d7719
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 22 07:32:33 2020 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Sep 22 07:33:52 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=697ade8b

install-qa-check.d: Simply DISTUTILS_USE_SETUPTOOLS logic

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 .../install-qa-check.d/60distutils-use-setuptools  | 49 +++++++++++-----------
 1 file changed, 24 insertions(+), 25 deletions(-)

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
index 551cb0f0b6c..0a1688a83c5 100644
--- a/metadata/install-qa-check.d/60distutils-use-setuptools
+++ b/metadata/install-qa-check.d/60distutils-use-setuptools
@@ -5,8 +5,6 @@
 # Maintainer: Python project <python@gentoo.org>
 
 get_expected_distutils_use_setuptools() {
-	[[ ${integrity_error_new} ]] && return 1
-
 	local sitedir=${D}$(python_get_sitedir)
 	local egg new_expected
 	while read -d $'\0' -r egg; do
@@ -25,18 +23,8 @@ get_expected_distutils_use_setuptools() {
 			new_expected=bdepend
 		fi
 
-		if [[ ${expected} && ${new_expected} != ${expected} ]]; then
-			if [[ ${expected}${new_expected} == [br]depend[br]depend ]]
-			then
-				# packages can have scripts that are installed
-				# conditionally to implementation
-				expected=rdepend
-			else
-				integrity_error_new=${new_expected}
-				return 1
-			fi
-		else
-			expected=${new_expected}
+		if ! has "${new_expected}" "${expected[@]}"; then
+			expected+=( "${new_expected[@]}" )
 		fi
 	done < <(find "${sitedir}" -name '*.egg-info' -print0)
 }
@@ -49,21 +37,32 @@ distutils_use_setuptools_check() {
 	# pyproject.toml is verified by using it
 	[[ ${DISTUTILS_USE_SETUPTOOLS} == pyproject.toml ]] && return
 
-	local expected integrity_error_new
+	local expected=()
 	_distutils-r1_run_foreach_impl get_expected_distutils_use_setuptools
 
-	if [[ ${integrity_error_new} ]]; then
-		eerror "DISTUTILS_USE_SETUPTOOLS integrity error!"
-		eerror "expected was:    ${expected}"
-		eerror "new_expected is: ${integrity_error_new}"
+	# 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
+		# '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@"
-	elif [[ ${DISTUTILS_USE_SETUPTOOLS} != ${expected} ]]; then
-			local def=
-			[[ ${DISTUTILS_USE_SETUPTOOLS} == bdepend ]] && def=' (or unset)'
+	else
+		# bdepend+rdepend=rdepend
+		has rdepend "${expected[@]}" && expected=( rdepend )
+		# at this point, expected should have exactly one value
+		[[ ${#expected[@]} -eq 1 ]] || die "integrity error"
 
-			eqawarn "DISTUTILS_USE_SETUPTOOLS value is probably incorrect"
-			eqawarn "  have:     DISTUTILS_USE_SETUPTOOLS=${DISTUTILS_USE_SETUPTOOLS}${def}"
-			eqawarn "  expected: DISTUTILS_USE_SETUPTOOLS=${expected}"
+		if [[ ${DISTUTILS_USE_SETUPTOOLS} != ${expected} ]]; then
+				local def=
+				[[ ${DISTUTILS_USE_SETUPTOOLS} == bdepend ]] && def=' (or unset)'
+
+				eqawarn "DISTUTILS_USE_SETUPTOOLS value is probably incorrect"
+				eqawarn "  have:     DISTUTILS_USE_SETUPTOOLS=${DISTUTILS_USE_SETUPTOOLS}${def}"
+				eqawarn "  expected: DISTUTILS_USE_SETUPTOOLS=${expected}"
+		fi
 	fi
 }
 


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2020-09-22 11:12 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2020-09-22 11:12 UTC (permalink / raw
  To: gentoo-commits

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


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2020-10-16  7:42 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2020-10-16  7:42 UTC (permalink / raw
  To: gentoo-commits

commit:     ecf9d27564f4c197d1950d6cfe6b06071b0aad72
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Oct 16 07:26:14 2020 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Oct 16 07:42:00 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ecf9d275

install-qa-check.d/60distutils...: Squash more false positives

Thanks to Arfrever for help with the pipeline.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60distutils-use-setuptools | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
index 698d832800f..097c7dc8e5a 100644
--- a/metadata/install-qa-check.d/60distutils-use-setuptools
+++ b/metadata/install-qa-check.d/60distutils-use-setuptools
@@ -29,10 +29,10 @@ distutils_use_setuptools_check() {
 				then
 					# entry_points == we need rdepend
 					new_expected=rdepend
-				elif grep -q -E -s '^setuptools' \
-						"${egg}"/requires.txt
+				elif grep -q -s '^setuptools' \
+						<(sed -e '/^\[/,$d' "${egg}"/requires.txt)
 				then
-					# explicit rdepend in package metadata
+					# explicit *unconditional* rdepend in package metadata
 					new_expected=rdepend
 				else
 					new_expected=bdepend


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2020-10-17 19:01 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2020-10-17 19:01 UTC (permalink / raw
  To: gentoo-commits

commit:     9299e432898fbac084312c7766b660955b1041b7
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Oct 17 14:21:09 2020 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Oct 17 19:01:22 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9299e432

install-qa-check.d/60distutils...: silence requires.txt error

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60distutils-use-setuptools | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
index 097c7dc8e5a..3b9523fcdab 100644
--- a/metadata/install-qa-check.d/60distutils-use-setuptools
+++ b/metadata/install-qa-check.d/60distutils-use-setuptools
@@ -29,7 +29,8 @@ distutils_use_setuptools_check() {
 				then
 					# entry_points == we need rdepend
 					new_expected=rdepend
-				elif grep -q -s '^setuptools' \
+				elif [[ -f ${egg}/requires.txt ]] &&
+						grep -q -s '^setuptools' \
 						<(sed -e '/^\[/,$d' "${egg}"/requires.txt)
 				then
 					# explicit *unconditional* rdepend in package metadata


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-04-09 23:17 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2021-04-09 23:17 UTC (permalink / raw
  To: gentoo-commits

commit:     1137a7ecce67c48fc9a69ab320c6156c40366122
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Apr  9 23:16:26 2021 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Apr  9 23:16:26 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1137a7ec

metadata/install-qa-check.d: disable non-applicable QA checks for EAPI 5

Fixes: bdcfb21ca5a84567e9c9d6a456374a05e798f78e
Closes: https://bugs.gentoo.org/781878
Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60python-pyc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/metadata/install-qa-check.d/60python-pyc b/metadata/install-qa-check.d/60python-pyc
index b2af142fc49..ddc1bf531cd 100644
--- a/metadata/install-qa-check.d/60python-pyc
+++ b/metadata/install-qa-check.d/60python-pyc
@@ -1,10 +1,10 @@
-# Copyright 2019 Gentoo Authors
+# Copyright 2019-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 # QA check: ensure that Python modules are compiled after installing
 # Maintainer: Python project <python@gentoo.org>
 
-if [[ ${EAPI} == [5-7] ]]; then
+if [[ ${EAPI} == [6-7] ]]; then
 	inherit python-utils-r1
 
 	python_pyc_check() {


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-04-29 11:42 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2021-04-29 11:42 UTC (permalink / raw
  To: gentoo-commits

commit:     ece1201e42e780360e57add25949a5d4018c585d
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Apr 17 22:42:19 2021 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Apr 29 11:42:13 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ece1201e

install-qa-check.d: Make DUS check distinguish entry points

Make DISTUTILS_USE_SETUPTOOLS check explicitly distinguish rdepend due
to entry points from explicit rdepend.  This currently does not change
the result but it will change in the future.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60distutils-use-setuptools | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
index 3b9523fcdab..8970a6ab998 100644
--- a/metadata/install-qa-check.d/60distutils-use-setuptools
+++ b/metadata/install-qa-check.d/60distutils-use-setuptools
@@ -1,4 +1,4 @@
-# Copyright 2020 Gentoo Authors
+# Copyright 2020-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 # QA check: verify correctness of DISTUTILS_USE_SETUPTOOLS
@@ -24,17 +24,16 @@ distutils_use_setuptools_check() {
 				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 [[ -f ${egg}/requires.txt ]] &&
 						grep -q -s '^setuptools' \
 						<(sed -e '/^\[/,$d' "${egg}"/requires.txt)
 				then
 					# explicit *unconditional* rdepend in package metadata
 					new_expected=rdepend
+				elif grep -q -s -F '[console_scripts]' \
+						"${egg}"/entry_points.txt
+				then
+					new_expected=entry-point
 				else
 					new_expected=bdepend
 				fi
@@ -46,7 +45,6 @@ distutils_use_setuptools_check() {
 		fi
 	done
 
-	# at this point, expected can contain: no bdepend rdepend
 	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."
@@ -54,8 +52,10 @@ distutils_use_setuptools_check() {
 		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@"
 	elif [[ ${#expected[@]} -gt 0 ]]; then
-		# bdepend+rdepend=rdepend
+		# *+rdepend=rdepend
 		has rdepend "${expected[@]}" && expected=( rdepend )
+		# for the time being, entry points imply rdepend
+		has entry-point "${expected[@]}" && expected=( rdepend )
 		# at this point, expected should have exactly one value
 		[[ ${#expected[@]} -eq 1 ]] || die "integrity error"
 


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-04-29 11:42 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2021-04-29 11:42 UTC (permalink / raw
  To: gentoo-commits

commit:     b9810954053e699b3b743bf059a1b91b4776763c
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Apr 17 22:45:15 2021 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Apr 29 11:42:14 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b9810954

install-qa-check.d: Extend DUS check to handle no egg-info

If the package does not install any .egg-info files, i.e. distutils
is probably not used at all, we do not the eclass to create a setuptools
dependency.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60distutils-use-setuptools | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
index 8970a6ab998..61209302ef3 100644
--- a/metadata/install-qa-check.d/60distutils-use-setuptools
+++ b/metadata/install-qa-check.d/60distutils-use-setuptools
@@ -51,7 +51,10 @@ distutils_use_setuptools_check() {
 		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@"
-	elif [[ ${#expected[@]} -gt 0 ]]; then
+	else
+		# if we did not find anything, also assume 'no' is desired,
+		# we do not want the setuptools dep
+		[[ ${#expected[@]} -eq 0 ]] && expected=( no )
 		# *+rdepend=rdepend
 		has rdepend "${expected[@]}" && expected=( rdepend )
 		# for the time being, entry points imply rdepend


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-04-29 11:42 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2021-04-29 11:42 UTC (permalink / raw
  To: gentoo-commits

commit:     166c9795548f98e284aa25cad198657138543daa
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Apr 17 22:50:11 2021 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Apr 29 11:42:15 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=166c9795

install-qa-check.d: Future-proof entry point values for DUS

Accept both 'rdepend' and 'bdepend' as DISTUTILS_USE_SETUPTOOLS values
for packages installing entry points.  Starting with Python 3.8, these
packages do not require any runtime dependency.  However, we do not want
to proactively bother people with updating everything and instead
provide the option to start performing opt-in updates.

Note that technically PyPy3 (that implements Python 3.7 at the moment)
continues requiring additional dependencies for entry point support.
However, we do not support PyPy3 target in stable and generally do not
consider it important enough to maintain extra complexity for.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 .../install-qa-check.d/60distutils-use-setuptools    | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
index 61209302ef3..69164608fca 100644
--- a/metadata/install-qa-check.d/60distutils-use-setuptools
+++ b/metadata/install-qa-check.d/60distutils-use-setuptools
@@ -57,18 +57,26 @@ distutils_use_setuptools_check() {
 		[[ ${#expected[@]} -eq 0 ]] && expected=( no )
 		# *+rdepend=rdepend
 		has rdepend "${expected[@]}" && expected=( rdepend )
-		# for the time being, entry points imply rdepend
-		has entry-point "${expected[@]}" && expected=( rdepend )
-		# at this point, expected should have exactly one value
-		[[ ${#expected[@]} -eq 1 ]] || die "integrity error"
 
-		if [[ ${DISTUTILS_USE_SETUPTOOLS} != ${expected} ]]; then
+		if has entry-point "${expected[@]}"; then
+			if [[ ${DISTUTILS_STRICT_ENTRY_POINTS} ]]; then
+				# option for devs to future-proof their packages
+				# please don't let ago enable it
+				expected=( bdepend )
+			else
+				# accept either rdepend or bdepend for the time being
+				# but suggest bdepend as the future-proof option
+				expected=( bdepend rdepend )
+			fi
+		fi
+
+		if ! has ${DISTUTILS_USE_SETUPTOOLS} "${expected[@]}"; then
 				local def=
 				[[ ${DISTUTILS_USE_SETUPTOOLS} == bdepend ]] && def=' (or unset)'
 
 				eqawarn "DISTUTILS_USE_SETUPTOOLS value is probably incorrect"
 				eqawarn "  have:     DISTUTILS_USE_SETUPTOOLS=${DISTUTILS_USE_SETUPTOOLS}${def}"
-				eqawarn "  expected: DISTUTILS_USE_SETUPTOOLS=${expected}"
+				eqawarn "  expected: DISTUTILS_USE_SETUPTOOLS=${expected[0]}"
 		fi
 	fi
 }


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-04-29 11:42 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2021-04-29 11:42 UTC (permalink / raw
  To: gentoo-commits

commit:     4ec0db9402d0c35d2f5401caf422fd41e69b65b4
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Apr 18 11:51:22 2021 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Apr 29 11:42:16 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4ec0db94

install-qa-check.d: Make DUS aware of gui_scripts

Make DISTUTILS_USE_SETUPTOOLS check aware of gui_scripts in addition
to console_scripts.  Thanks to Arfrever for reporting.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60distutils-use-setuptools | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
index 69164608fca..d5b9f87a21a 100644
--- a/metadata/install-qa-check.d/60distutils-use-setuptools
+++ b/metadata/install-qa-check.d/60distutils-use-setuptools
@@ -30,7 +30,7 @@ distutils_use_setuptools_check() {
 				then
 					# explicit *unconditional* rdepend in package metadata
 					new_expected=rdepend
-				elif grep -q -s -F '[console_scripts]' \
+				elif grep -q -s '\[\(console\|gui\)_scripts\]' \
 						"${egg}"/entry_points.txt
 				then
 					new_expected=entry-point


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-05-25  5:13 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2021-05-25  5:13 UTC (permalink / raw
  To: gentoo-commits

commit:     04b906571525255384ef1538147fa9d1ff5996b9
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue May 25 04:44:06 2021 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue May 25 04:57:07 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=04b90657

install-qa-check.d: expect unset DUS for bdepend

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60distutils-use-setuptools | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
index d5b9f87a21a..effa65358aa 100644
--- a/metadata/install-qa-check.d/60distutils-use-setuptools
+++ b/metadata/install-qa-check.d/60distutils-use-setuptools
@@ -76,7 +76,11 @@ distutils_use_setuptools_check() {
 
 				eqawarn "DISTUTILS_USE_SETUPTOOLS value is probably incorrect"
 				eqawarn "  have:     DISTUTILS_USE_SETUPTOOLS=${DISTUTILS_USE_SETUPTOOLS}${def}"
-				eqawarn "  expected: DISTUTILS_USE_SETUPTOOLS=${expected[0]}"
+				if [[ ${expected[0]} == bdepend ]]; then
+					eqawarn "  expected: (unset)"
+				else
+					eqawarn "  expected: DISTUTILS_USE_SETUPTOOLS=${expected[0]}"
+				fi
 		fi
 	fi
 }


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-05-29 15:15 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2021-05-29 15:15 UTC (permalink / raw
  To: gentoo-commits

commit:     4bfa549af9709682d530782d068d72c43a709e62
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat May 29 11:45:45 2021 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat May 29 15:15:43 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4bfa549a

install-qa-check.d: Check for missing tests in distutils-r1 ebuilds

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60python-tests | 32 ++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/metadata/install-qa-check.d/60python-tests b/metadata/install-qa-check.d/60python-tests
new file mode 100644
index 00000000000..713ed63d376
--- /dev/null
+++ b/metadata/install-qa-check.d/60python-tests
@@ -0,0 +1,32 @@
+# Copyright 2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# QA check: ensure that tests are run if present
+# Maintainer: Python project <python@gentoo.org>
+
+python_test_check() {
+	# only distutils-r1 is covered for the time being
+	has distutils-r1 ${INHERITED} || return
+	# skip packages that define tests
+	declare -p -f python_test &>/dev/null && return
+	# skip packages that explicitly restrict tests
+	has test ${RESTRICT} && return
+
+	# do we have any files looking like tests?
+	local any=$(find "${WORKDIR}" -name 'test_*.py' -print -quit)
+	[[ -n ${any} ]] || return
+
+	eqawarn
+	eqawarn 'QA Notice: this package seems to contain tests but they are not enabled.'
+	eqawarn 'Please either run tests (via distutils_enable_tests or declaring'
+	eqawarn 'python_test yourself), or add RESTRICT="test" along with an explanatory'
+	eqawarn 'comment if tests cannot be run.'
+	eqawarn
+	eqatag -v python-tests.missing
+}
+
+python_test_check
+
+: # guarantee successful exit
+
+# vim:ft=ebuild


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-06-26 23:09 Georgy Yakovlev
  0 siblings, 0 replies; 76+ messages in thread
From: Georgy Yakovlev @ 2021-06-26 23:09 UTC (permalink / raw
  To: gentoo-commits

commit:     4cc70444a0077f9b807593ab322d05a6b3737666
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 25 05:24:12 2021 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Sat Jun 26 23:08:22 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4cc70444

metadata/install-qa-check.d: add virtual/libcrypt dep check

Bug: https://bugs.gentoo.org/699422
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 metadata/install-qa-check.d/60libcrypt-deps | 38 +++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/metadata/install-qa-check.d/60libcrypt-deps b/metadata/install-qa-check.d/60libcrypt-deps
new file mode 100644
index 00000000000..a822ed8c467
--- /dev/null
+++ b/metadata/install-qa-check.d/60libcrypt-deps
@@ -0,0 +1,38 @@
+# Copyright 2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# QA check: ensure that package specifies a dependency on virtual/libcrypt
+# Author: Georgy Yakovlev <gyakovlev@gentoo.org>
+# Maintainer Sam James <sam@gentoo.org>
+
+libcrypt_check() {
+	if ! type -P scanelf >/dev/null || has binchecks ${PORTAGE_RESTRICT}; then
+		return
+	fi	
+
+	if grep -q virtual/libcrypt <<<${RDEPEND}; then
+		# nothing to do here
+		return
+	fi
+
+	local libcrypt_consumers
+	# grep outputs newline separated list of files, so it's ok to skip specifying delimiter
+	IFS= mapfile libcrypt_consumers < <(find "${ED}" -type f -executable \
+		-print0 | xargs -0 scanelf -qyRF '%F %n' | grep 'libcrypt.so' 2>/dev/null )
+	
+	if [[ -n ${libcrypt_consumers[@]} ]]; then
+		eqawarn "Binary files linked to libcrypt.so found"
+		eqawarn "But dependency on virtual/libcrypt is not declared"
+		eqawarn
+		eqatag -v virtual-libcrypt.missing "${libcrypt_consumers[@]%% *}"
+		eqawarn
+		eqawarn "Please add virtual/libcrypt dependency"
+		eqawarn "Gentoo Bug: https://bugs.gentoo.org/699422"
+	fi
+	
+}
+
+libcrypt_check
+: # guarantee successful exit
+
+# vim:ft=sh


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-06-26 23:25 Georgy Yakovlev
  0 siblings, 0 replies; 76+ messages in thread
From: Georgy Yakovlev @ 2021-06-26 23:25 UTC (permalink / raw
  To: gentoo-commits

commit:     5bef2da6c6ceef1c7947571a7cea1bf79d94e9f2
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 26 23:23:55 2021 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Sat Jun 26 23:23:55 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5bef2da6

metadata/install-qa-check.d: fix some issues with 60libcrypt-deps

Thanks-to: [Arfrever]
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 metadata/install-qa-check.d/60libcrypt-deps | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/metadata/install-qa-check.d/60libcrypt-deps b/metadata/install-qa-check.d/60libcrypt-deps
index a822ed8c467..52220ba9734 100644
--- a/metadata/install-qa-check.d/60libcrypt-deps
+++ b/metadata/install-qa-check.d/60libcrypt-deps
@@ -8,9 +8,16 @@
 libcrypt_check() {
 	if ! type -P scanelf >/dev/null || has binchecks ${PORTAGE_RESTRICT}; then
 		return
-	fi	
+	fi
+
+	# skip libcrypt.so providers
+	case "${CATEGORY}/${PN}" in
+		sys-libs/libxcrypt|sys-libs/glibc|sys-libs/musl|sys-libs/uclibc-ng)
+			return
+			;;
+	esac
 
-	if grep -q virtual/libcrypt <<<${RDEPEND}; then
+	if grep -q "virtual/libcrypt" <<<${RDEPEND}; then
 		# nothing to do here
 		return
 	fi
@@ -18,7 +25,7 @@ libcrypt_check() {
 	local libcrypt_consumers
 	# grep outputs newline separated list of files, so it's ok to skip specifying delimiter
 	IFS= mapfile libcrypt_consumers < <(find "${ED}" -type f -executable \
-		-print0 | xargs -0 scanelf -qyRF '%F %n' | grep 'libcrypt.so' 2>/dev/null )
+		-print0 | xargs -0 scanelf -qyRF '%F %n' | grep 'libcrypt\.so' 2>/dev/null )
 	
 	if [[ -n ${libcrypt_consumers[@]} ]]; then
 		eqawarn "Binary files linked to libcrypt.so found"
@@ -26,7 +33,7 @@ libcrypt_check() {
 		eqawarn
 		eqatag -v virtual-libcrypt.missing "${libcrypt_consumers[@]%% *}"
 		eqawarn
-		eqawarn "Please add virtual/libcrypt dependency"
+		eqawarn "Please add virtual/libcrypt:= dependency"
 		eqawarn "Gentoo Bug: https://bugs.gentoo.org/699422"
 	fi
 	


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-06-27  2:08 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2021-06-27  2:08 UTC (permalink / raw
  To: gentoo-commits

commit:     dd5a5a413176a62a4badb424c0f9dd8039624bd2
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sun Jun 27 02:07:08 2021 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Jun 27 02:07:08 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dd5a5a41

metadata/install-qa-check.d: link wiki (developer guidance) in 60libcrypt-deps

Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60libcrypt-deps | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/metadata/install-qa-check.d/60libcrypt-deps b/metadata/install-qa-check.d/60libcrypt-deps
index 52220ba9734..53e2e0b9d6f 100644
--- a/metadata/install-qa-check.d/60libcrypt-deps
+++ b/metadata/install-qa-check.d/60libcrypt-deps
@@ -29,12 +29,13 @@ libcrypt_check() {
 	
 	if [[ -n ${libcrypt_consumers[@]} ]]; then
 		eqawarn "Binary files linked to libcrypt.so found"
-		eqawarn "But dependency on virtual/libcrypt is not declared"
+		eqawarn "But a dependency on virtual/libcrypt is not declared!"
 		eqawarn
 		eqatag -v virtual-libcrypt.missing "${libcrypt_consumers[@]%% *}"
 		eqawarn
 		eqawarn "Please add virtual/libcrypt:= dependency"
-		eqawarn "Gentoo Bug: https://bugs.gentoo.org/699422"
+		eqawarn "Gentoo bug: https://bugs.gentoo.org/699422"
+		eqawarn "See: https://wiki.gentoo.org/wiki/Project:Toolchain/libcrypt_implementation"
 	fi
 	
 }


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-06-28  0:12 Georgy Yakovlev
  0 siblings, 0 replies; 76+ messages in thread
From: Georgy Yakovlev @ 2021-06-28  0:12 UTC (permalink / raw
  To: gentoo-commits

commit:     43a4f3458b8520646239e3189dbf6695240af00f
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Mon Jun 28 00:12:05 2021 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Mon Jun 28 00:12:05 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=43a4f345

metadata/install-qa-check.d: add libcrypt tracker bug

Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 metadata/install-qa-check.d/60libcrypt-deps | 1 +
 1 file changed, 1 insertion(+)

diff --git a/metadata/install-qa-check.d/60libcrypt-deps b/metadata/install-qa-check.d/60libcrypt-deps
index 53e2e0b9d6f..3ea1b5372ce 100644
--- a/metadata/install-qa-check.d/60libcrypt-deps
+++ b/metadata/install-qa-check.d/60libcrypt-deps
@@ -35,6 +35,7 @@ libcrypt_check() {
 		eqawarn
 		eqawarn "Please add virtual/libcrypt:= dependency"
 		eqawarn "Gentoo bug: https://bugs.gentoo.org/699422"
+		eqawarn "Tracker bug: https://bugs.gentoo.org/798963"
 		eqawarn "See: https://wiki.gentoo.org/wiki/Project:Toolchain/libcrypt_implementation"
 	fi
 	


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-06-28  8:56 Georgy Yakovlev
  0 siblings, 0 replies; 76+ messages in thread
From: Georgy Yakovlev @ 2021-06-28  8:56 UTC (permalink / raw
  To: gentoo-commits

commit:     240bcc0be5412ff36dc338af3c34717b96a9a4e4
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Mon Jun 28 08:53:03 2021 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Mon Jun 28 08:56:02 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=240bcc0b

metadata/install-qa-check.d: add "QA Notice:" string to some checks

Bug: https://bugs.gentoo.org/728046
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 metadata/install-qa-check.d/60appdata-path  | 5 ++---
 metadata/install-qa-check.d/60libcrypt-deps | 2 +-
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/metadata/install-qa-check.d/60appdata-path b/metadata/install-qa-check.d/60appdata-path
index 578137a3e9e..a2403083a49 100644
--- a/metadata/install-qa-check.d/60appdata-path
+++ b/metadata/install-qa-check.d/60appdata-path
@@ -1,4 +1,4 @@
-# Copyright 2020 Gentoo Authors
+# Copyright 2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 # QA check: ensure that metadata files are installed in /usr/share/metainfo
@@ -13,8 +13,7 @@ appdata_path_check() {
 	done < <(find "${ED%/}/usr/share/appdata" -name '*.xml' -print0 || die)
 
 	if [[ ${found[@]} ]]; then
-		eqawarn
-		eqawarn "This package seems to install metainfo files into the following"
+		eqawarn "QA Notice: This package seems to install metainfo files into the following"
 		eqawarn "location(s):"
 		eqawarn
 		eqatag -v appdata.invalid-path "${found[@]#${D%/}}"

diff --git a/metadata/install-qa-check.d/60libcrypt-deps b/metadata/install-qa-check.d/60libcrypt-deps
index 3ea1b5372ce..26120f7cb8e 100644
--- a/metadata/install-qa-check.d/60libcrypt-deps
+++ b/metadata/install-qa-check.d/60libcrypt-deps
@@ -28,7 +28,7 @@ libcrypt_check() {
 		-print0 | xargs -0 scanelf -qyRF '%F %n' | grep 'libcrypt\.so' 2>/dev/null )
 	
 	if [[ -n ${libcrypt_consumers[@]} ]]; then
-		eqawarn "Binary files linked to libcrypt.so found"
+		eqawarn "QA Notice: Binary files linked to libcrypt.so found"
 		eqawarn "But a dependency on virtual/libcrypt is not declared!"
 		eqawarn
 		eqatag -v virtual-libcrypt.missing "${libcrypt_consumers[@]%% *}"


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-06-28 18:47 Georgy Yakovlev
  0 siblings, 0 replies; 76+ messages in thread
From: Georgy Yakovlev @ 2021-06-28 18:47 UTC (permalink / raw
  To: gentoo-commits

commit:     28ada16af437c0f2955f222abd03730ae2e299d6
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Mon Jun 28 18:12:02 2021 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Mon Jun 28 18:46:57 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=28ada16a

metadata/install-qa-check.d: add QA Notice string to all checks

and re-wrap some lines to fit into 80 char limit

Bug: https://bugs.gentoo.org/728046
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 metadata/install-qa-check.d/08gentoo-paths             | 2 +-
 metadata/install-qa-check.d/60appdata-path             | 4 ++--
 metadata/install-qa-check.d/60distutils-use-setuptools | 6 ++++--
 metadata/install-qa-check.d/60gtk-doc-paths            | 6 +++---
 metadata/install-qa-check.d/60python-pyc               | 7 ++++---
 metadata/install-qa-check.d/60python-tests             | 2 +-
 6 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/metadata/install-qa-check.d/08gentoo-paths b/metadata/install-qa-check.d/08gentoo-paths
index 5161aef9922..4d84925d853 100644
--- a/metadata/install-qa-check.d/08gentoo-paths
+++ b/metadata/install-qa-check.d/08gentoo-paths
@@ -66,7 +66,7 @@ gentoo_path_check() {
 	# report
 	# ------
 	if [[ -n ${bad_paths[@]} ]]; then
-		eqawarn "The ebuild is installing to one or more unexpected paths:"
+		eqawarn "QA Notice: The ebuild is installing to one or more unexpected paths:"
 		eqawarn
 		eqatag -v non-gentoo-paths "${bad_paths[@]}"
 		eqawarn

diff --git a/metadata/install-qa-check.d/60appdata-path b/metadata/install-qa-check.d/60appdata-path
index a2403083a49..06c5f91e8ce 100644
--- a/metadata/install-qa-check.d/60appdata-path
+++ b/metadata/install-qa-check.d/60appdata-path
@@ -13,8 +13,8 @@ appdata_path_check() {
 	done < <(find "${ED%/}/usr/share/appdata" -name '*.xml' -print0 || die)
 
 	if [[ ${found[@]} ]]; then
-		eqawarn "QA Notice: This package seems to install metainfo files into the following"
-		eqawarn "location(s):"
+		eqawarn "QA Notice: This package seems to install metainfo files into the"
+		eqawarn "following location(s):"
 		eqawarn
 		eqatag -v appdata.invalid-path "${found[@]#${D%/}}"
 		eqawarn

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
index effa65358aa..d08be885eb8 100644
--- a/metadata/install-qa-check.d/60distutils-use-setuptools
+++ b/metadata/install-qa-check.d/60distutils-use-setuptools
@@ -47,7 +47,9 @@ distutils_use_setuptools_check() {
 
 	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 "QA Notice: The package seems to have used distutils and setuptools"
+		eerror "simultaneously"
+		eerror ""
 		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@"
@@ -74,7 +76,7 @@ distutils_use_setuptools_check() {
 				local def=
 				[[ ${DISTUTILS_USE_SETUPTOOLS} == bdepend ]] && def=' (or unset)'
 
-				eqawarn "DISTUTILS_USE_SETUPTOOLS value is probably incorrect"
+				eqawarn "QA Notice: DISTUTILS_USE_SETUPTOOLS value is probably incorrect"
 				eqawarn "  have:     DISTUTILS_USE_SETUPTOOLS=${DISTUTILS_USE_SETUPTOOLS}${def}"
 				if [[ ${expected[0]} == bdepend ]]; then
 					eqawarn "  expected: (unset)"

diff --git a/metadata/install-qa-check.d/60gtk-doc-paths b/metadata/install-qa-check.d/60gtk-doc-paths
index 866e871c221..8c12c260433 100644
--- a/metadata/install-qa-check.d/60gtk-doc-paths
+++ b/metadata/install-qa-check.d/60gtk-doc-paths
@@ -1,4 +1,4 @@
-# Copyright 1999-2015 Gentoo Foundation
+# Copyright 1999-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 # QA check: ensure that gtk-doc files are installed in /usr/share/gtk-doc
@@ -14,8 +14,8 @@ gtk_doc_path_check() {
 
 	if [[ ${found[@]} ]]; then
 		eqawarn
-		eqawarn "This package seems to install gtk-doc documentation into the following"
-		eqawarn "location(s):"
+		eqawarn "QA Notice: This package seems to install gtk-doc documentation into the"
+		eqawarn "following location(s):"
 		eqawarn
 		eqatag -v gtk-doc-paths.invalid-path "${found[@]#${D%/}}"
 		eqawarn

diff --git a/metadata/install-qa-check.d/60python-pyc b/metadata/install-qa-check.d/60python-pyc
index ddc1bf531cd..e112cdce348 100644
--- a/metadata/install-qa-check.d/60python-pyc
+++ b/metadata/install-qa-check.d/60python-pyc
@@ -55,7 +55,8 @@ if [[ ${EAPI} == [6-7] ]]; then
 
 		if [[ ${missing[@]} ]]; then
 			eqawarn
-			eqawarn "This package installs one or more Python modules that are not byte-compiled."
+			eqawarn "QA Notice: This package installs one or more Python modules that are"
+			eqawarn "not byte-compiled."
 			eqawarn "The following files are missing:"
 			eqawarn
 			eqatag -v python-pyc.missing "${missing[@]#${D}}"
@@ -63,8 +64,8 @@ if [[ ${EAPI} == [6-7] ]]; then
 
 		if [[ ${outdated[@]} ]]; then
 			eqawarn
-			eqawarn "This package installs one or more compiled Python modules that have older"
-			eqawarn "timestamps than the corresponding source files:"
+			eqawarn "QA Notice: This package installs one or more compiled Python modules that have"
+			eqawarn "older timestamps than the corresponding source files:"
 			eqawarn
 			eqatag -v python-pyc.outdated "${outdated[@]#${D}}"
 		fi

diff --git a/metadata/install-qa-check.d/60python-tests b/metadata/install-qa-check.d/60python-tests
index 713ed63d376..4c7892fbc93 100644
--- a/metadata/install-qa-check.d/60python-tests
+++ b/metadata/install-qa-check.d/60python-tests
@@ -17,7 +17,7 @@ python_test_check() {
 	[[ -n ${any} ]] || return
 
 	eqawarn
-	eqawarn 'QA Notice: this package seems to contain tests but they are not enabled.'
+	eqawarn 'QA Notice: This package seems to contain tests but they are not enabled.'
 	eqawarn 'Please either run tests (via distutils_enable_tests or declaring'
 	eqawarn 'python_test yourself), or add RESTRICT="test" along with an explanatory'
 	eqawarn 'comment if tests cannot be run.'


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-07-01  8:57 Georgy Yakovlev
  0 siblings, 0 replies; 76+ messages in thread
From: Georgy Yakovlev @ 2021-07-01  8:57 UTC (permalink / raw
  To: gentoo-commits

commit:     a4c3ee50fb8417d029fbbe35e6a0446f030602be
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Thu Jul  1 08:54:51 2021 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Thu Jul  1 08:57:27 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a4c3ee50

metadata/install-qa-check.d: adjust 60libcrypt-deps

check if ebuild has a dep on sys-libs/libxcrypt and return

Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 metadata/install-qa-check.d/60libcrypt-deps | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60libcrypt-deps b/metadata/install-qa-check.d/60libcrypt-deps
index 26120f7cb8e..5c45ff772ab 100644
--- a/metadata/install-qa-check.d/60libcrypt-deps
+++ b/metadata/install-qa-check.d/60libcrypt-deps
@@ -17,7 +17,7 @@ libcrypt_check() {
 			;;
 	esac
 
-	if grep -q "virtual/libcrypt" <<<${RDEPEND}; then
+	if grep -q -E "virtual/libcrypt|sys-libs/libxcrypt" <<<${RDEPEND}; then
 		# nothing to do here
 		return
 	fi


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-07-03  8:16 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2021-07-03  8:16 UTC (permalink / raw
  To: gentoo-commits

commit:     3156d07f30384ec0669d2fdda1a46a83431781e5
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jul  3 07:39:47 2021 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jul  3 08:16:25 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3156d07f

metadata/install-qa-check.d: Skip DUS tests w/ DISTUTILS_OPTIONAL

DISTUTILS_OPTIONAL skips setting the dependency on setuptools entirely,
so skip checking for its correctness, and verbosely complain if it's
set.

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

 metadata/install-qa-check.d/60distutils-use-setuptools | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
index d08be885eb8..25300fddda9 100644
--- a/metadata/install-qa-check.d/60distutils-use-setuptools
+++ b/metadata/install-qa-check.d/60distutils-use-setuptools
@@ -12,6 +12,15 @@ distutils_use_setuptools_check() {
 	# pyproject.toml is verified by using it
 	[[ ${DISTUTILS_USE_SETUPTOOLS} == pyproject.toml ]] && return
 
+	# setuptools dep is not set if distutils is optional
+	if [[ ${DISTUTILS_OPTIONAL} ]]; then
+		if [[ ${DISTUTILS_USE_SETUPTOOLS} != bdepend ]]; then
+			eerror "QA Notice: DISTUTILS_USE_SETUPTOOLS is not used when DISTUTILS_OPTIONAL"
+			eerror "is enabled."
+		fi
+		return
+	fi
+
 	local expected=()
 	for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; do
 		local EPYTHON PYTHON


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-08-02  8:17 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2021-08-02  8:17 UTC (permalink / raw
  To: gentoo-commits

commit:     b9c4e4272bace02805880b798f8ae8637737c840
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon Aug  2 08:15:24 2021 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Aug  2 08:17:07 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b9c4e427

install-qa-check.d: Switch DUS entry point check to pure bdepend

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60distutils-use-setuptools | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
index 25300fddda9..a7905c3f0b2 100644
--- a/metadata/install-qa-check.d/60distutils-use-setuptools
+++ b/metadata/install-qa-check.d/60distutils-use-setuptools
@@ -68,18 +68,12 @@ distutils_use_setuptools_check() {
 		[[ ${#expected[@]} -eq 0 ]] && expected=( no )
 		# *+rdepend=rdepend
 		has rdepend "${expected[@]}" && expected=( rdepend )
-
-		if has entry-point "${expected[@]}"; then
-			if [[ ${DISTUTILS_STRICT_ENTRY_POINTS} ]]; then
-				# option for devs to future-proof their packages
-				# please don't let ago enable it
-				expected=( bdepend )
-			else
-				# accept either rdepend or bdepend for the time being
-				# but suggest bdepend as the future-proof option
-				expected=( bdepend rdepend )
-			fi
-		fi
+		# NB: note that expected is overwritten above, so this implies !rdepend
+		# if the package is using entry points, modern versions of setuptools
+		# use built-in importlib.metadata module, so no rdep needed anymore
+		# NB2: this is incorrect for pypy3.7 but we ignore this for the time
+		# being
+		has entry-point "${expected[@]}" && expected=( bdepend )
 
 		if ! has ${DISTUTILS_USE_SETUPTOOLS} "${expected[@]}"; then
 				local def=


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-08-16  2:12 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2021-08-16  2:12 UTC (permalink / raw
  To: gentoo-commits

commit:     28155dfc3ce5d7f5d9f19fe0239a27eaab29cccb
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 13 01:42:46 2021 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Aug 16 02:12:08 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=28155dfc

metadata/install-qa-check.d: add exemptions for some packages wrt inherit

Both sys-apps/systemd and sys-libs/pam need to install some files
to these directories without inheriting the eclass.

For future work, we should have a standardised way on opting
out of installed files QA checks, but other QA checks are
already suffering from this issue.

See: https://archives.gentoo.org/gentoo-dev/message/0a96793036a4fdd9ac311a46950d7e7b
Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60tmpfiles-paths | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/metadata/install-qa-check.d/60tmpfiles-paths b/metadata/install-qa-check.d/60tmpfiles-paths
index 5ef56885ebe..81286de584a 100644
--- a/metadata/install-qa-check.d/60tmpfiles-paths
+++ b/metadata/install-qa-check.d/60tmpfiles-paths
@@ -30,6 +30,14 @@ tmpfiles_check() {
 		return
 	fi
 
+	# It's okay for some packages to do this because of circular dependencies and such
+	# See: https://archives.gentoo.org/gentoo-dev/message/0a96793036a4fdd9ac311a46950d7e7b
+	# TODO: Standardize some way of allowing ebuilds to opt-out of checks like this
+	local package=${CATEGORY}/${PN}
+	if [[ ${package} == "sys-apps/systemd" || ${package} == "sys-libs/pam" ]] ; then
+		return
+	fi
+
 	if [[ -d "${ED}"/usr/lib/tmpfiles.d/ ]] ; then
 		eqawarn "QA Notice: package is installing tmpfiles without inheriting tmpfiles.eclass!"
 		eqawarn "Packages must inherit tmpfiles.eclass then call tmpfiles_process in pkg_postinst."


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-08-16  2:12 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2021-08-16  2:12 UTC (permalink / raw
  To: gentoo-commits

commit:     c7fe1066a8fcd35f965de4ea16c9cd1001830642
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 13 01:37:15 2021 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Aug 16 02:12:06 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c7fe1066

metadata/install-qa-check.d: add 60tmpfiles-path QA check

This adds two tmpfiles related QA checks:
1) Verify packages don't install tmpfiles to /etc/tmpfiles.d, which
is a forbidden (user-configuration) location;

2) Check whether packages inherit tmpfiles.eclass if they're
installing files to /usr/lib/tmpfiles.d.

(This helps to catch packages not calling tmpfiles_process
in pkg_postinst).

Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60tmpfiles-paths | 37 ++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/metadata/install-qa-check.d/60tmpfiles-paths b/metadata/install-qa-check.d/60tmpfiles-paths
new file mode 100644
index 00000000000..ed0bdbff8cd
--- /dev/null
+++ b/metadata/install-qa-check.d/60tmpfiles-paths
@@ -0,0 +1,37 @@
+# Copyright 2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# QA check: ensure that packages installing tmpfiles configuration inherit the eclass
+# Maintainer: Sam James <sam@gentoo.org>
+
+# Implements two checks:
+# 1) Installation to /etc/tmpfiles.d (which is a user-customization location);
+# 2) Installation of any tmpfiles to /usr/lib/tmpfiles.d without inheriting the eclass
+#    (needed for tmpfiles_process in pkg_postinst)
+tmpfiles_check() {
+	# Check 1
+	# Scan image for files in /etc/tmpfiles.d which is a forbidden location
+	if [[ -d "${ED}"/etc/tmpfiles.d/ ]] ; then
+		eqawarn "QA Notice: files installed to /etc/tmpfiles.d"
+		eqawarn "tmpfiles configuration files must be installed by ebuilds /usr/lib/tmpfiles.d!"
+	fi
+
+	# Check 2
+	# We're now going to check for whether we install files to /usr/lib/tmpfiles.d without
+	# inheriting the eclass (weak catch for ebuilds not calling tmpfiles_process in pkg_postinst)
+
+	# No need to carry on if we're inheriting the eclass
+	if has tmpfiles ${INHERITED} ; then
+		return
+	fi
+
+	if [[ -d "${ED}"/usr/lib/tmpfiles.d/ ]] ; then
+		eqawarn "QA Notice: package is installing tmpfiles without inheriting tmpfiles.eclass!"
+		eqawarn "Packages must inherit tmpfiles.eclass then call tmpfiles_process in pkg_postinst."
+	fi
+}
+
+tmpfiles_check
+: # guarantee successful exit
+
+# vim:ft=sh


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-08-16  2:12 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2021-08-16  2:12 UTC (permalink / raw
  To: gentoo-commits

commit:     27e725ed6e7991b4267e5002376f497781f8c224
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 13 01:39:02 2021 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Aug 16 02:12:07 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=27e725ed

metadata/install-qa-check.d: only trigger on tmpfiles in forbidden location

It's okay to use "keepdir" on /etc/tmpfiles.d.

See: https://archives.gentoo.org/gentoo-dev/message/50558b55dc34f37b238807fc4759640d
Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60tmpfiles-paths | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60tmpfiles-paths b/metadata/install-qa-check.d/60tmpfiles-paths
index ed0bdbff8cd..5ef56885ebe 100644
--- a/metadata/install-qa-check.d/60tmpfiles-paths
+++ b/metadata/install-qa-check.d/60tmpfiles-paths
@@ -11,7 +11,12 @@
 tmpfiles_check() {
 	# Check 1
 	# Scan image for files in /etc/tmpfiles.d which is a forbidden location
-	if [[ -d "${ED}"/etc/tmpfiles.d/ ]] ; then
+	# (We use this glob to avoid triggering on keepdir)
+	shopt -s nullglob
+	local files=( "${ED}"/etc/tmpfiles.d/*.conf )
+	shopt -u nullglob
+
+	if [[ ${#files[@]} -gt 0 ]]; then
 		eqawarn "QA Notice: files installed to /etc/tmpfiles.d"
 		eqawarn "tmpfiles configuration files must be installed by ebuilds /usr/lib/tmpfiles.d!"
 	fi


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-08-16  2:12 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2021-08-16  2:12 UTC (permalink / raw
  To: gentoo-commits

commit:     f653e0b5ff5620e852e5fbbd23d62fa3577f2a7d
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 13 01:52:38 2021 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Aug 16 02:12:09 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f653e0b5

metadata/install-qa-check.d: add check for missing tmpfiles_process call

See: https://archives.gentoo.org/gentoo-dev/message/7bdfdc9a7560fd07436defd0253af0b8
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60tmpfiles-paths | 34 ++++++++++++++++++++--------
 1 file changed, 24 insertions(+), 10 deletions(-)

diff --git a/metadata/install-qa-check.d/60tmpfiles-paths b/metadata/install-qa-check.d/60tmpfiles-paths
index 81286de584a..aa666dfb7ce 100644
--- a/metadata/install-qa-check.d/60tmpfiles-paths
+++ b/metadata/install-qa-check.d/60tmpfiles-paths
@@ -3,11 +3,14 @@
 
 # QA check: ensure that packages installing tmpfiles configuration inherit the eclass
 # Maintainer: Sam James <sam@gentoo.org>
+# Maintainer: Georgy Yakovlev <gyakovlev@gentoo.org>
 
 # Implements two checks:
 # 1) Installation to /etc/tmpfiles.d (which is a user-customization location);
 # 2) Installation of any tmpfiles to /usr/lib/tmpfiles.d without inheriting the eclass
-#    (needed for tmpfiles_process in pkg_postinst)
+#    (needed for tmpfiles_process in pkg_postinst);
+# 3) Check for installation of tmpfiles without calling tmpfiles_process in
+#    pkg_postinst.
 tmpfiles_check() {
 	# Check 1
 	# Scan image for files in /etc/tmpfiles.d which is a forbidden location
@@ -17,30 +20,41 @@ tmpfiles_check() {
 	shopt -u nullglob
 
 	if [[ ${#files[@]} -gt 0 ]]; then
-		eqawarn "QA Notice: files installed to /etc/tmpfiles.d"
-		eqawarn "tmpfiles configuration files must be installed by ebuilds /usr/lib/tmpfiles.d!"
+		eqawarn "QA Notice: files installed to /etc/tmpfiles.d found"
+		eqawarn "tmpfiles configuration files supplied by ebuilds must be installed to /usr/lib/tmpfiles.d"
 	fi
 
 	# Check 2
 	# We're now going to check for whether we install files to /usr/lib/tmpfiles.d without
 	# inheriting the eclass (weak catch for ebuilds not calling tmpfiles_process in pkg_postinst)
 
-	# No need to carry on if we're inheriting the eclass
-	if has tmpfiles ${INHERITED} ; then
-		return
-	fi
-
 	# It's okay for some packages to do this because of circular dependencies and such
 	# See: https://archives.gentoo.org/gentoo-dev/message/0a96793036a4fdd9ac311a46950d7e7b
 	# TODO: Standardize some way of allowing ebuilds to opt-out of checks like this
 	local package=${CATEGORY}/${PN}
+
 	if [[ ${package} == "sys-apps/systemd" || ${package} == "sys-libs/pam" ]] ; then
 		return
 	fi
 
 	if [[ -d "${ED}"/usr/lib/tmpfiles.d/ ]] ; then
-		eqawarn "QA Notice: package is installing tmpfiles without inheriting tmpfiles.eclass!"
-		eqawarn "Packages must inherit tmpfiles.eclass then call tmpfiles_process in pkg_postinst."
+		if ! has tmpfiles ${INHERITED} ; then
+			eqawarn "QA Notice: package is installing tmpfiles without inheriting tmpfiles.eclass!"
+			eqawarn "Packages must inherit tmpfiles.eclass then call tmpfiles_process in pkg_postinst."
+			return
+		fi
+
+		# Check 3
+		# Check whether we're installing tmpfiles without explicitly
+		# calling tmpfiles_process in pkg_postinst, but we have inherited
+		# the eclass.
+		# Small risk of false positives if called indirectly.
+		# See: https://archives.gentoo.org/gentoo-dev/message/7bdfdc9a7560fd07436defd0253af0b8
+		local pkg_postinst_body="$(declare -fp pkg_postinst 2>&1)"
+		if [[ ! ${pkg_postinst_body} == *tmpfiles_process* ]] ; then
+			eqawarn "QA Notice: package is installing tmpfiles without calling"
+			eqawarn "tmpfiles_process in pkg_postinst phase"
+		fi
 	fi
 }
 


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2021-08-19  1:35 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2021-08-19  1:35 UTC (permalink / raw
  To: gentoo-commits

commit:     c6fc517e4bc5649e01af9d10a445338805a0cdfc
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Aug 19 01:34:11 2021 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Aug 19 01:34:55 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c6fc517e

metadata/install-qa-check.d: skip some checks when TMPFILES_OPTIONAL is set

This is a good enough proxy for "this package has a complicated
relationship with tmpfiles" and replaces the hardcoded list of
exemptions.

Closes: https://bugs.gentoo.org/808781
Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60tmpfiles-paths | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/metadata/install-qa-check.d/60tmpfiles-paths b/metadata/install-qa-check.d/60tmpfiles-paths
index aa666dfb7ce..1d46cab6ecc 100644
--- a/metadata/install-qa-check.d/60tmpfiles-paths
+++ b/metadata/install-qa-check.d/60tmpfiles-paths
@@ -28,12 +28,12 @@ tmpfiles_check() {
 	# We're now going to check for whether we install files to /usr/lib/tmpfiles.d without
 	# inheriting the eclass (weak catch for ebuilds not calling tmpfiles_process in pkg_postinst)
 
-	# It's okay for some packages to do this because of circular dependencies and such
-	# See: https://archives.gentoo.org/gentoo-dev/message/0a96793036a4fdd9ac311a46950d7e7b
-	# TODO: Standardize some way of allowing ebuilds to opt-out of checks like this
-	local package=${CATEGORY}/${PN}
-
-	if [[ ${package} == "sys-apps/systemd" || ${package} == "sys-libs/pam" ]] ; then
+	if [[ -n ${TMPFILES_OPTIONAL} ]] ; then
+		# While imperfect, using ${TMPFILES_OPTIONAL} is good enough to allow opting out
+		# for e.g. sys-apps/portage, sys-apps/systemd, sys-libs/pam, etc. We may want
+		# a better/more standardised way to opt out from QA checks in future.
+		# It's okay for some packages to do this because of circular dependencies and such
+		# See: https://archives.gentoo.org/gentoo-dev/message/0a96793036a4fdd9ac311a46950d7e7b
 		return
 	fi
 


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-01-16  9:40 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2022-01-16  9:40 UTC (permalink / raw
  To: gentoo-commits

commit:     f344326fa3c3653d85acf12bf053bfd98f354c56
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Jan 16 09:39:03 2022 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Jan 16 09:40:49 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f344326f

install-qa-check.d: Remove 60distutils-use-setuptools

Remove the DISTUTILS_USE_SETUPTOOLS correctness check that is misfiring
once again (with setuptools-60+).  All the special cases it was supposed
to detect are no longer relevant, and the upcoming PEP 517 mode
deprecates DUS entirely.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 .../install-qa-check.d/60distutils-use-setuptools  | 97 ----------------------
 1 file changed, 97 deletions(-)

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
deleted file mode 100644
index a7905c3f0b2f..000000000000
--- a/metadata/install-qa-check.d/60distutils-use-setuptools
+++ /dev/null
@@ -1,97 +0,0 @@
-# Copyright 2020-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# QA check: verify correctness of DISTUTILS_USE_SETUPTOOLS
-# Maintainer: Python project <python@gentoo.org>
-
-distutils_use_setuptools_check() {
-	# applicable only to ebuilds inheriting distutils-r1
-	[[ ${_DISTUTILS_R1} ]] || return
-	# 'manual' means no checking
-	[[ ${DISTUTILS_USE_SETUPTOOLS} == manual ]] && return
-	# pyproject.toml is verified by using it
-	[[ ${DISTUTILS_USE_SETUPTOOLS} == pyproject.toml ]] && return
-
-	# setuptools dep is not set if distutils is optional
-	if [[ ${DISTUTILS_OPTIONAL} ]]; then
-		if [[ ${DISTUTILS_USE_SETUPTOOLS} != bdepend ]]; then
-			eerror "QA Notice: DISTUTILS_USE_SETUPTOOLS is not used when DISTUTILS_OPTIONAL"
-			eerror "is enabled."
-		fi
-		return
-	fi
-
-	local expected=()
-	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 [[ -f ${egg}/requires.txt ]] &&
-						grep -q -s '^setuptools' \
-						<(sed -e '/^\[/,$d' "${egg}"/requires.txt)
-				then
-					# explicit *unconditional* rdepend in package metadata
-					new_expected=rdepend
-				elif grep -q -s '\[\(console\|gui\)_scripts\]' \
-						"${egg}"/entry_points.txt
-				then
-					new_expected=entry-point
-				else
-					new_expected=bdepend
-				fi
-
-				if ! has "${new_expected}" "${expected[@]}"; then
-					expected+=( "${new_expected[@]}" )
-				fi
-			done < <(find "${sitedir}" -name '*.egg-info' -print0)
-		fi
-	done
-
-	if [[ ${#expected[@]} -gt 1 ]] && has no "${expected[@]}"; then
-		# 'no' and '[rb]depend' are mutually exclusive
-		eerror "QA Notice: The package seems to have used distutils and setuptools"
-		eerror "simultaneously"
-		eerror ""
-		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
-		# if we did not find anything, also assume 'no' is desired,
-		# we do not want the setuptools dep
-		[[ ${#expected[@]} -eq 0 ]] && expected=( no )
-		# *+rdepend=rdepend
-		has rdepend "${expected[@]}" && expected=( rdepend )
-		# NB: note that expected is overwritten above, so this implies !rdepend
-		# if the package is using entry points, modern versions of setuptools
-		# use built-in importlib.metadata module, so no rdep needed anymore
-		# NB2: this is incorrect for pypy3.7 but we ignore this for the time
-		# being
-		has entry-point "${expected[@]}" && expected=( bdepend )
-
-		if ! has ${DISTUTILS_USE_SETUPTOOLS} "${expected[@]}"; then
-				local def=
-				[[ ${DISTUTILS_USE_SETUPTOOLS} == bdepend ]] && def=' (or unset)'
-
-				eqawarn "QA Notice: DISTUTILS_USE_SETUPTOOLS value is probably incorrect"
-				eqawarn "  have:     DISTUTILS_USE_SETUPTOOLS=${DISTUTILS_USE_SETUPTOOLS}${def}"
-				if [[ ${expected[0]} == bdepend ]]; then
-					eqawarn "  expected: (unset)"
-				else
-					eqawarn "  expected: DISTUTILS_USE_SETUPTOOLS=${expected[0]}"
-				fi
-		fi
-	fi
-}
-
-distutils_use_setuptools_check
-
-: # guarantee successful exit
-
-# vim:ft=ebuild


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-02-01  1:37 Mike Gilbert
  0 siblings, 0 replies; 76+ messages in thread
From: Mike Gilbert @ 2022-02-01  1:37 UTC (permalink / raw
  To: gentoo-commits

commit:     46380b361bcbb28aa3a20fb0e9bc8dc97711b432
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Tue Feb  1 01:35:13 2022 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Tue Feb  1 01:35:13 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=46380b36

metadata/install-qa-check.d: add stub for 60distutils-use-setuptools

Work around broken rsync master script.

Bug: https://bugs.gentoo.org/832446
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>

 metadata/install-qa-check.d/60distutils-use-setuptools | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
new file mode 100644
index 000000000000..a2e220f43af9
--- /dev/null
+++ b/metadata/install-qa-check.d/60distutils-use-setuptools
@@ -0,0 +1,2 @@
+# Work around bug 832446
+:


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-02-01 18:19 Mike Gilbert
  0 siblings, 0 replies; 76+ messages in thread
From: Mike Gilbert @ 2022-02-01 18:19 UTC (permalink / raw
  To: gentoo-commits

commit:     924aca491d65f3857f3bb335a97e460d099ffba1
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Tue Feb  1 18:18:45 2022 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Tue Feb  1 18:19:29 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=924aca49

metadata/install-qa-check.d: drop 60distutils-use-setuptools again

Bug: https://bugs.gentoo.org/832446
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>

 metadata/install-qa-check.d/60distutils-use-setuptools | 2 --
 1 file changed, 2 deletions(-)

diff --git a/metadata/install-qa-check.d/60distutils-use-setuptools b/metadata/install-qa-check.d/60distutils-use-setuptools
deleted file mode 100644
index a2e220f43af9..000000000000
--- a/metadata/install-qa-check.d/60distutils-use-setuptools
+++ /dev/null
@@ -1,2 +0,0 @@
-# Work around bug 832446
-:


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-03-04  1:26 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-03-04  1:26 UTC (permalink / raw
  To: gentoo-commits

commit:     469e6c155e9c022c72e3bcdd0c673d1b6ffa5b81
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Mar  4 01:20:34 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Mar  4 01:21:10 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=469e6c15

metadata/install-qa-check.d: update 60python-pyc to refer to Python guide

Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60python-pyc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/metadata/install-qa-check.d/60python-pyc b/metadata/install-qa-check.d/60python-pyc
index e112cdce348b..fee033042a3a 100644
--- a/metadata/install-qa-check.d/60python-pyc
+++ b/metadata/install-qa-check.d/60python-pyc
@@ -1,4 +1,4 @@
-# Copyright 2019-2021 Gentoo Authors
+# Copyright 2019-2022 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 # QA check: ensure that Python modules are compiled after installing
@@ -75,7 +75,7 @@ if [[ ${EAPI} == [6-7] ]]; then
 			eqawarn "Please either fix the upstream build system to byte-compile Python modules"
 			eqawarn "correctly, or call python_optimize after installing them.  For more"
 			eqawarn "information, see:"
-			eqawarn "https://wiki.gentoo.org/wiki/Project:Python/Byte_compiling"
+			eqawarn "https://projects.gentoo.org/python/guide/helper.html#byte-compiling-python-modules"
 			eqawarn
 		fi
 	}


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-03-04  1:26 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-03-04  1:26 UTC (permalink / raw
  To: gentoo-commits

commit:     6cac5c86403fb7b3274ae91126b5ae98237e3535
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Mar  4 01:17:33 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Mar  4 01:21:00 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6cac5c86

metadata/install-qa-check.d: fix 60gtk-doc-paths check for EAPI 7+

Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60gtk-doc-paths | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/metadata/install-qa-check.d/60gtk-doc-paths b/metadata/install-qa-check.d/60gtk-doc-paths
index 8c12c2604337..9f927cce8406 100644
--- a/metadata/install-qa-check.d/60gtk-doc-paths
+++ b/metadata/install-qa-check.d/60gtk-doc-paths
@@ -1,16 +1,16 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 # QA check: ensure that gtk-doc files are installed in /usr/share/gtk-doc
 # Maintainer: GNOME team <gnome@gentoo.org>
 
 gtk_doc_path_check() {
-	[[ -d ${ED}usr/share/doc ]] || return
+	[[ -d ${ED%/}/usr/share/doc ]] || return
 
 	local found=() f
 	while read -d '' -r f; do
 		found+=( "${f%/*}" )
-	done < <(find "${ED}"usr/share/doc -name '*.devhelp*' -print0 || die)
+	done < <(find "${ED%/}"/usr/share/doc -name '*.devhelp*' -print0 || die)
 
 	if [[ ${found[@]} ]]; then
 		eqawarn
@@ -19,9 +19,9 @@ gtk_doc_path_check() {
 		eqawarn
 		eqatag -v gtk-doc-paths.invalid-path "${found[@]#${D%/}}"
 		eqawarn
-		eqawarn "gtk-doc documentation must always be installed into /usr/share/gtk-doc."
+		eqawarn "gtk-doc documentation must always be installed into ${EPREFIX}/usr/share/gtk-doc."
 		eqawarn "For more details, please see the GNOME team policy page:"
-		eqawarn "https://wiki.gentoo.org/wiki/Project:GNOME/Gnome_Team_Ebuild_Policies#gtk-doc"
+		eqawarn "https://wiki.gentoo.org/wiki/Project:GNOME/Gnome_Team_Ebuild_Policies#Handling_gtk-doc_documentation"
 		eqawarn
 	fi
 }


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-04-17 14:18 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-04-17 14:18 UTC (permalink / raw
  To: gentoo-commits

commit:     e8b470885ab9d44ffe46b1078b91dcdd9714e1a1
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Mar  4 01:37:11 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Apr 17 14:18:20 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e8b47088

metadata/install-qa-check.d: add 60libtool-la (check for unnecessary .la files)

Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60libtool-la | 45 ++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/metadata/install-qa-check.d/60libtool-la b/metadata/install-qa-check.d/60libtool-la
new file mode 100644
index 000000000000..fd21ec8406d3
--- /dev/null
+++ b/metadata/install-qa-check.d/60libtool-la
@@ -0,0 +1,45 @@
+# Check if we're installing .la files unnecessarily
+# https://projects.gentoo.org/qa/policy-guide/installed-files.html#pg0303
+
+libtool_la_check() {
+	if [[ ${CATEGORY}/${PN} == dev-libs/libltdl ]] ; then
+		# bug #293921
+		return
+	fi
+
+	# Bail out if there aren't any .la files being installed
+	local files=$(find "${ED}"/usr/lib* -name '*.la' -print 2>/dev/null)
+	[[ -n "${files[@]}" ]] || return
+
+	if grep -q "dev-libs/libltdl" <<<${RDEPEND}; then
+		# Nothing to do here
+		return
+	fi
+
+	# Iterate over all the .la files we are installing to verify there's
+	# a corresponding .a file - they're pointless without a corresponding
+	# static library.
+	local file
+	local dir
+	local base
+	local bad_files=()
+	for file in "${files[@]}" ; do
+		dir=$(dirname ${file})
+		base=${dir%/}
+		base=${base%.la}
+
+		if [[ ! -f ${dir}/${base}.a ]] ; then
+			bad_files+=( ${file} )
+		fi
+	done
+
+	if [[ -n "${bad_files[@]}" ]] ; then
+		eqawarn "QA Notice: Installing libtool files (.la) without corresponding libraries!"
+		eqatag -v libtool-la.unnecessary "${bad_files[@]#${D}}"
+	fi
+}
+
+libtool_la_check
+: # guarantee successful exit
+
+# vim:ft=sh


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-04-17 14:21 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-04-17 14:21 UTC (permalink / raw
  To: gentoo-commits

commit:     8226609cee46af93656676350895135dbd910793
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sun Apr 17 14:20:19 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Apr 17 14:20:19 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8226609c

metadata/install-qa-check.d: swap libltdl check to 'has'

It's a bit cleaner and will hopefully mean we don't catch a hypothetical
libltdl2. Not too stressed over such a possibility anyway.

Thanks-to: michael Orlitzky <mjo <AT> gentoo.org>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60libtool-la | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60libtool-la b/metadata/install-qa-check.d/60libtool-la
index fd21ec8406d3..6a1af9ce5a64 100644
--- a/metadata/install-qa-check.d/60libtool-la
+++ b/metadata/install-qa-check.d/60libtool-la
@@ -11,7 +11,7 @@ libtool_la_check() {
 	local files=$(find "${ED}"/usr/lib* -name '*.la' -print 2>/dev/null)
 	[[ -n "${files[@]}" ]] || return
 
-	if grep -q "dev-libs/libltdl" <<<${RDEPEND}; then
+	if has "dev-libs/libltdl" ${RDEPEND}; then
 		# Nothing to do here
 		return
 	fi


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-04-19 18:31 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-04-19 18:31 UTC (permalink / raw
  To: gentoo-commits

commit:     4a007c83aafc1137ae3448264921be7dc5e707c3
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Apr 19 18:30:20 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Apr 19 18:30:20 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4a007c83

Revert "metadata/install-qa-check.d: swap libltdl check to 'has'"

This reverts commit 8226609cee46af93656676350895135dbd910793.

This ends up not matching things like "dev-libs/libltdl:0" and breaks
(false positive) on e.g. imagemagick.

Closes: https://bugs.gentoo.org/839387
Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60libtool-la | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60libtool-la b/metadata/install-qa-check.d/60libtool-la
index 6a1af9ce5a64..fd21ec8406d3 100644
--- a/metadata/install-qa-check.d/60libtool-la
+++ b/metadata/install-qa-check.d/60libtool-la
@@ -11,7 +11,7 @@ libtool_la_check() {
 	local files=$(find "${ED}"/usr/lib* -name '*.la' -print 2>/dev/null)
 	[[ -n "${files[@]}" ]] || return
 
-	if has "dev-libs/libltdl" ${RDEPEND}; then
+	if grep -q "dev-libs/libltdl" <<<${RDEPEND}; then
 		# Nothing to do here
 		return
 	fi


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-04-19 18:31 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-04-19 18:31 UTC (permalink / raw
  To: gentoo-commits

commit:     3f2e678f952321df4e643a8db597f919480c7339
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Apr 19 18:31:03 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Apr 19 18:31:03 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3f2e678f

metadata/install-qa-check.d: clarify QA warning

Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60libtool-la | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60libtool-la b/metadata/install-qa-check.d/60libtool-la
index fd21ec8406d3..a313f785cad2 100644
--- a/metadata/install-qa-check.d/60libtool-la
+++ b/metadata/install-qa-check.d/60libtool-la
@@ -34,7 +34,7 @@ libtool_la_check() {
 	done
 
 	if [[ -n "${bad_files[@]}" ]] ; then
-		eqawarn "QA Notice: Installing libtool files (.la) without corresponding libraries!"
+		eqawarn "QA Notice: Installing libtool files (.la) without corresponding static libraries!"
 		eqatag -v libtool-la.unnecessary "${bad_files[@]#${D}}"
 	fi
 }


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-04-26 15:32 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-04-26 15:32 UTC (permalink / raw
  To: gentoo-commits

commit:     30826cad2a5d11d5270122ba4050d4d36b963a50
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Apr 26 15:31:42 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Apr 26 15:32:22 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=30826cad

metadata/install-qa-check.d: use readarray

Otherwise we end up not splitting correctly in the loop over files
(file contains two entries).

Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60libtool-la | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60libtool-la b/metadata/install-qa-check.d/60libtool-la
index a313f785cad2..bd475b6a016d 100644
--- a/metadata/install-qa-check.d/60libtool-la
+++ b/metadata/install-qa-check.d/60libtool-la
@@ -8,7 +8,7 @@ libtool_la_check() {
 	fi
 
 	# Bail out if there aren't any .la files being installed
-	local files=$(find "${ED}"/usr/lib* -name '*.la' -print 2>/dev/null)
+	readarray -d '' files < <(find "${ED}"/usr/lib* -name '*.la' -print0)
 	[[ -n "${files[@]}" ]] || return
 
 	if grep -q "dev-libs/libltdl" <<<${RDEPEND}; then


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-04-26 23:45 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-04-26 23:45 UTC (permalink / raw
  To: gentoo-commits

commit:     5a87e0946933feef33a95314e08abf0eb1a345a4
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Apr 26 23:45:01 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Apr 26 23:45:13 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5a87e094

metadata/install-qa-check.d: try to silence libtool-la stderr

Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60libtool-la | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60libtool-la b/metadata/install-qa-check.d/60libtool-la
index bd475b6a016d..af69a8b897ab 100644
--- a/metadata/install-qa-check.d/60libtool-la
+++ b/metadata/install-qa-check.d/60libtool-la
@@ -8,7 +8,7 @@ libtool_la_check() {
 	fi
 
 	# Bail out if there aren't any .la files being installed
-	readarray -d '' files < <(find "${ED}"/usr/lib* -name '*.la' -print0)
+	readarray -d '' files < <(find "${ED}"/usr/lib* -name '*.la' -print0 2>/dev/null)
 	[[ -n "${files[@]}" ]] || return
 
 	if grep -q "dev-libs/libltdl" <<<${RDEPEND}; then


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-04-27  0:13 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-04-27  0:13 UTC (permalink / raw
  To: gentoo-commits

commit:     ae61075e7fb307c5f13810963099df88f99df426
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Apr 27 00:13:03 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Apr 27 00:13:03 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ae61075e

metadata/install-qa-check.d: avoid -d'' in readarray

Needs newer Bash.

Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60libtool-la | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60libtool-la b/metadata/install-qa-check.d/60libtool-la
index af69a8b897ab..34344890333f 100644
--- a/metadata/install-qa-check.d/60libtool-la
+++ b/metadata/install-qa-check.d/60libtool-la
@@ -8,7 +8,8 @@ libtool_la_check() {
 	fi
 
 	# Bail out if there aren't any .la files being installed
-	readarray -d '' files < <(find "${ED}"/usr/lib* -name '*.la' -print0 2>/dev/null)
+	# TODO: use -d'' w/ newer EAPIs (bash 4.4+)
+	readarray files < <(find "${ED}"/usr/lib* -name '*.la' -print 2>/dev/null)
 	[[ -n "${files[@]}" ]] || return
 
 	if grep -q "dev-libs/libltdl" <<<${RDEPEND}; then


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-04-28  3:06 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-04-28  3:06 UTC (permalink / raw
  To: gentoo-commits

commit:     ff3c6cc6ce46e338f4ad9768adc9bbff4dc7bd93
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Apr 28 03:06:04 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Apr 28 03:06:18 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ff3c6cc6

metadata/install-qa-check.d: fix minor typo in comment

Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60tmpfiles-paths | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/metadata/install-qa-check.d/60tmpfiles-paths b/metadata/install-qa-check.d/60tmpfiles-paths
index 1d46cab6ecc0..049f73aaf07d 100644
--- a/metadata/install-qa-check.d/60tmpfiles-paths
+++ b/metadata/install-qa-check.d/60tmpfiles-paths
@@ -1,11 +1,11 @@
-# Copyright 2021 Gentoo Authors
+# Copyright 2021-2022 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 # QA check: ensure that packages installing tmpfiles configuration inherit the eclass
 # Maintainer: Sam James <sam@gentoo.org>
 # Maintainer: Georgy Yakovlev <gyakovlev@gentoo.org>
 
-# Implements two checks:
+# Implements three checks:
 # 1) Installation to /etc/tmpfiles.d (which is a user-customization location);
 # 2) Installation of any tmpfiles to /usr/lib/tmpfiles.d without inheriting the eclass
 #    (needed for tmpfiles_process in pkg_postinst);


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-04-30 19:13 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-04-30 19:13 UTC (permalink / raw
  To: gentoo-commits

commit:     fe2c69be92364e912384cd07c0b122b0e80168f0
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Apr 28 03:06:40 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Apr 30 19:13:18 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fe2c69be

metadata/install-qa-check.d: add new QA check for udev rules

Very similar to tmpfiles.eclass check (60tmpfiles-paths).

Three checks:
1) Verify packages don't install udev rules to /etc/udev/rules.d, which
is a forbidden (user-configuration) location;

2) Check whether packages inherit udev.eclass if they're
installing files to /lib/udev/rules.d/..

(This helps to catch packages not calling udev_reload
in pkg_postinst).

3) Check for missing udev_process calls in pkg_postinst.

Bug: https://bugs.gentoo.org/433916
See: c7fe1066a8fcd35f965de4ea16c9cd1001830642
Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60udev-eclass | 63 +++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)

diff --git a/metadata/install-qa-check.d/60udev-eclass b/metadata/install-qa-check.d/60udev-eclass
new file mode 100644
index 000000000000..cf8e08e9971e
--- /dev/null
+++ b/metadata/install-qa-check.d/60udev-eclass
@@ -0,0 +1,63 @@
+# Copyright 2021-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# QA check: ensure that packages installing udev rules inherit the eclass
+# Maintainer: Sam James <sam@gentoo.org>
+
+# Implements three checks:
+# 1) Installation to /etc/udev/rules.d (which is a user-customization location);
+# 2) Installation of any udev rules to /lib/udev/rules.d without inheriting the eclass
+#    (needed for udev_reload in pkg_postinst);
+# 3) Check for installation of udev rules without calling udev_reload in
+#    pkg_postinst.
+udev_rules_check() {
+	# Check 1
+	# Scan image for files in /etc/udev/rules.d which is a forbidden location
+	# (We use this glob to avoid triggering on keepdir)
+	shopt -s nullglob
+	local files=( "${ED}"/etc/udev/rules.d/* )
+	shopt -u nullglob
+
+	if [[ ${#files[@]} -gt 0 ]]; then
+		eqawarn "QA Notice: files installed to /etc/udev/rules.d found"
+		eqawarn "udev rules files supplied by ebuilds must be installed to /lib/udev/rules.d/"
+	fi
+
+	# Check 2
+	# We're now going to check for whether we install files to /lib/udev/rules.d/ without
+	# inheriting the eclass (weak catch for ebuilds not calling udev_reload in pkg_postinst)
+
+	if [[ -n ${UDEV_OPTIONAL} ]] ; then
+		# While imperfect, using ${UDEV_OPTIONAL} is good enough to allow opting out
+		# for e.g. sys-apps/portage, sys-apps/systemd, sys-libs/pam, etc. We may want
+		# a better/more standardised way to opt out from QA checks in future.
+		# It's okay for some packages to do this because of circular dependencies and such
+		# See: https://archives.gentoo.org/gentoo-dev/message/0a96793036a4fdd9ac311a46950d7e7b
+		return
+	fi
+
+	if [[ -d "${ED}"/lib/udev/rules.d/ ]] ; then
+		if ! has udev ${INHERITED} ; then
+			eqawarn "QA Notice: package is installing udev ruleswithout inheriting udev.eclass!"
+			eqawarn "Packages must inherit udev.eclass then call udev_reload in pkg_postinst."
+			return
+		fi
+
+		# Check 3
+		# Check whether we're installing udev rules without explicitly
+		# calling udev_reload in pkg_postinst, but we have inherited
+		# the eclass.
+		# Small risk of false positives if called indirectly.
+		# See: https://archives.gentoo.org/gentoo-dev/message/7bdfdc9a7560fd07436defd0253af0b8
+		local pkg_postinst_body="$(declare -fp pkg_postinst 2>&1)"
+		if [[ ! ${pkg_postinst_body} == *udev_reload* ]] ; then
+			eqawarn "QA Notice: package is installing udev rules without calling"
+			eqawarn "udev_reload in pkg_postinst phase"
+		fi
+	fi
+}
+
+udev_rules_check
+: # guarantee successful exit
+
+# vim:ft=sh


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-05-02  6:01 Agostino Sarubbo
  0 siblings, 0 replies; 76+ messages in thread
From: Agostino Sarubbo @ 2022-05-02  6:01 UTC (permalink / raw
  To: gentoo-commits

commit:     eeb361d2df774008fcf449b93a2b321082629f81
Author:     Agostino Sarubbo <ago <AT> gentoo <DOT> org>
AuthorDate: Mon May  2 06:01:21 2022 +0000
Commit:     Agostino Sarubbo <ago <AT> gentoo <DOT> org>
CommitDate: Mon May  2 06:01:21 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=eeb361d2

metadata/install-qa-check.d: add missing whitespace in 60udev-eclass

Signed-off-by: Agostino Sarubbo <ago <AT> gentoo.org>

 metadata/install-qa-check.d/60udev-eclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60udev-eclass b/metadata/install-qa-check.d/60udev-eclass
index cf8e08e9971e..4aadc9b1f18d 100644
--- a/metadata/install-qa-check.d/60udev-eclass
+++ b/metadata/install-qa-check.d/60udev-eclass
@@ -38,7 +38,7 @@ udev_rules_check() {
 
 	if [[ -d "${ED}"/lib/udev/rules.d/ ]] ; then
 		if ! has udev ${INHERITED} ; then
-			eqawarn "QA Notice: package is installing udev ruleswithout inheriting udev.eclass!"
+			eqawarn "QA Notice: package is installing udev rules without inheriting udev.eclass!"
 			eqawarn "Packages must inherit udev.eclass then call udev_reload in pkg_postinst."
 			return
 		fi


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-05-05 23:38 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-05-05 23:38 UTC (permalink / raw
  To: gentoo-commits

commit:     cc44ecdc302f5ba45b88e92befcebfab692cd931
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu May  5 23:38:04 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu May  5 23:38:04 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cc44ecdc

metadata/install-qa-check.d: fix check for static library in 60libtool-la

Thanks-to: Ionen Wolkens <ionen <AT> gentoo.org>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60libtool-la | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/metadata/install-qa-check.d/60libtool-la b/metadata/install-qa-check.d/60libtool-la
index 34344890333f..89b93fcfe6aa 100644
--- a/metadata/install-qa-check.d/60libtool-la
+++ b/metadata/install-qa-check.d/60libtool-la
@@ -25,11 +25,7 @@ libtool_la_check() {
 	local base
 	local bad_files=()
 	for file in "${files[@]}" ; do
-		dir=$(dirname ${file})
-		base=${dir%/}
-		base=${base%.la}
-
-		if [[ ! -f ${dir}/${base}.a ]] ; then
+		if [[ ! -f ${file%.la}.a ]] ; then
 			bad_files+=( ${file} )
 		fi
 	done


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-05-06 12:48 Ionen Wolkens
  0 siblings, 0 replies; 76+ messages in thread
From: Ionen Wolkens @ 2022-05-06 12:48 UTC (permalink / raw
  To: gentoo-commits

commit:     e88568ba3ef0c760e80cff02d567283a8b557d6b
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Fri May  6 12:43:57 2022 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Fri May  6 12:48:25 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e88568ba

metadata/install-qa-check.d: further fix 60libtool-la library check

Without -t, the delimiter (newline) is not stripped
and so elements do not end in .la to be replaced by .a

Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 metadata/install-qa-check.d/60libtool-la | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60libtool-la b/metadata/install-qa-check.d/60libtool-la
index 89b93fcfe6aa..48849f42e154 100644
--- a/metadata/install-qa-check.d/60libtool-la
+++ b/metadata/install-qa-check.d/60libtool-la
@@ -9,7 +9,7 @@ libtool_la_check() {
 
 	# Bail out if there aren't any .la files being installed
 	# TODO: use -d'' w/ newer EAPIs (bash 4.4+)
-	readarray files < <(find "${ED}"/usr/lib* -name '*.la' -print 2>/dev/null)
+	readarray -t files < <(find "${ED}"/usr/lib* -name '*.la' -print 2>/dev/null)
 	[[ -n "${files[@]}" ]] || return
 
 	if grep -q "dev-libs/libltdl" <<<${RDEPEND}; then


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-06-08  0:25 Mike Gilbert
  0 siblings, 0 replies; 76+ messages in thread
From: Mike Gilbert @ 2022-06-08  0:25 UTC (permalink / raw
  To: gentoo-commits

commit:     ae1fda4dc09564cba28db147d4c682e0397756ff
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Sat Jun  4 14:18:07 2022 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Wed Jun  8 00:24:58 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ae1fda4d

install-qa-check.d/60udev-eclass: check for udev_reload in pkg_postrm

Bug: https://bugs.gentoo.org/847436
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>

 metadata/install-qa-check.d/60udev-eclass | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/metadata/install-qa-check.d/60udev-eclass b/metadata/install-qa-check.d/60udev-eclass
index 4aadc9b1f18d..24a4df38ec4c 100644
--- a/metadata/install-qa-check.d/60udev-eclass
+++ b/metadata/install-qa-check.d/60udev-eclass
@@ -54,6 +54,11 @@ udev_rules_check() {
 			eqawarn "QA Notice: package is installing udev rules without calling"
 			eqawarn "udev_reload in pkg_postinst phase"
 		fi
+		local pkg_postrm_body="$(declare -fp pkg_postrm 2>&1)"
+		if [[ ! ${pkg_postrm_body} == *udev_reload* ]] ; then
+			eqawarn "QA Notice: package is installing udev rules without calling"
+			eqawarn "udev_reload in pkg_postrm phase"
+		fi
 	fi
 }
 


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-07-16 11:26 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2022-07-16 11:26 UTC (permalink / raw
  To: gentoo-commits

commit:     97cbfd95965229479d58c1b19557189bb93fdf9d
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 16 11:26:16 2022 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jul 16 11:26:16 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=97cbfd95

install-qa-check.d: Enable 60python-pyc in EAPI 8

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60python-pyc | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60python-pyc b/metadata/install-qa-check.d/60python-pyc
index fee033042a3a..47e9a3eea908 100644
--- a/metadata/install-qa-check.d/60python-pyc
+++ b/metadata/install-qa-check.d/60python-pyc
@@ -4,7 +4,9 @@
 # QA check: ensure that Python modules are compiled after installing
 # Maintainer: Python project <python@gentoo.org>
 
-if [[ ${EAPI} == [6-7] ]]; then
+# EAPI guard to prevent errors from trying to import python-utils-r1
+# in unsupported EAPIs.  Please keep the list in sync with the eclass!
+if [[ ${EAPI} == [6-8] ]]; then
 	inherit python-utils-r1
 
 	python_pyc_check() {


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-08-02  4:08 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2022-08-02  4:08 UTC (permalink / raw
  To: gentoo-commits

commit:     a09934ce1b026924c173d535d06e55a3126add04
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 18 08:52:40 2022 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Aug  2 04:04:28 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a09934ce

install-qa-check.d: Rewrite 60python-pyc to use gpep517

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60python-pyc | 168 ++++++++++++++++++-------------
 1 file changed, 96 insertions(+), 72 deletions(-)

diff --git a/metadata/install-qa-check.d/60python-pyc b/metadata/install-qa-check.d/60python-pyc
index 47e9a3eea908..fd9434994f2f 100644
--- a/metadata/install-qa-check.d/60python-pyc
+++ b/metadata/install-qa-check.d/60python-pyc
@@ -4,86 +4,110 @@
 # QA check: ensure that Python modules are compiled after installing
 # Maintainer: Python project <python@gentoo.org>
 
-# EAPI guard to prevent errors from trying to import python-utils-r1
-# in unsupported EAPIs.  Please keep the list in sync with the eclass!
-if [[ ${EAPI} == [6-8] ]]; then
-	inherit python-utils-r1
+python_pyc_check() {
+	local save=$(shopt -p nullglob)
+	shopt -s nullglob
+	local progs=( "${EPREFIX}"/usr/lib/python-exec/*/gpep517 )
+	${save}
 
-	python_pyc_check() {
-		local impl missing=() outdated=()
-		for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; do
-			_python_export "${impl}" EPYTHON PYTHON
-			[[ -x ${PYTHON} ]] || continue
-			local sitedir=$(python_get_sitedir "${impl}")
+	local invalid=()
+	local mismatched_timestamp=()
+	local mismatched_data=()
+	local missing=()
+	local stray=()
 
-			if [[ -d ${D}${sitedir} ]]; then
-				local suffixes=() subdir=
-				case ${EPYTHON} in
-					python2*)
-						suffixes=( .py{c,o} )
-						;;
-					pypy)
-						suffixes=( .pyc )
-						;;
-					python3*|pypy3*)
-						local tag=$("${PYTHON}" -c 'import sys; print(sys.implementation.cache_tag)')
-						suffixes=( ".${tag}"{,.opt-{1,2}}.pyc )
-						subdir=__pycache__/
-						;;
-					*)
-						# skip testing unknown impl
-						continue
-						;;
-				esac
+	for prog in "${progs[@]}"; do
+		local impl=${prog%/*}
+		impl=${impl##*/}
+		einfo "Verifying compiled files for ${impl}"
+		local kind pyc py
+		while IFS=: read -r kind pyc py extra; do
+			case ${kind} in
+				invalid)
+					invalid+=( "${pyc}" )
+					;;
+				mismatched)
+					case ${extra} in
+						timestamp)
+							mismatched_timestamp+=( "${pyc}" )
+							;;
+						*)
+							mismatched_data+=( "${pyc}" )
+							;;
+					esac
+					;;
+				missing)
+					missing+=( "${pyc}" )
+					;;
+				older)
+					# older warnings were produced by earlier version
+					# of gpep517 but the check was incorrect, so we just
+					# ignore them
+					;;
+				stray)
+					stray+=( "${pyc}" )
+					;;
+			esac
+		done < <("${prog}" verify-pyc --destdir "${D}" --prefix "${EPREFIX}"/usr)
+	done
 
-				einfo "Verifying compiled files in ${sitedir}"
-				local f s
-				while read -d $'\0' -r f; do
-					local dir=${f%/*}
-					local basename=${f##*/}
-					basename=${basename%.py}
+	local found=
+	if [[ ${missing[@]} ]]; then
+		eqawarn
+		eqawarn "QA Notice: This package installs one or more Python modules that are"
+		eqawarn "not byte-compiled."
+		eqawarn "The following files are missing:"
+		eqawarn
+		eqatag -v python-pyc.missing "${missing[@]}"
+		found=1
+	fi
 
-					for s in "${suffixes[@]}"; do
-						local cache=${dir}/${subdir}${basename}${s}
-						if [[ ! -f ${cache} ]]; then
-							missing+=( "${cache}" )
-						elif [[ ${f} -nt ${cache} ]]; then
-							outdated+=( "${cache}" )
-						fi
-					done
-				done < <(find "${D}${sitedir}" -name '*.py' -print0)
-			fi
-		done
+	if [[ ${invalid[@]} ]]; then
+		eqawarn
+		eqawarn "QA Notice: This package installs one or more compiled Python modules"
+		eqawarn "that seem to be invalid (do not have the correct header)."
+		eqawarn "The following files are invalid:"
+		eqawarn
+		eqatag -v python-pyc.invalid "${invalid[@]}"
+		found=1
+	fi
 
-		if [[ ${missing[@]} ]]; then
-			eqawarn
-			eqawarn "QA Notice: This package installs one or more Python modules that are"
-			eqawarn "not byte-compiled."
-			eqawarn "The following files are missing:"
-			eqawarn
-			eqatag -v python-pyc.missing "${missing[@]#${D}}"
-		fi
+	if [[ ${mismatched_data[@]} ]]; then
+		eqawarn
+		eqawarn "QA Notice: This package installs one or more compiled Python modules whose"
+		eqawarn ".py files have different content (size or hash) than recorded:"
+		eqawarn
+		eqatag -v python-pyc.mismatched.data "${mismatched_data[@]}"
+		found=1
+	fi
 
-		if [[ ${outdated[@]} ]]; then
-			eqawarn
-			eqawarn "QA Notice: This package installs one or more compiled Python modules that have"
-			eqawarn "older timestamps than the corresponding source files:"
-			eqawarn
-			eqatag -v python-pyc.outdated "${outdated[@]#${D}}"
-		fi
+	if [[ ${mismatched_timestamp[@]} ]]; then
+		eqawarn
+		eqawarn "QA Notice: This package installs one or more compiled Python modules whose"
+		eqawarn ".py files have different timestamps than recorded:"
+		eqawarn
+		eqatag -v python-pyc.mismatched.timestamp "${mismatched_timestamp[@]}"
+		found=1
+	fi
 
-		if [[ ${missing[@]} || ${outdated[@]} ]]; then
-			eqawarn
-			eqawarn "Please either fix the upstream build system to byte-compile Python modules"
-			eqawarn "correctly, or call python_optimize after installing them.  For more"
-			eqawarn "information, see:"
-			eqawarn "https://projects.gentoo.org/python/guide/helper.html#byte-compiling-python-modules"
-			eqawarn
-		fi
-	}
+	if [[ ${stray[@]} ]]; then
+		eqawarn
+		eqawarn "QA Notice: This package installs one or more compiled Python modules"
+		eqawarn "that do not match installed modules (or their implementation)."
+		eqawarn "The following files are stray:"
+		eqawarn
+		eqatag -v python-pyc.stray "${stray[@]}"
+		found=1
+	fi
 
-	python_pyc_check
-fi
+	if [[ ${found} ]]; then
+		eqawarn
+		eqawarn "For more information on bytecode files and related issues, please see:"
+		eqawarn "  https://projects.gentoo.org/python/guide/qawarn.html#compiled-bytecode-related-warnings"
+	fi
+}
+
+python_pyc_check
 
 : # guarantee successful exit
 


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-08-03  1:53 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-08-03  1:53 UTC (permalink / raw
  To: gentoo-commits

commit:     bfeb100e92991a4df927215b4f32d8908c081797
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Aug  3 01:49:49 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Aug  3 01:53:01 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bfeb100e

metadata/install-qa-check.d: skip 60python-pc if gpep517 too old

When building libseccomp, say:
```
 * Verifying compiled files for python3.9
usage: /usr/lib/python-exec/python3.9/gpep517 [-h] {get-backend,build-wheel,install-wheel} ...
/usr/lib/python-exec/python3.9/gpep517: error: argument command: invalid choice: 'verify-pyc' (choose from 'get-backend', 'build-wheel', 'install-wheel')
strip: i686-pc-linux-gnu-strip --strip-unneeded -N __gentoo_check_ldflags__ -R .comment -R .GCC.command.line -R .note.gnu.gold-version
```

The gpep517 >= dep is in distutils-r1 but this check applies to other
ebuilds. So, use has_version -b.

Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60python-pyc | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/metadata/install-qa-check.d/60python-pyc b/metadata/install-qa-check.d/60python-pyc
index fd9434994f2f..37b0acaf7e0a 100644
--- a/metadata/install-qa-check.d/60python-pyc
+++ b/metadata/install-qa-check.d/60python-pyc
@@ -16,6 +16,11 @@ python_pyc_check() {
 	local missing=()
 	local stray=()
 
+	# Avoid running the check if sufficiently new gpep517 is not installed
+	# yet. It's valid to schedule (for merge order) >=gpep517-8 after
+	# packages which have this check run if they don't use distutils-r1.
+	has_version -b ">=dev-python/gpep517-8" || return
+
 	for prog in "${progs[@]}"; do
 		local impl=${prog%/*}
 		impl=${impl##*/}


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-08-03  4:27 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-08-03  4:27 UTC (permalink / raw
  To: gentoo-commits

commit:     83a5cad812cdce67994d3c44105e18f443d9a106
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Aug  3 04:26:59 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Aug  3 04:26:59 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=83a5cad8

metadata/install-qa-check.d: drop -b from has_version in 60python-pyc

Only for EAPI 7+, duh. Not going with the faff of --host-root for EAPI
6 etc for now given it's just an optional check.

Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60python-pyc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60python-pyc b/metadata/install-qa-check.d/60python-pyc
index 37b0acaf7e0a..f2d5ff3452dd 100644
--- a/metadata/install-qa-check.d/60python-pyc
+++ b/metadata/install-qa-check.d/60python-pyc
@@ -19,7 +19,7 @@ python_pyc_check() {
 	# Avoid running the check if sufficiently new gpep517 is not installed
 	# yet. It's valid to schedule (for merge order) >=gpep517-8 after
 	# packages which have this check run if they don't use distutils-r1.
-	has_version -b ">=dev-python/gpep517-8" || return
+	has_version ">=dev-python/gpep517-8" || return
 
 	for prog in "${progs[@]}"; do
 		local impl=${prog%/*}


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-08-03 18:56 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-08-03 18:56 UTC (permalink / raw
  To: gentoo-commits

commit:     ac3b18d6dd5d8a7851691c308a6bae77f3a750a6
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Aug  3 18:56:04 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Aug  3 18:56:04 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ac3b18d6

metadata/install-qa-check.d: only check images w/ site-packages

Avoid noise on all merges even if no Python files installed. No need
to use siteimpl function as > Python 2.7 (and .. 3.6? 3.7?) it's all
standard anyway.

Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60python-pyc | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/metadata/install-qa-check.d/60python-pyc b/metadata/install-qa-check.d/60python-pyc
index f2d5ff3452dd..4679070328c0 100644
--- a/metadata/install-qa-check.d/60python-pyc
+++ b/metadata/install-qa-check.d/60python-pyc
@@ -24,6 +24,9 @@ python_pyc_check() {
 	for prog in "${progs[@]}"; do
 		local impl=${prog%/*}
 		impl=${impl##*/}
+
+		[[ -d "${ED}"/usr/lib/${impl}/site-packages ]] || continue
+
 		einfo "Verifying compiled files for ${impl}"
 		local kind pyc py
 		while IFS=: read -r kind pyc py extra; do


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-08-04 23:49 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-08-04 23:49 UTC (permalink / raw
  To: gentoo-commits

commit:     c310e44692ad91777c71394dda97cd1f33f72589
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Aug  4 23:43:05 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Aug  4 23:48:57 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c310e446

metadata/install-qa-check.d: don't fail if has_version died

During Python target migrations, if portage[-ipc], portageq can't
be invoked as a binary (which has_version does behind the scenes w/ -ipc),
so just call it w/ nonfatal, to avoid aborting the emerge and possibly
hurting the system (imagine python-exec gets upgraded but portage
wasn't yet).

Fails like:
```

${EPREFIX}/Gentoo/usr/lib/python-exec/python3.9/portageq: this Python implementation (python3.9) is not supported by the script.
 * ERROR: app-admin/perl-cleaner-2.30::gentoo_prefix failed:
 *   has_version: unexpected portageq exit code: 127
 *
 * Call stack:
 *   misc-functions.sh, line 1334:  Called install_qa_check
 *   misc-functions.sh, line  138:  Called source 'install_symlink_html_docs'
 *        60python-pyc, line  118:  Called python_pyc_check
 *        60python-pyc, line   22:  Called has_version 'install_hooks'
 *    phase-helpers.sh, line  986:  Called ___best_version_and_has_version_common '${EPREFIX}/Gentoo/var/db/repos/gentoo/metadata/install-qa-check.d/60python-pyc'
 *    phase-helpers.sh, line  973:  Called die
 * The specific snippet of code:
 *   				die "${FUNCNAME[1]}: unexpected portageq exit code: ${retval}"
```

Bug: https://bugs.gentoo.org/778014
Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60python-pyc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60python-pyc b/metadata/install-qa-check.d/60python-pyc
index 4679070328c0..fdd232422880 100644
--- a/metadata/install-qa-check.d/60python-pyc
+++ b/metadata/install-qa-check.d/60python-pyc
@@ -19,7 +19,7 @@ python_pyc_check() {
 	# Avoid running the check if sufficiently new gpep517 is not installed
 	# yet. It's valid to schedule (for merge order) >=gpep517-8 after
 	# packages which have this check run if they don't use distutils-r1.
-	has_version ">=dev-python/gpep517-8" || return
+	nonfatal has_version ">=dev-python/gpep517-8" || return
 
 	for prog in "${progs[@]}"; do
 		local impl=${prog%/*}


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-08-21  2:31 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-08-21  2:31 UTC (permalink / raw
  To: gentoo-commits

commit:     81d57dd71121fabff702a84951b339679240ebeb
Author:     matoro <matoro <AT> users <DOT> noreply <DOT> github <DOT> com>
AuthorDate: Tue Jul  5 18:28:32 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Aug 21 02:30:00 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=81d57dd7

metadata/install-qa-check.d: add 60noop-testsuites

This attempts to catch autotools-based tests that will pass without
actually executing any tests due to automagic-based rules like the
presence/absence of a dependency.

(sam: This was written based on my notes for implementation.)

Bug: https://bugs.gentoo.org/848579
Closes: https://github.com/gentoo/gentoo/pull/26237
Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60noop-testsuites | 28 +++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/metadata/install-qa-check.d/60noop-testsuites b/metadata/install-qa-check.d/60noop-testsuites
new file mode 100644
index 000000000000..82e3de6b7ed3
--- /dev/null
+++ b/metadata/install-qa-check.d/60noop-testsuites
@@ -0,0 +1,28 @@
+# Copyright 2021-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# QA check: look for autotools-based tests are actually no-ops
+# Maintainer: Quality Assurance team <qa@gentoo.org>
+
+noop_testsuite_check() {
+	use test || return
+
+	IFS= readarray -t noop_testsuites < <(find "${S}" -type f -name 'test-suite.log' -print0 | xargs -0 grep -l "TOTAL: 0" 2>/dev/null)
+
+	if [[ -n ${noop_testsuites[@]} ]]; then
+		eqawarn "QA Notice: Test suite passed but did not actually execute any tests:"
+		eqawarn
+		for suite in ${noop_testsuites[@]}
+		do
+			# can't use eqatag here because filenames must be relative to ${D},
+			# but our test suite log files only exist in ${S}
+			eqawarn "\t${suite#${S}/}"
+		done
+		eqawarn
+	fi
+}
+
+noop_testsuite_check
+: # guarantee successful exit
+
+# vim:ft=sh


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2022-09-19  3:52 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2022-09-19  3:52 UTC (permalink / raw
  To: gentoo-commits

commit:     4d9b14a0bc5b66b1397efc0ada1a791f5b0adadd
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Sep 19 03:50:46 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Sep 19 03:51:51 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4d9b14a0

metadata/install-qa-check.d: don't use nonfatal on older EAPIs in 60python-pyc

Bug: https://bugs.gentoo.org/869182
Fixes: c310e44692ad91777c71394dda97cd1f33f72589
Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/60python-pyc | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60python-pyc b/metadata/install-qa-check.d/60python-pyc
index fdd232422880..d1eae65e1b58 100644
--- a/metadata/install-qa-check.d/60python-pyc
+++ b/metadata/install-qa-check.d/60python-pyc
@@ -19,7 +19,9 @@ python_pyc_check() {
 	# Avoid running the check if sufficiently new gpep517 is not installed
 	# yet. It's valid to schedule (for merge order) >=gpep517-8 after
 	# packages which have this check run if they don't use distutils-r1.
-	nonfatal has_version ">=dev-python/gpep517-8" || return
+	if [[ ${EAPI} == [0123] ]] || ! nonfatal has_version ">=dev-python/gpep517-8" ; then
+		return
+	fi
 
 	for prog in "${progs[@]}"; do
 		local impl=${prog%/*}


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2023-05-17  3:40 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2023-05-17  3:40 UTC (permalink / raw
  To: gentoo-commits

commit:     18c742e05adc3083275602317b588d454c2a807e
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed May 17 03:07:29 2023 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed May 17 03:33:21 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=18c742e0

install-qa-check.d: Fix 60python-pyc to test pypy3.* as well

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60python-pyc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60python-pyc b/metadata/install-qa-check.d/60python-pyc
index d1eae65e1b58..fe4f3f62c4ef 100644
--- a/metadata/install-qa-check.d/60python-pyc
+++ b/metadata/install-qa-check.d/60python-pyc
@@ -27,7 +27,8 @@ python_pyc_check() {
 		local impl=${prog%/*}
 		impl=${impl##*/}
 
-		[[ -d "${ED}"/usr/lib/${impl}/site-packages ]] || continue
+		# NB: using ${impl}* to catch pypy3.* for pypy3
+		[[ -d "${ED}"/usr/lib/${impl}*/site-packages ]] || continue
 
 		einfo "Verifying compiled files for ${impl}"
 		local kind pyc py


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2023-08-17 22:08 Ulrich Müller
  0 siblings, 0 replies; 76+ messages in thread
From: Ulrich Müller @ 2023-08-17 22:08 UTC (permalink / raw
  To: gentoo-commits

commit:     2c755c274a4bd82e5881c315e3cfad05cc371179
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Wed Aug 16 17:07:09 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Aug 17 21:49:37 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2c755c27

metadata/install-qa-check.d: Check for subdirs in /bin and its friends

Bug: https://bugs.gentoo.org/912354
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 metadata/install-qa-check.d/08gentoo-paths | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/08gentoo-paths b/metadata/install-qa-check.d/08gentoo-paths
index 4d84925d8539..5b8607fd5f96 100644
--- a/metadata/install-qa-check.d/08gentoo-paths
+++ b/metadata/install-qa-check.d/08gentoo-paths
@@ -53,7 +53,11 @@ gentoo_path_check() {
 		fi
 	done
 
-	# 3. check for unexpected /usr/share/doc subdirectories
+	# 3. check for unexpected subdirectories in bin and sbin
+	local bin_subdirs=( "${ED%/}"{,/usr}/{bin,sbin}/*/ )
+	bad_paths+=( "${bin_subdirs[@]%/}" )
+
+	# 4. check for unexpected /usr/share/doc subdirectories
 	local doc_dirs=( "${ED%/}"/usr/share/doc/* )
 	for x in "${doc_dirs[@]##*/}"; do
 		if [[ ${x} != ${PF} ]]; then


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2024-01-08 14:48 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2024-01-08 14:48 UTC (permalink / raw
  To: gentoo-commits

commit:     840cd24f4adc643b949f8e45d17ab3f7dc5347fc
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jan  5 16:48:14 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jan  8 14:48:21 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=840cd24f

install-qa-check.d/60python-site: Check for out-of-sitepkg install

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60python-site | 28 +++++++++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60python-site b/metadata/install-qa-check.d/60python-site
index 323539107900..00962b0448b0 100644
--- a/metadata/install-qa-check.d/60python-site
+++ b/metadata/install-qa-check.d/60python-site
@@ -31,6 +31,7 @@ python_site_check() {
 	local stray=()
 
 	local bad_versions=()
+	local outside_site=()
 	local stray_packages=()
 
 	# Avoid running the check if sufficiently new gpep517 is not installed
@@ -46,7 +47,24 @@ python_site_check() {
 		impl=${impl##*/}
 
 		# NB: using ${impl}* to catch pypy3.* for pypy3
-		local sitedir=( "${ED}"/usr/lib/${impl}*/site-packages )
+		local pydir=( "${ED}"/usr/lib/${impl}* )
+		[[ -d ${pydir} ]] || continue
+
+		# check for packages installing outside site-packages
+		case ${CATEGORY}/${PN} in
+			dev-lang/python|dev-python/pypy*)
+				;;
+			*)
+				while IFS= read -d $'\0' -r f; do
+					outside_site+=( "${f}" )
+				done < <(
+					find "${pydir}" -mindepth 1 -maxdepth 1 \
+						'!' -name site-packages -print0
+				)
+				;;
+		esac
+
+		local sitedir=( "${pydir}"/site-packages )
 		[[ -d ${sitedir} ]] || continue
 
 		# check for bad package versions
@@ -197,6 +215,14 @@ python_site_check() {
 		eqawarn
 		eqatag -v python-site.libdir "${bad_libdirs[@]#${ED}}"
 	fi
+
+	if [[ ${outside_site[@]} ]]; then
+		eqawarn
+		eqawarn "QA Notice: Files found installed directly into Python stdlib,"
+		eqawarn "instead of site-packages (use \$(python_get_sitedir)):"
+		eqawarn
+		eqatag -v python-site.stdlib "${outside_site[@]}"
+	fi
 }
 
 python_site_check


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2024-01-08 14:48 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2024-01-08 14:48 UTC (permalink / raw
  To: gentoo-commits

commit:     2c6e23dbd6f73f662da1832fc993c61f8945b83e
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jan  5 14:38:25 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jan  8 14:48:17 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2c6e23db

install-qa-check.d/60python-site: Add bad version check

This was a case e.g. with =dev-python/pyrqlite-2.2.0.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60python-site | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/metadata/install-qa-check.d/60python-site b/metadata/install-qa-check.d/60python-site
index eb59ad5cac26..d73c881d3ad1 100644
--- a/metadata/install-qa-check.d/60python-site
+++ b/metadata/install-qa-check.d/60python-site
@@ -24,6 +24,7 @@ python_site_check() {
 	local missing=()
 	local stray=()
 
+	local bad_versions=()
 	local stray_packages=()
 
 	# Avoid running the check if sufficiently new gpep517 is not installed
@@ -42,6 +43,18 @@ python_site_check() {
 		local sitedir=( "${ED}"/usr/lib/${impl}*/site-packages )
 		[[ -d ${sitedir} ]] || continue
 
+		# check for bad package versions
+		while IFS= read -d $'\0' -r f; do
+			bad_versions+=( "${f#${ED}}" )
+		done < <(
+			find "${sitedir}" -maxdepth 1 '(' \
+				-name '*-0.0.0.dist-info' -o \
+				-name '*-UNKNOWN.dist-info' -o \
+				-name '*-0.0.0.egg-info' -o \
+				-name '*-UNKNOWN.egg-info' \
+				')' -print0
+		)
+
 		# check for stray files in site-packages
 		while IFS= read -d $'\0' -r f; do
 			stray_packages+=( "${f#${ED}}" )
@@ -148,6 +161,14 @@ python_site_check() {
 		eqawarn "  https://projects.gentoo.org/python/guide/qawarn.html#compiled-bytecode-related-warnings"
 	fi
 
+	if [[ ${bad_versions[@]} ]]; then
+		eqawarn
+		eqawarn "QA Notice: The following Python packages were installed with"
+		eqawarn "invalid/suspicious versions in the site-packages directory:"
+		eqawarn
+		eqatag -v python-site.bad_version "${bad_versions[@]}"
+	fi
+
 	if [[ ${stray_packages[@]} ]]; then
 		eqawarn
 		eqawarn "QA Notice: The following unexpected files/directories were found"


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2024-01-08 14:48 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2024-01-08 14:48 UTC (permalink / raw
  To: gentoo-commits

commit:     777859c3f5fd4bc9802f7677b19960323abe4901
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jan  5 17:53:08 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jan  8 14:48:21 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=777859c3

install-qa-check.d/60python-site: allow site-packages/README.txt

This is installed by dev-lang/python and dev-python/pypy*.
Historically, we didn't need to exempt them since the check was
in distutils-r1 and these ebuilds did not use it.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60python-site | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60python-site b/metadata/install-qa-check.d/60python-site
index 00962b0448b0..b130b6768dad 100644
--- a/metadata/install-qa-check.d/60python-site
+++ b/metadata/install-qa-check.d/60python-site
@@ -88,7 +88,8 @@ python_site_check() {
 					-name '*.pth' -o \
 					-name '*.py' -o \
 					-name '*.pyi' -o \
-					-name "*$(get_modname)" \
+					-name "*$(get_modname)" -o \
+					-name 'README.txt' \
 				')' -print0
 		)
 		# check for forbidden packages


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2024-01-08 14:48 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2024-01-08 14:48 UTC (permalink / raw
  To: gentoo-commits

commit:     e7fc78a3bab8b81253d267dc86886d44ea9c5e1b
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jan  5 16:28:59 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jan  8 14:48:20 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e7fc78a3

install-qa-check.d/60python-site: Check for UNKNOWN package name

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

 metadata/install-qa-check.d/60python-site | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/metadata/install-qa-check.d/60python-site b/metadata/install-qa-check.d/60python-site
index ffc06edf0960..323539107900 100644
--- a/metadata/install-qa-check.d/60python-site
+++ b/metadata/install-qa-check.d/60python-site
@@ -55,9 +55,9 @@ python_site_check() {
 		done < <(
 			find "${sitedir}" -maxdepth 1 '(' \
 				-name '*-0.0.0.dist-info' -o \
-				-name '*-UNKNOWN.dist-info' -o \
+				-name '*UNKNOWN*.dist-info' -o \
 				-name '*-0.0.0.egg-info' -o \
-				-name '*-UNKNOWN.egg-info' \
+				-name '*UNKNOWN*.egg-info' \
 				')' -print0
 		)
 
@@ -170,7 +170,7 @@ python_site_check() {
 	if [[ ${bad_versions[@]} ]]; then
 		eqawarn
 		eqawarn "QA Notice: The following Python packages were installed with"
-		eqawarn "invalid/suspicious versions in the site-packages directory:"
+		eqawarn "invalid/suspicious names or versions in the site-packages directory:"
 		eqawarn
 		eqatag -v python-site.bad_version "${bad_versions[@]}"
 	fi


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2024-01-08 14:48 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2024-01-08 14:48 UTC (permalink / raw
  To: gentoo-commits

commit:     6d20cb2240f31d928624f6961ad8e7271fb0d567
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jan  5 14:08:52 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jan  8 14:48:16 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6d20cb22

install-qa-check.d: Generalize 60python-{pyc → site}

Rename `60python-pyc` check to `60python-site`, as it will be used
to perform other checks on the site-packages directory.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 .../{60python-pyc => 60python-site}                   | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/metadata/install-qa-check.d/60python-pyc b/metadata/install-qa-check.d/60python-site
similarity index 86%
rename from metadata/install-qa-check.d/60python-pyc
rename to metadata/install-qa-check.d/60python-site
index fe4f3f62c4ef..5f812ecd01e1 100644
--- a/metadata/install-qa-check.d/60python-pyc
+++ b/metadata/install-qa-check.d/60python-site
@@ -1,10 +1,11 @@
-# Copyright 2019-2022 Gentoo Authors
+# Copyright 2019-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
-# QA check: ensure that Python modules are compiled after installing
+# QA checks related to site-packages directory:
+# - missing, mismatched or stray .pyc files
 # Maintainer: Python project <python@gentoo.org>
 
-python_pyc_check() {
+python_site_check() {
 	local save=$(shopt -p nullglob)
 	shopt -s nullglob
 	local progs=( "${EPREFIX}"/usr/lib/python-exec/*/gpep517 )
@@ -69,7 +70,7 @@ python_pyc_check() {
 		eqawarn "not byte-compiled."
 		eqawarn "The following files are missing:"
 		eqawarn
-		eqatag -v python-pyc.missing "${missing[@]}"
+		eqatag -v python-site.pyc.missing "${missing[@]}"
 		found=1
 	fi
 
@@ -79,7 +80,7 @@ python_pyc_check() {
 		eqawarn "that seem to be invalid (do not have the correct header)."
 		eqawarn "The following files are invalid:"
 		eqawarn
-		eqatag -v python-pyc.invalid "${invalid[@]}"
+		eqatag -v python-site.pyc.invalid "${invalid[@]}"
 		found=1
 	fi
 
@@ -88,7 +89,7 @@ python_pyc_check() {
 		eqawarn "QA Notice: This package installs one or more compiled Python modules whose"
 		eqawarn ".py files have different content (size or hash) than recorded:"
 		eqawarn
-		eqatag -v python-pyc.mismatched.data "${mismatched_data[@]}"
+		eqatag -v python-site.pyc.mismatched.data "${mismatched_data[@]}"
 		found=1
 	fi
 
@@ -97,7 +98,7 @@ python_pyc_check() {
 		eqawarn "QA Notice: This package installs one or more compiled Python modules whose"
 		eqawarn ".py files have different timestamps than recorded:"
 		eqawarn
-		eqatag -v python-pyc.mismatched.timestamp "${mismatched_timestamp[@]}"
+		eqatag -v python-site.pyc.mismatched.timestamp "${mismatched_timestamp[@]}"
 		found=1
 	fi
 
@@ -107,7 +108,7 @@ python_pyc_check() {
 		eqawarn "that do not match installed modules (or their implementation)."
 		eqawarn "The following files are stray:"
 		eqawarn
-		eqatag -v python-pyc.stray "${stray[@]}"
+		eqatag -v python-site.pyc.stray "${stray[@]}"
 		found=1
 	fi
 
@@ -118,7 +119,7 @@ python_pyc_check() {
 	fi
 }
 
-python_pyc_check
+python_site_check
 
 : # guarantee successful exit
 


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2024-01-08 14:48 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2024-01-08 14:48 UTC (permalink / raw
  To: gentoo-commits

commit:     6f05bc88c81a42943e5784736d2eb15f63c5ef40
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jan  5 15:52:16 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jan  8 14:48:19 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6f05bc88

install-qa-check.d/60python-site: Add check for wrong libdir

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

 metadata/install-qa-check.d/60python-site | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/metadata/install-qa-check.d/60python-site b/metadata/install-qa-check.d/60python-site
index 3ac1dc91669e..ffc06edf0960 100644
--- a/metadata/install-qa-check.d/60python-site
+++ b/metadata/install-qa-check.d/60python-site
@@ -9,6 +9,10 @@ python_site_check() {
 	local save=$(shopt -p nullglob)
 	shopt -s nullglob
 	local progs=( "${EPREFIX}"/usr/lib/python-exec/*/gpep517 )
+	local bad_libdirs=()
+	[[ $(get_libdir) != lib ]] && bad_libdirs=(
+		"${ED}/usr/$(get_libdir)"/{python3,pypy}*
+	)
 	${save}
 
 	local forbidden_package_names=(
@@ -185,6 +189,14 @@ python_site_check() {
 		# the previous version from distutils-r1
 		#die "Failing install because of stray top-level files in site-packages"
 	fi
+
+	if [[ ${bad_libdirs[@]} ]]; then
+		eqawarn
+		eqawarn "QA Notice: Package installs Python files to /usr/$(get_libdir)"
+		eqawarn "instead of /usr/lib (use \$(python_get_sitedir)):"
+		eqawarn
+		eqatag -v python-site.libdir "${bad_libdirs[@]#${ED}}"
+	fi
 }
 
 python_site_check


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2024-01-08 14:48 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2024-01-08 14:48 UTC (permalink / raw
  To: gentoo-commits

commit:     c80d77f0c503a4e01f7792afb8fcde30164916fe
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jan  5 14:35:10 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jan  8 14:48:17 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c80d77f0

install-qa-check.d/60python-site: Add invalid site-packages check

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60python-site | 47 ++++++++++++++++++++++++++++++-
 1 file changed, 46 insertions(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60python-site b/metadata/install-qa-check.d/60python-site
index 5f812ecd01e1..eb59ad5cac26 100644
--- a/metadata/install-qa-check.d/60python-site
+++ b/metadata/install-qa-check.d/60python-site
@@ -11,12 +11,21 @@ python_site_check() {
 	local progs=( "${EPREFIX}"/usr/lib/python-exec/*/gpep517 )
 	${save}
 
+	local forbidden_package_names=(
+		# NB: setuptools/discovery.py is a good source of ideas
+		benchmark benchmarks dist doc docs examples scripts tasks
+		test tests tools util utils
+		.pytest_cache .hypothesis _trial_temp
+	)
+
 	local invalid=()
 	local mismatched_timestamp=()
 	local mismatched_data=()
 	local missing=()
 	local stray=()
 
+	local stray_packages=()
+
 	# Avoid running the check if sufficiently new gpep517 is not installed
 	# yet. It's valid to schedule (for merge order) >=gpep517-8 after
 	# packages which have this check run if they don't use distutils-r1.
@@ -24,12 +33,33 @@ python_site_check() {
 		return
 	fi
 
+	local f prog
 	for prog in "${progs[@]}"; do
 		local impl=${prog%/*}
 		impl=${impl##*/}
 
 		# NB: using ${impl}* to catch pypy3.* for pypy3
-		[[ -d "${ED}"/usr/lib/${impl}*/site-packages ]] || continue
+		local sitedir=( "${ED}"/usr/lib/${impl}*/site-packages )
+		[[ -d ${sitedir} ]] || continue
+
+		# check for stray files in site-packages
+		while IFS= read -d $'\0' -r f; do
+			stray_packages+=( "${f#${ED}}" )
+		done < <(
+			find "${sitedir}" -maxdepth 1 -type f '!' '(' \
+					-name '*.egg-info' -o \
+					-name '*.pth' -o \
+					-name '*.py' -o \
+					-name '*.pyi' -o \
+					-name "*$(get_modname)" \
+				')' -print0
+		)
+		# check for forbidden packages
+		for f in "${forbidden_package_names[@]}"; do
+			[[ -d ${sitedir}/${f} ]] && stray_packages+=(
+				"${sitedir#${ED}}/${f}"
+			)
+		done
 
 		einfo "Verifying compiled files for ${impl}"
 		local kind pyc py
@@ -117,6 +147,21 @@ python_site_check() {
 		eqawarn "For more information on bytecode files and related issues, please see:"
 		eqawarn "  https://projects.gentoo.org/python/guide/qawarn.html#compiled-bytecode-related-warnings"
 	fi
+
+	if [[ ${stray_packages[@]} ]]; then
+		eqawarn
+		eqawarn "QA Notice: The following unexpected files/directories were found"
+		eqawarn "top-level in the site-packages directory:"
+		eqawarn
+		eqatag -v python-site.stray "${stray_packages[@]}"
+		eqawarn
+		eqawarn "This is most likely a bug in the build system.  More information"
+		eqawarn "can be found in the Python Guide:"
+		eqawarn "https://projects.gentoo.org/python/guide/qawarn.html#stray-top-level-files-in-site-packages"
+		# TODO: make this fatal once we fix the existing issues, and remove
+		# the previous version from distutils-r1
+		#die "Failing install because of stray top-level files in site-packages"
+	fi
 }
 
 python_site_check


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2024-01-08 14:48 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2024-01-08 14:48 UTC (permalink / raw
  To: gentoo-commits

commit:     5b51bdf96d62a2c54460f67de6b8299e63b83e97
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Jan  7 17:10:55 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jan  8 14:48:22 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5b51bdf9

install-qa-check.d/60python-site: Check for deprecated .egg* files

Check for deprecated .egg and .egg-info files.  While at it, fix stray
file check not to barf on *.egg files.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
Closes: https://github.com/gentoo/gentoo/pull/34660
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60python-site | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/metadata/install-qa-check.d/60python-site b/metadata/install-qa-check.d/60python-site
index b130b6768dad..a0a0f4370db2 100644
--- a/metadata/install-qa-check.d/60python-site
+++ b/metadata/install-qa-check.d/60python-site
@@ -31,6 +31,7 @@ python_site_check() {
 	local stray=()
 
 	local bad_versions=()
+	local eggs=()
 	local outside_site=()
 	local stray_packages=()
 
@@ -79,11 +80,22 @@ python_site_check() {
 				')' -print0
 		)
 
+		# check for deprecated egg format
+		while IFS= read -d $'\0' -r f; do
+			eggs+=( "${f#${ED}}" )
+		done < <(
+			find "${sitedir}" -maxdepth 1 '(' \
+				-name '*.egg-info' -o \
+				-name '*.egg' \
+				')' -print0
+		)
+
 		# check for stray files in site-packages
 		while IFS= read -d $'\0' -r f; do
 			stray_packages+=( "${f#${ED}}" )
 		done < <(
 			find "${sitedir}" -maxdepth 1 -type f '!' '(' \
+					-name '*.egg' -o \
 					-name '*.egg-info' -o \
 					-name '*.pth' -o \
 					-name '*.py' -o \
@@ -194,6 +206,14 @@ python_site_check() {
 		eqatag -v python-site.bad_version "${bad_versions[@]}"
 	fi
 
+	if [[ ${eggs[@]} ]]; then
+		eqawarn
+		eqawarn "QA Notice: The following deprecated .egg or .egg-info files were found."
+		eqawarn "Please migrate the ebuild to use the PEP517 build."
+		eqawarn
+		eqatag -v python-site.egg "${eggs[@]}"
+	fi
+
 	if [[ ${stray_packages[@]} ]]; then
 		eqawarn
 		eqawarn "QA Notice: The following unexpected files/directories were found"


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2024-01-08 14:48 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2024-01-08 14:48 UTC (permalink / raw
  To: gentoo-commits

commit:     33d990af2c52a4adb9a50976c324d66c66cd1804
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jan  5 15:39:27 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jan  8 14:48:18 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=33d990af

install-qa-check.d/60python-site: Forbid lib & usr package names

Forbid `lib`, `$(get_libdir)` and `usr` as package names, to catch
accidentally duplicating sitedir as prefix.

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

 metadata/install-qa-check.d/60python-site | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/metadata/install-qa-check.d/60python-site b/metadata/install-qa-check.d/60python-site
index d73c881d3ad1..3ac1dc91669e 100644
--- a/metadata/install-qa-check.d/60python-site
+++ b/metadata/install-qa-check.d/60python-site
@@ -15,6 +15,8 @@ python_site_check() {
 		# NB: setuptools/discovery.py is a good source of ideas
 		benchmark benchmarks dist doc docs examples scripts tasks
 		test tests tools util utils
+		# catch double-prefix installs, e.g. https://bugs.gentoo.org/618134
+		lib $(get_libdir) usr
 		.pytest_cache .hypothesis _trial_temp
 	)
 


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2024-03-29 18:47 Sam James
  0 siblings, 0 replies; 76+ messages in thread
From: Sam James @ 2024-03-29 18:47 UTC (permalink / raw
  To: gentoo-commits

commit:     304ed046251c64dedc3e34e54b3de6e2edbc0f9f
Author:     Eli Schwartz <eschwartz93 <AT> gmail <DOT> com>
AuthorDate: Thu Mar 28 06:34:51 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Mar 29 18:45:09 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=304ed046

metadata/install-qa-check.d: make the FHS paths warning easier to read

 * QA Notice: The ebuild is installing to one or more unexpected paths:
 *
 *   /var/tmp/portage/sys-cluster/legion-9999/image/usr/bin/legion_prof_files
 *   /var/tmp/portage/sys-cluster/legion-9999/image/usr/bin/serializer_examples
 *
 * Please fix the ebuild to use correct FHS/Gentoo policy paths.

This message is hard to understand. Is it saying that the resulting
package contains files prefixed with ${D} which would be immensely
broken? Is it saying that these paths are *directories* and the FHS does
not approve of directories in /usr/bin/*/?

In fact, it's the latter. Fix this in two ways:

- clarify that it's an unexpected directory, not just some kind of path

- strip ${D} so that people can better visualize what sort of path gets
  installed. This has the downside of not being able to copy/paste the
  path in order to inspect the image directory, but I think this is a
  very small downside. Usually by the time you see this message, portage
  has cleaned up. And if it hasn't, you can still copy/paste that from:

  Completed installing sys-cluster/legion-9999 into /var/tmp/portage/sys-cluster/legion-9999/image

Signed-off-by: Eli Schwartz <eschwartz93 <AT> gmail.com>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 metadata/install-qa-check.d/08gentoo-paths | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/metadata/install-qa-check.d/08gentoo-paths b/metadata/install-qa-check.d/08gentoo-paths
index 5b8607fd5f96..0b92a7a1c132 100644
--- a/metadata/install-qa-check.d/08gentoo-paths
+++ b/metadata/install-qa-check.d/08gentoo-paths
@@ -70,9 +70,9 @@ gentoo_path_check() {
 	# report
 	# ------
 	if [[ -n ${bad_paths[@]} ]]; then
-		eqawarn "QA Notice: The ebuild is installing to one or more unexpected paths:"
+		eqawarn "QA Notice: The ebuild is installing to one or more unexpected directories:"
 		eqawarn
-		eqatag -v non-gentoo-paths "${bad_paths[@]}"
+		eqatag -v non-gentoo-paths "${bad_paths[@]#${D%/}}"
 		eqawarn
 		eqawarn "Please fix the ebuild to use correct FHS/Gentoo policy paths."
 	fi


^ permalink raw reply related	[flat|nested] 76+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/
@ 2024-09-05  8:43 Michał Górny
  0 siblings, 0 replies; 76+ messages in thread
From: Michał Górny @ 2024-09-05  8:43 UTC (permalink / raw
  To: gentoo-commits

commit:     ea57bf55bccadeb6fce7a2d49f479cd54ee54d06
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Sep  3 13:07:57 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Sep  5 08:42:19 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ea57bf55

install-qa-check.d: Exclude dev-python/python-tests from sitedir

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 metadata/install-qa-check.d/60python-site | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/metadata/install-qa-check.d/60python-site b/metadata/install-qa-check.d/60python-site
index a0a0f4370db2..facfb54f1b3c 100644
--- a/metadata/install-qa-check.d/60python-site
+++ b/metadata/install-qa-check.d/60python-site
@@ -53,7 +53,7 @@ python_site_check() {
 
 		# check for packages installing outside site-packages
 		case ${CATEGORY}/${PN} in
-			dev-lang/python|dev-python/pypy*)
+			dev-lang/python|dev-python/pypy*|dev-python/python-tests)
 				;;
 			*)
 				while IFS= read -d $'\0' -r f; do


^ permalink raw reply related	[flat|nested] 76+ messages in thread

end of thread, other threads:[~2024-09-05  8:43 UTC | newest]

Thread overview: 76+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-05-05 23:38 [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/ Sam James
  -- strict thread matches above, loose matches on Subject: below --
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-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 11:12 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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox