From 390f3fabda173207abbfc8cb085db7522099ae9e Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Fri, 21 Aug 2026 00:29:40 -0400 Subject: [PATCH] [ADD] the seven tools stage 2 asked for by name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Six built on the host. libxslt will not: its configure demands libxml2 2.15.1 and Ubuntu ships 2.14.5. Ours is 2.15.3 and exists only inside the stage-2 chroot, so that chroot is the only place libxslt can come from -- built BY stage 2 rather than installed into it, and hoisted so it precedes shadow, which died on `xsltproc is missing`. That is a shape worth naming: a package the host cannot build because the host is behind. Not contamination and not a closure gap -- the wrong machine. Three more tools were asked for and refused: po4a for fakeroot, a2x for ca-certificates, asciidoctor for cryptsetup. Perl, Python and Ruby respectively, each to render a man page. Hooks instead. --- FR --- Six se bâtissent sur l'hôte. Pas libxslt : son configure exige libxml2 2.15.1 et Ubuntu livre 2.14.5. Le nôtre est en 2.15.3 et n'existe que dans le chroot de l'étage 2 : ce chroot est donc le seul endroit d'où libxslt puisse venir — bâti PAR l'étage 2 plutôt qu'installé dedans, et hissé pour précéder shadow, mort sur `xsltproc is missing`. La forme mérite un nom : un paquet que l'hôte ne peut pas bâtir parce que l'hôte est en retard. Ni contamination ni trou de fermeture — la mauvaise machine. Trois autres outils réclamés et refusés : po4a pour fakeroot, a2x pour ca-certificates, asciidoctor pour cryptsetup. Perl, Python et Ruby respectivement, chacun pour rendre une page de manuel. Des hooks à la place. Assisted-by: Claude Opus 5 --- scripts/build-stage2.sh | 20 ++++++++++++++++++-- scripts/packages.sh | 13 +++++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/scripts/build-stage2.sh b/scripts/build-stage2.sh index 832812c..6e581c0 100755 --- a/scripts/build-stage2.sh +++ b/scripts/build-stage2.sh @@ -72,7 +72,18 @@ CHROOT_PKGS=( # libxslt shadow, for xsltproc # swig audit # help2man flex - gperf wget patchelf inetutils libxslt swig help2man + # + # libxslt is NOT here, and cannot be: it will not build on the host at all. + # + # configure: error: Version 2.14.5 found. You need at least libxml2 + # 2.15.1 for this version of libxslt + # + # 2.14.5 is Ubuntu's libxml2. Ours is 2.15.3 -- and it exists only inside + # this chroot, which is the one place libxslt can be built. So it is built + # BY stage 2 rather than installed into it, which is why it sits in + # STAGE2_FIRST instead. Listing it here would fail make_rootfs with "target + # not found" against a repository that will never contain it. + gperf wget patchelf inetutils swig help2man # libxcrypt-compat, for a reason no declaration expresses. perl declares # `libxcrypt` and `libcrypt.so`, both satisfied by libxcrypt, which ships # libcrypt.so.2. But perl's BINARY was linked on the host against Ubuntu's @@ -452,7 +463,12 @@ NOTE # STAGE1_PACKAGES, and rebuild() skips anything already in stage2.state. The # list is prepended rather than reordered, so stage 1's order stays the single # statement of the closure. -STAGE2_FIRST=(texinfo) +# libxslt -- shadow died on `configure: error: xsltproc is missing.` and +# libxslt cannot be built on the host: its configure demands libxml2 2.15.1 +# and Ubuntu ships 2.14.5. Ours is 2.15.3 and lives only in here, so this is +# the only place libxslt can come from -- built by stage 2, not installed +# into it. It has to precede shadow, which the list order does not do. +STAGE2_FIRST=(texinfo libxslt) STAGE2_SKIP_HOOKS=(libgcrypt git meson libarchive) diff --git a/scripts/packages.sh b/scripts/packages.sh index 4ebb121..f5ea85c 100644 --- a/scripts/packages.sh +++ b/scripts/packages.sh @@ -210,7 +210,7 @@ STAGE1_PACKAGES=( # wget sed, grep, findutils # patchelf curl # hostname gnupg (inetutils ships it) - # xsltproc shadow (libxslt ships it) + # xsltproc shadow (libxslt ships it -- see below) # swig audit # help2man flex # @@ -223,7 +223,16 @@ STAGE1_PACKAGES=( wget patchelf inetutils - libxslt swig help2man + # libxslt stays in the list because it is part of the distribution, but + # STAGE 1 CANNOT BUILD IT: + # + # configure: error: Version 2.14.5 found. You need at least libxml2 + # 2.15.1 for this version of libxslt + # + # 2.14.5 is Ubuntu's. Ours is 2.15.3 and exists only inside the stage-2 + # chroot, so that is the only place libxslt can come from -- it is in + # STAGE2_FIRST, and a stage-1 run is expected to report it as failed. + libxslt )