summaryrefslogtreecommitdiff
path: root/metadata/install-qa-check.d
AgeCommit message (Collapse)Author
2025-08-13install-qa-check.d/60cargo-eclass: check min verison for 'rust-version='Arthur Zamarin
Another way Cargo.toml can specify the minimum Rust version is using the 'rust-version=' field. This commit adds a check for that field, and updates the required minimum Rust version accordingly. Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
2025-08-13install-qa-check.d/60cargo-eclass: scan over ${WORKDIR}Arthur Zamarin
There is a possibility that the current packages uses dependencies which require a newer version of Rust than the one listed in ${S}. For those cases, scan over the full ${WORKDIR} directory tree instead of just ${S}. Maybe it will introduce false positives, for crates which are included but not used during real compilation, but it is better than missing a dependency which requires a newer version of Rust. Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
2025-06-01install-qa-check.d: Add namespace package check to 60python-siteMichał Górny
Add an explicit check for deprecated pkg_resources namespace packages to 60python-site. The eclass handled the most common case of installing them via the deprecated `namespace_packages` setuptools key, but it does not handle packages that worked around the deprecation warning by installing the file manually, or ebuilds that did strip `namespace_packages` to silence the setuptools deprecation warning. Signed-off-by: Michał Górny <mgorny@gentoo.org> Part-of: https://github.com/gentoo/gentoo/pull/42318 Closes: https://github.com/gentoo/gentoo/pull/42318 Signed-off-by: Michał Górny <mgorny@gentoo.org>
2025-04-19metadata/install-qa-check.d: fix python checks for non-distutils softwareEli Schwartz
The existing check makes an intimidating value proposition: that all software being checked was installed using distutils-r1.eclass, hence moving the check from there as-is to a new home is sufficient. This includes the use of functions specific to the distutils-r1 eclass inheritance chain. In particular, get_modname is part of multilib.eclass, which distutils-r1 inherits, but python-single-r1 does not inherit. This results in the following QA warning: ``` /var/db/repos/gentoo/metadata/install-qa-check.d/60python-site: line 53: get_modname: command not found /var/db/repos/gentoo/metadata/install-qa-check.d/60python-site: line 53: get_modname: command not found /var/db/repos/gentoo/metadata/install-qa-check.d/60python-site: line 53: get_modname: command not found * Verifying compiled files for python3.12 * * QA Notice: Extensions found compiled for the wrong Python version * (likely broken build isolation): * * /usr/lib/python3.12/site-packages/__pycache__/init_calibre.cpython-312.pyc * /usr/lib/python3.12/site-packages/__pycache__/init_calibre.cpython-312.opt-1.pyc * /usr/lib/python3.12/site-packages/__pycache__/init_calibre.cpython-312.opt-2.pyc ``` because we are matching all files matching "*.cpython*" that are also named "*" instead of all files named "*$(get_modname)". Instead of using multilib.eclass, go directly to the preferred canonical source, and query cpython what *it* thinks a module extension should be. This is also more flexible since cpython itself doesn't really guarantee that extension modules are named anything like get_modname, but generally equals -- for backwards compatibility -- the final value from `_PyImport_DynLoadFiletab` / `_imp.extension_suffixes()` (and on Windows, that is .pyd instead of .dll, though admittedly, sysconfig.get_config_vars is pretty empty there; on the other hand, PyPy doesn't recognize unadorned .so because it doesn't need the compatibility, so we see that it's not really a guarantee, and might as well go for the sysconfig variable which is unambiguous where present). Signed-off-by: Eli Schwartz <eschwartz@gentoo.org> Signed-off-by: Sam James <sam@gentoo.org>
2025-04-18metadata/install-qa-check.d: Fix impl matching in 60python-siteMichał Górny
Fix Python implementation matching code to special-case pypy3 rather than generally applying a glob that caused impl of `python3.13` to match directory for `python3.13t`. Signed-off-by: Michał Górny <mgorny@gentoo.org>
2025-04-18metadata/install-qa-check.d: Check for missing RUST_MIN_VER for edition=2024Arthur Zamarin
Closes: https://github.com/gentoo/gentoo/pull/41578 Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
2025-04-16metadata/install-qa-check.d: Update comment in 60python-siteMichał Górny
Signed-off-by: Michał Górny <mgorny@gentoo.org> Closes: https://github.com/gentoo/gentoo/pull/41573 Signed-off-by: Michał Górny <mgorny@gentoo.org>
2025-04-16metadata/install-qa-check.d: Check for Python exts for wrong implMichał Górny
Add a QA check for Python extensions that were compiled for the wrong implementation. This is particularly a case when build is not properly isolated and extensions built for earlier Python versions end up being included in the subsequent installs. Bug: https://bugs.gentoo.org/953558 Signed-off-by: Michał Górny <mgorny@gentoo.org>
2024-10-21install-qa-check.d: Exclude dev-lang/pypy from checksMichał Górny
Pull-Request: https://github.com/gentoo/gentoo/pull/39042 Signed-off-by: Michał Górny <mgorny@gentoo.org>
2024-10-14install-qa-check.d: Support dev-lang/python-freethreadingMichał Górny
Signed-off-by: Michał Górny <mgorny@gentoo.org>
2024-09-05install-qa-check.d: Exclude dev-python/python-tests from sitedirMichał Górny
Signed-off-by: Michał Górny <mgorny@gentoo.org>
2024-03-29metadata/install-qa-check.d: make the FHS paths warning easier to readEli Schwartz
* 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@gmail.com> Signed-off-by: Sam James <sam@gentoo.org>
2024-01-08install-qa-check.d/60python-site: Check for deprecated .egg* filesMichał Górny
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@gentoo.org> Closes: https://github.com/gentoo/gentoo/pull/34660 Signed-off-by: Michał Górny <mgorny@gentoo.org>
2024-01-08install-qa-check.d/60python-site: allow site-packages/README.txtMichał Górny
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@gentoo.org>
2024-01-08install-qa-check.d/60python-site: Check for out-of-sitepkg installMichał Górny
Signed-off-by: Michał Górny <mgorny@gentoo.org>
2024-01-08install-qa-check.d/60python-site: Check for UNKNOWN package nameMichał Górny
Bug: https://bugs.gentoo.org/836765 Signed-off-by: Michał Górny <mgorny@gentoo.org>
2024-01-08install-qa-check.d/60python-site: Add check for wrong libdirMichał Górny
Bug: https://bugs.gentoo.org/702016 Bug: https://bugs.gentoo.org/770961 Signed-off-by: Michał Górny <mgorny@gentoo.org>
2024-01-08install-qa-check.d/60python-site: Forbid lib & usr package namesMichał Górny
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@gentoo.org>
2024-01-08install-qa-check.d/60python-site: Add bad version checkMichał Górny
This was a case e.g. with =dev-python/pyrqlite-2.2.0. Signed-off-by: Michał Górny <mgorny@gentoo.org>
2024-01-08install-qa-check.d/60python-site: Add invalid site-packages checkMichał Górny
Signed-off-by: Michał Górny <mgorny@gentoo.org>
2024-01-08install-qa-check.d: Generalize 60python-{pyc → site}Michał Górny
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@gentoo.org>
2023-08-17metadata/install-qa-check.d: Check for subdirs in /bin and its friendsUlrich Müller
Bug: https://bugs.gentoo.org/912354 Signed-off-by: Ulrich Müller <ulm@gentoo.org>
2023-05-17install-qa-check.d: Fix 60python-pyc to test pypy3.* as wellMichał Górny
Signed-off-by: Michał Górny <mgorny@gentoo.org>
2022-09-19metadata/install-qa-check.d: don't use nonfatal on older EAPIs in 60python-pycSam James
Bug: https://bugs.gentoo.org/869182 Fixes: c310e44692ad91777c71394dda97cd1f33f72589 Signed-off-by: Sam James <sam@gentoo.org>
2022-08-21metadata/install-qa-check.d: add 60noop-testsuitesmatoro
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@gentoo.org>
2022-08-05metadata/install-qa-check.d: don't fail if has_version diedSam James
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@gentoo.org>
2022-08-03metadata/install-qa-check.d: only check images w/ site-packagesSam James
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@gentoo.org>
2022-08-03metadata/install-qa-check.d: drop -b from has_version in 60python-pycSam James
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@gentoo.org>
2022-08-03metadata/install-qa-check.d: skip 60python-pc if gpep517 too oldSam James
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@gentoo.org>
2022-08-02install-qa-check.d: Rewrite 60python-pyc to use gpep517Michał Górny
Signed-off-by: Michał Górny <mgorny@gentoo.org>
2022-07-16install-qa-check.d: Enable 60python-pyc in EAPI 8Michał Górny
Signed-off-by: Michał Górny <mgorny@gentoo.org>
2022-06-07install-qa-check.d/60udev-eclass: check for udev_reload in pkg_postrmMike Gilbert
Bug: https://bugs.gentoo.org/847436 Signed-off-by: Mike Gilbert <floppym@gentoo.org>
2022-05-06metadata/install-qa-check.d: further fix 60libtool-la library checkIonen Wolkens
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@gentoo.org>
2022-05-06metadata/install-qa-check.d: fix check for static library in 60libtool-laSam James
Thanks-to: Ionen Wolkens <ionen@gentoo.org> Signed-off-by: Sam James <sam@gentoo.org>
2022-05-02metadata/install-qa-check.d: add missing whitespace in 60udev-eclassAgostino Sarubbo
Signed-off-by: Agostino Sarubbo <ago@gentoo.org>
2022-04-30metadata/install-qa-check.d: add new QA check for udev rulesSam James
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@gentoo.org>
2022-04-28metadata/install-qa-check.d: fix minor typo in commentSam James
Signed-off-by: Sam James <sam@gentoo.org>
2022-04-27metadata/install-qa-check.d: avoid -d'' in readarraySam James
Needs newer Bash. Signed-off-by: Sam James <sam@gentoo.org>
2022-04-27metadata/install-qa-check.d: try to silence libtool-la stderrSam James
Signed-off-by: Sam James <sam@gentoo.org>
2022-04-26metadata/install-qa-check.d: use readarraySam James
Otherwise we end up not splitting correctly in the loop over files (file contains two entries). Signed-off-by: Sam James <sam@gentoo.org>
2022-04-19metadata/install-qa-check.d: clarify QA warningSam James
Signed-off-by: Sam James <sam@gentoo.org>
2022-04-19Revert "metadata/install-qa-check.d: swap libltdl check to 'has'"Sam James
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@gentoo.org>
2022-04-17metadata/install-qa-check.d: swap libltdl check to 'has'Sam James
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@gentoo.org> Signed-off-by: Sam James <sam@gentoo.org>
2022-04-17metadata/install-qa-check.d: add 60libtool-la (check for unnecessary .la files)Sam James
Signed-off-by: Sam James <sam@gentoo.org>
2022-03-04metadata/install-qa-check.d: update 60python-pyc to refer to Python guideSam James
Signed-off-by: Sam James <sam@gentoo.org>
2022-03-04metadata/install-qa-check.d: fix 60gtk-doc-paths check for EAPI 7+Sam James
Signed-off-by: Sam James <sam@gentoo.org>
2022-02-01metadata/install-qa-check.d: drop 60distutils-use-setuptools againMike Gilbert
Bug: https://bugs.gentoo.org/832446 Signed-off-by: Mike Gilbert <floppym@gentoo.org>
2022-01-31metadata/install-qa-check.d: add stub for 60distutils-use-setuptoolsMike Gilbert
Work around broken rsync master script. Bug: https://bugs.gentoo.org/832446 Signed-off-by: Mike Gilbert <floppym@gentoo.org>
2022-01-16install-qa-check.d: Remove 60distutils-use-setuptoolsMichał Górny
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@gentoo.org>
2021-08-19metadata/install-qa-check.d: skip some checks when TMPFILES_OPTIONAL is setSam James
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@gentoo.org>