From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <gentoo-commits+bounces-1588634-garchives=archives.gentoo.org@lists.gentoo.org> Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 9F6E7158451 for <garchives@archives.gentoo.org>; Mon, 8 Jan 2024 14:48:34 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 2EB5A2BC016; Mon, 8 Jan 2024 14:48:33 +0000 (UTC) Received: from smtp.gentoo.org (dev.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id CABE22BC02B for <gentoo-commits@lists.gentoo.org>; Mon, 8 Jan 2024 14:48:32 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id E9CCA343324 for <gentoo-commits@lists.gentoo.org>; Mon, 8 Jan 2024 14:48:31 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 5382B14B1 for <gentoo-commits@lists.gentoo.org>; Mon, 8 Jan 2024 14:48:30 +0000 (UTC) From: "Michał Górny" <mgorny@gentoo.org> To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Michał Górny" <mgorny@gentoo.org> Message-ID: <1704725297.c80d77f0c503a4e01f7792afb8fcde30164916fe.mgorny@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: metadata/install-qa-check.d/ X-VCS-Repository: repo/gentoo X-VCS-Files: metadata/install-qa-check.d/60python-site X-VCS-Directories: metadata/install-qa-check.d/ X-VCS-Committer: mgorny X-VCS-Committer-Name: Michał Górny X-VCS-Revision: c80d77f0c503a4e01f7792afb8fcde30164916fe X-VCS-Branch: master Date: Mon, 8 Jan 2024 14:48:30 +0000 (UTC) Precedence: bulk List-Post: <mailto:gentoo-commits@lists.gentoo.org> List-Help: <mailto:gentoo-commits+help@lists.gentoo.org> List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org> List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org> List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org> X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: da1709fc-06e6-4765-af26-0592891e7b62 X-Archives-Hash: 13445efec5989ece258e8d8859cbcdf3 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