pacman's resolver named 70 unresolved dependencies. Excluding python-brotli alone took that to 47 and removed `python` outright, with libffi, mpdecimal and gdbm behind it. python-libseccomp would have re-admitted the same tree, and nothing across 135 packages depends on either. Both wheels are unusable on the target anyway: built by the host's python 3.13, ABI-tagged cpython-313, while Arch ships 3.14. Stage 2 produces real ones. systemd-ukify is different -- it is architectural. ukify assembles a PE binary and its EFI_ARCH_MAP has no s390x entry, so guess_efi_arch() raises ValueError on this machine. Shipping it would put a program in the repository that cannot start. systemd-tests followed it out: a test suite behind --nocheck, and the only reason five more python packages were wanted. The dropped artefacts were still indexed in core.db afterwards. repo-add only adds, so a sub-package removed from pkgname leaves its last build installable forever. Removed by hand; TODO.md records the gap. --- FR --- Le résolveur de pacman nommait 70 dépendances non résolues. Écarter le seul python-brotli a ramené le compte à 47 et retiré `python` d'un coup, avec libffi, mpdecimal et gdbm derrière. python-libseccomp aurait réadmis le même arbre, et rien parmi 135 paquets ne dépend de l'un ou de l'autre. Les deux roues sont de toute façon inutilisables sur la cible : bâties par le python 3.13 de l'hôte, marquées cpython-313, quand Arch livre la 3.14. L'étage 2 en produira de vraies. systemd-ukify est d'une autre nature — architectural. ukify assemble un binaire PE et son EFI_ARCH_MAP n'a pas d'entrée s390x : guess_efi_arch() lève donc ValueError sur cette machine. Le livrer mettrait au dépôt un programme incapable de démarrer. systemd-tests l'a suivi : une suite de tests derrière --nocheck, et la seule raison de réclamer cinq paquets python de plus. Les artefacts écartés restaient indexés dans core.db. repo-add n'ajoute que : un sous-paquet retiré de pkgname laisse sa dernière compilation installable à jamais. Retirés à la main ; TODO.md consigne le manque. Assisted-by: Claude Opus 5
36 lines
1.7 KiB
Bash
Executable file
36 lines
1.7 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# libseccomp: the python sub-package ships into /usr/local.
|
|
#
|
|
# usr/local/lib/python3.13/dist-packages/...
|
|
#
|
|
# Debian patches sysconfig to prefer its posix_local scheme, so
|
|
# `python -m installer` puts the wheel under /usr/local -- a tree an Arch
|
|
# package may not ship at all. Nothing fails: makepkg exits 0 and the audit
|
|
# is what notices.
|
|
#
|
|
# THE SAME DECISION AS python-brotli, for the same measured reason. Nothing in
|
|
# the repository depends on python-libseccomp -- checked across all 135
|
|
# packages -- and keeping it would pull `python` back into the closure, with
|
|
# libffi, mpdecimal and gdbm behind it. That closure was deliberately removed
|
|
# when python-brotli was dropped; re-admitting it for a binding no package
|
|
# asks for would undo the measurement.
|
|
#
|
|
# And the module would not work anyway: the wheel is built by the host's
|
|
# python 3.13 and ABI-tagged cpython-313, while Arch ships 3.14. Stage 2 is
|
|
# what produces a usable one.
|
|
#
|
|
# build() still builds the wheel -- it is one function for both sub-packages
|
|
# -- and the result is simply not packaged. package_python-libseccomp() stays
|
|
# in the file, uncalled, like package_libquadmath() in gcc.
|
|
set -euo pipefail
|
|
python3 - <<'PY'
|
|
import io
|
|
s = io.open("PKGBUILD", encoding="utf-8").read()
|
|
old = "pkgname=(libseccomp python-libseccomp)"
|
|
assert s.count(old) == 1, "libseccomp: pkgname line not in the expected form"
|
|
s = s.replace(old, "pkgname=(libseccomp)", 1)
|
|
io.open("PKGBUILD", "w", encoding="utf-8").write(s)
|
|
PY
|
|
grep -q '^pkgname=(libseccomp)$' PKGBUILD || {
|
|
echo "libseccomp: python sub-package not dropped" >&2; exit 1; }
|
|
echo "libseccomp: python-libseccomp dropped (would re-admit the python closure)"
|