[FIX] help2man was uninstallable, which stopped the whole pass

Stage-2 pass two never reached its first package:

  unable to satisfy dependency 'perl-locale-gettext' required by help2man
  stage2: populate failed

help2man had built cleanly the moment before. Stage 1 builds with --nodeps, so
a successful build says nothing about whether the repository is complete -- and
this is the failure that says it out loud, by refusing to assemble the chroot.

Asked the resolver for the whole closure rather than fixing one name and trying
again: pacman stops at the first unsatisfiable dependency, so the count matters
more than the first line. One gap, then 148 packages resolved with --nodeps off,
up from 101 before the tools went in.

--- FR ---

La deuxième passe de l'étage 2 n'a jamais atteint son premier paquet :

  unable to satisfy dependency 'perl-locale-gettext' required by help2man
  stage2: populate failed

help2man venait de se bâtir sans une erreur. L'étage 1 bâtit avec --nodeps :
une construction réussie ne dit rien de la complétude du dépôt — et voici
l'échec qui le dit tout haut, en refusant d'assembler le chroot.

Le résolveur a été interrogé sur toute la fermeture, plutôt que de corriger un
nom et de réessayer : pacman s'arrête au premier manque, donc le compte importe
plus que la première ligne. Un seul trou, puis 148 paquets résolus avec --nodeps
éteint, contre 101 avant l'ajout des outils.

Assisted-by: Claude Opus 5
This commit is contained in:
Mathieu Benoit 2026-08-21 00:33:07 -04:00
parent 390f3fabda
commit c164b59ca6
2 changed files with 58 additions and 0 deletions

48
TODO.md
View file

@ -212,6 +212,54 @@ target grows a graphics stack.
## Architectural
### The baseline CPU is z13 — decided, not inherited
`makepkg.conf` in the stage-2 chroot and `--with-arch` in `patches/pkgbuild/gcc.sh`.
zlib stopped on
contrib/crc32vx/crc32_vx.c:205:10: error:
'__builtin_s390_vec_unpackl' requires '-mvx'
*after* its own configure had detected vector support and defined
`-DHAVE_S390X_VX`. Both halves were right, which is what made it worth
measuring rather than patching:
| | `--with-arch` | default `-march` |
|---|---|---|
| host gcc (Ubuntu) | `z13`, tune `z16` | `arch11` = z13, 2015 |
| our gcc | *nothing* | `arch5` = z900, **2000** |
Arch's PKGBUILD names no s390x baseline because Arch has no s390x, so GCC fell
back to the oldest machine the target could possibly be. Every distribution
picks one of these. **This port had never said which, and silence chose the year
2000.**
z13 because that is what Ubuntu s390x — the host distribution — already
requires: adopting it cannot stop anything from running that runs today.
**Two places, two different questions.** `makepkg.conf` says how this
distribution is *compiled*. gcc's `--with-arch` says what the compiler we
*ship* assumes when someone builds on the target with no flags at all. Setting
only the first leaves a gcc that quietly reverts to arch5.
### A third failure shape: the host is behind
Contamination and closure gaps were the two known kinds. libxslt is neither:
configure: error: Version 2.14.5 found. You need at least libxml2 2.15.1
2.14.5 is Ubuntu's libxml2; ours is 2.15.3. Nothing is contaminated and nothing
is missing — the package simply cannot be built on this host, at any point,
because the host is older than the package requires. It is built BY stage 2
instead of installed into it, and hoisted in `STAGE2_FIRST` so it precedes the
package that needs it. A stage-1 run is *expected* to report it as failed.
Worth watching for: any Arch package whose dependency floor has moved past
Ubuntu's version belongs in this category, and the error will always read like
a missing dependency rather than an old one.
Nothing to restore here. Listed so nobody spends an afternoon rediscovering
why.

View file

@ -225,6 +225,16 @@ STAGE1_PACKAGES=(
inetutils
swig
help2man
# help2man's own closure. Stage 1 builds with --nodeps, so help2man built
# cleanly and was then UNINSTALLABLE -- populate stopped the whole of stage-2
# pass two on
#
# unable to satisfy dependency 'perl-locale-gettext' required by help2man
#
# which is the routine consequence of --nodeps and the reason RESOLVE exists
# in test-chroot.sh: a build succeeding says nothing about whether the
# repository is complete.
perl-locale-gettext
# libxslt stays in the list because it is part of the distribution, but
# STAGE 1 CANNOT BUILD IT:
#