summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2023-08-06 15:05:52 +0200
committerMichał Górny <mgorny@gentoo.org>2023-08-08 11:07:14 +0200
commitbafc7b5a1fc937b08a67be7c628f225674a3303d (patch)
tree90f49b2f90e8d21d82d5f7e956570e02d0ff8066 /eclass/python-utils-r1.eclass
parentdev-lang/spidermonkey: Stabilize 102.10.0 ppc, #904355 (diff)
downloadgentoo-bafc7b5a1fc937b08a67be7c628f225674a3303d.tar.gz
gentoo-bafc7b5a1fc937b08a67be7c628f225674a3303d.tar.bz2
gentoo-bafc7b5a1fc937b08a67be7c628f225674a3303d.zip
python-utils-r1.eclass: Eliminate false positives from occluded check
Modify the occluded package check to unidirectionally check for additional files in installed package directory. This eliminates false positives when the source directory contains additional files, in particular C sources. This change also eliminates the dependency on diff(1), in favor of comm(1). As a side effect, we no longer compare .py files for equality but that shouldn't be such a big deal. Closes: https://github.com/gentoo/gentoo/pull/32195 Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'eclass/python-utils-r1.eclass')
-rw-r--r--eclass/python-utils-r1.eclass29
1 files changed, 20 insertions, 9 deletions
diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass
index 690b8ba8c79b..2fffd6d56bf5 100644
--- a/eclass/python-utils-r1.eclass
+++ b/eclass/python-utils-r1.eclass
@@ -1246,14 +1246,13 @@ _python_check_occluded_packages() {
# positives before filing bugs.
[[ ! ${PYTHON_EXPERIMENTAL_QA} ]] && return
- type -P diff &>/dev/null || return
[[ -z ${BUILD_DIR} || ! -d ${BUILD_DIR}/install ]] && return
local sitedir="${BUILD_DIR}/install$(python_get_sitedir)"
# avoid unnecessarily checking if we are inside install dir
[[ ${sitedir} -ef . ]] && return
- local f fn diff
+ local f fn diff l
for f in "${sitedir}"/*/; do
f=${f%/}
fn=${f##*/}
@@ -1262,17 +1261,29 @@ _python_check_occluded_packages() {
[[ ${fn} == *.dist-info || ${fn} == *.egg-info ]] && continue
if [[ -d ${fn} ]]; then
- diff=$(diff -dupr -x "__pycache__" "${fn}" "${sitedir}/${fn}")
+ diff=$(
+ comm -1 -3 <(
+ find "${fn}" -type f -not -path '*/__pycache__/*' |
+ sort
+ assert
+ ) <(
+ cd "${sitedir}" &&
+ find "${fn}" -type f -not -path '*/__pycache__/*' |
+ sort
+ assert
+ )
+ )
+
if [[ -n ${diff} ]]; then
eqawarn "The directory ${fn} occludes package installed for ${EPYTHON}."
- echo
- echo ">>> Diff:"
- echo "${diff}"
- echo "<<< End-of-diff"
- echo
+ eqawarn "The installed package includes additional files:"
+ eqawarn
+ while IFS= read -r l; do
+ eqawarn " ${l}"
+ done <<<"${diff}"
+ eqawarn
if [[ ! ${_PYTHON_WARNED_OCCLUDED_PACKAGES} ]]; then
- eqawarn "The complete build log includes diffs."
eqawarn "For more information on occluded packages, please see:"
eqawarn "https://projects.gentoo.org/python/guide/test.html#importerrors-for-c-extensions"
_PYTHON_WARNED_OCCLUDED_PACKAGES=1