[FIX] --nodeps once skips versions, not dependencies

Two install commands passed one --nodeps and looked like they were skipping
dependencies. pacman documents the difference: -d skips dependency VERSION
checks, -dd skips them entirely. So cython could not be installed --

  warning: cannot resolve python-pygments, a dependency of cython
  :: unable to satisfy dependency python-numpy required by cython

-- and the numbers matter. cython is wanted here only as a BUILD tool, for
libseccomp Python binding, while its declared RUNTIME dependencies are numpy and
pygments, and numpy brings BLAS and LAPACK. A single -d nearly bought a numerical
stack to compile one .pyx file.

The message named numpy and numpy was not the subject. The subject was a missing
letter d.

python-poetry-core joins the list: the fourth Python build backend needed here
after flit_core, setuptools and hatchling.

--- FR ---

Deux commandes d installation passaient un seul --nodeps et semblaient sauter les
dependances. pacman documente la difference : -d saute les controles de VERSION,
-dd les saute entierement. cython ne pouvait donc pas etre installe --

  warning: cannot resolve python-pygments, a dependency of cython
  :: unable to satisfy dependency python-numpy required by cython

-- et les chiffres comptent. cython n est voulu ici que comme OUTIL de
construction, pour la liaison Python de libseccomp, alors que ses dependances d
EXECUTION declarees sont numpy et pygments, et numpy tire BLAS et LAPACK. Un seul
-d a failli faire compiler une pile numerique pour un fichier .pyx.

Le message nommait numpy, et numpy n etait pas le sujet. Le sujet etait un d
manquant.

python-poetry-core rejoint la liste : quatrieme moteur de construction Python
necessaire ici, apres flit_core, setuptools et hatchling.

Assisted-by: Claude Opus 5
This commit is contained in:
Mathieu Benoit 2026-08-23 20:47:32 -04:00
parent 0963698d4b
commit fceb5936a5
2 changed files with 25 additions and 3 deletions

View file

@ -221,6 +221,19 @@ EOF
# invocation, so resuming has to be correct rather than approximately
# correct.
#
# --nodeps TWICE, which is not a typo. pacman documents it: `-d` skips
# dependency VERSION checks, `-dd` skips dependency checks entirely. With
# one, cython could not be installed --
#
# warning: cannot resolve "python-pygments", a dependency of "cython"
# :: unable to satisfy dependency 'python-numpy' required by cython
#
# -- and the numbers matter: cython is wanted here only as a BUILD tool for
# libseccomp's Python binding, and its declared runtime dependencies are
# numpy and pygments. numpy brings BLAS and LAPACK. A single -d looked like
# it was skipping dependencies and was only skipping their versions, which
# nearly bought an entire numerical stack to compile one .pyx file.
#
# --nodeps for the same reason the per-package install uses it: a chroot
# halfway through stage 2 is a mixed population, some packages declaring
# versioned soname dependencies and some declaring names. -U is fed the
@ -284,7 +297,7 @@ EOF
fi
if [ "${#back[@]}" -gt 0 ]; then
sudo pacman --root "$ROOT" --config "$CONF" --cachedir "$CACHE" \
--noconfirm --nodeps -U "${back[@]}" \
--noconfirm --nodeps --nodeps -U "${back[@]}" \
> "$WORK/stage2-restore.txt" 2>&1 \
|| { tail -20 "$WORK/stage2-restore.txt" >&2; die "restoring stage-2 output failed"; }
printf ' %s stage-2 package(s) restored\n' "${#back[@]}"
@ -737,7 +750,7 @@ STAGE2_FIRST=(texinfo libxml2 binutils pkgconf wget libxslt
python-packaging python-pyproject-hooks python-build
python-installer python-setuptools python-wheel
python-setuptools-scm python-markupsafe python-jinja
python-pkgconfig cython)
python-pkgconfig cython python-poetry-core)
# Packages the chroot needs that can only come from repo2.
#
@ -799,6 +812,7 @@ CHROOT_STAGE2_PKGS=(
python-installer python-setuptools python-wheel
python-setuptools-scm
python-markupsafe python-jinja python-pkgconfig cython
python-poetry-core
)
# Packages whose sources must be extracted on the HOST, because the chroot
@ -1012,7 +1026,7 @@ stage2_build() {
return 0
fi
sudo pacman --root "$ROOT" --config "$CONF2" --cachedir "$CACHE" \
--noconfirm --nodeps -U "${keep[@]}" > "$WORK/stage2-inst-$name.txt" 2>&1 || {
--noconfirm --nodeps --nodeps -U "${keep[@]}" > "$WORK/stage2-inst-$name.txt" 2>&1 || {
tail -10 "$WORK/stage2-inst-$name.txt" >&2; return 1; }
printf ' installed %s package(s)\n' "${#produced[@]}"

View file

@ -311,6 +311,14 @@ STAGE1_PACKAGES=(
# is an input to the build. First entry in this port whose absence is neither
# a program nor a library.
publicsuffix-list
# python-poetry-core: the fourth Python build backend this port has needed.
# python-pkgconfig stops on
#
# ERROR Backend 'poetry.core.masonry.api' is not available.
#
# flit_core, setuptools, hatchling and now poetry-core -- each package picks
# its own, and each one has to exist before that package can be built.
python-poetry-core
# libaio: a real closure gap. lvm2 stops on
#
# device/bcache.c:30:10: fatal error: libaio.h: No such file or directory