archlinux-s390x/patches/pkgbuild
Mathieu Benoit 327ff55665 [ADD] llvm and clang, with Sphinx off, for Rust
Rust is not optional. ERPLibre's poetry.lock requires cryptography 46.0.5 with
optional = false, plus jiter, orjson, pydantic-core and rpds-py -- all of which
build Rust from source where no wheel exists, and none exists for s390x. Without
Rust, `pip install cryptography` fails and ERPLibre does not start.

The bootstrap cycle is not the obstacle it looks like: rust-1.90.0 ships an
official s390x-unknown-linux-gnu tarball, verified with HTTP 200, and the host
already carries rustc 1.85.1. What costs is llvm and clang.

Measured before choosing, the way glib2 and iproute2 were: beyond what this port
already has, llvm and clang want libedit, python-psutil, python-sphinx and
python-myst-parser. The last two are documentation only, and behind them sit
docutils, babel, pygments, snowballstemmer, imagesize, alabaster, the
sphinxcontrib family, markdown-it-py and mdit-py-plugins -- some fifteen packages
to render HTML for a compiler whose manual nothing here reads.
-DLLVM_ENABLE_SPHINX=OFF removes all of it.

Their package() ends on `rm -r .../html/{_sources,.buildinfo}`, which Sphinx
creates. Seventeenth appearance of that shape, and the FIRST found before the
build rather than after -- the procedure written in jsoncpp's hook, applied
forwards.

python-psutil is a stage-2 package: built on the host it shipped 41 dist-packages
paths, and the ARTEFACT check caught it.

--- FR ---

Rust n'est pas optionnel. Le poetry.lock d'ERPLibre exige cryptography 46.0.5 en
optional = false, plus jiter, orjson, pydantic-core et rpds-py, qui tous
compilent du Rust depuis les sources là où aucune roue n'existe — et il n'en
existe pas pour s390x. Sans Rust, `pip install cryptography` échoue et ERPLibre ne
démarre pas.

Le cycle d'amorçage n'est pas l'obstacle qu'il paraît : rust-1.90.0 publie une
archive officielle s390x-unknown-linux-gnu, vérifiée en HTTP 200, et l'hôte porte
déjà rustc 1.85.1. Ce qui coûte, c'est llvm et clang.

Mesuré avant de choisir, comme glib2 et iproute2 : au-delà de ce que ce portage a
déjà, llvm et clang veulent libedit, python-psutil, python-sphinx et
python-myst-parser. Les deux derniers ne servent qu'à la documentation, et
derrière eux viennent docutils, babel, pygments, snowballstemmer, imagesize,
alabaster, la famille sphinxcontrib, markdown-it-py et mdit-py-plugins — une
quinzaine de paquets pour produire du HTML sur un compilateur dont personne ici ne
lit le manuel. -DLLVM_ENABLE_SPHINX=OFF supprime tout cela.

Leur package() finit sur `rm -r .../html/{_sources,.buildinfo}`, que Sphinx crée.
Dix-septième apparition de cette forme, et la PREMIÈRE trouvée avant la
construction plutôt qu'après — la procédure inscrite dans le hook de jsoncpp,
appliquée à l'endroit.

python-psutil est un paquet d'étage 2 : bâti sur l'hôte, il livrait 41 chemins
dist-packages, et le test ARTEFACT l'a attrapé.

Assisted-by: Claude Opus 5
2026-08-24 01:57:19 -04:00
..
audit.sh [FIX] four hooks the closure's second round needed 2026-08-19 06:24:11 -04:00
autoconf-archive.sh [FIX] our flit_core is too new, and savannah would not serve a patch 2026-08-23 19:27:14 -04:00
binutils.sh [FIX] binutils records a usr/lib64 path, and cmake deletes html it did not make 2026-08-23 22:05:26 -04:00
brotli.sh [REM] sub-packages: four that cost more closure than they carry 2026-08-19 05:28:32 -04:00
ca-certificates.sh [FIX] the chroot could not resolve a name, and wget could not fix itself 2026-08-21 16:29:10 -04:00
clang.sh [ADD] llvm and clang, with Sphinx off, for Rust 2026-08-24 01:57:19 -04:00
cmake.sh [FIX] binutils records a usr/lib64 path, and cmake deletes html it did not make 2026-08-23 22:05:26 -04:00
coreutils.sh [FIX] selinux: the chroot named a host artefact, not a dependency 2026-08-17 01:33:41 -04:00
cryptsetup.sh [FIX] s390x: say which machine this port targets 2026-08-21 00:23:26 -04:00
curl.sh [ADD] TODO.md: track every divergence from upstream Arch 2026-08-16 05:47:47 -04:00
dbus.sh [FIX] the build host answered questions the target should 2026-08-19 05:28:32 -04:00
e2fsprogs.sh [FIX] four hooks the closure's second round needed 2026-08-19 06:24:11 -04:00
expat.sh [FIX] host defaults: apt was deciding what got built 2026-08-17 02:37:46 -04:00
fakeroot.sh [FIX] libaio, and two packages that installed man pages nobody wrote 2026-08-22 22:00:00 -04:00
filesystem.sh [FIX] filesystem: give s390x the lib64 compatibility symlinks 2026-08-21 00:54:14 -04:00
findutils.sh [FIX] selinux: the chroot named a host artefact, not a dependency 2026-08-17 01:33:41 -04:00
gcc.sh [FIX] binutils' extra targets were x86_64's, and gcc only wanted man pages 2026-08-22 21:52:39 -04:00
gettext.sh [FIX] the build host answered questions the target should 2026-08-19 05:28:32 -04:00
git.sh [FIX] groff's remaining lists, systemd man pages, git without libsecret 2026-08-23 23:58:32 -04:00
glibc.sh [ADD] devtools stand-ins, and lib32 removal for glibc and gcc 2026-08-15 21:15:01 -04:00
gnupg.sh [ADD] gnupg without its diagrams, and jinja2 for systemd 2026-08-23 17:25:27 -04:00
gnutls.sh [FIX] declared, never linked: guile, libisl.so, leancrypto 2026-08-19 05:28:32 -04:00
gpgme.sh [FIX] systemd without AppArmor, gpgme without its test harness, groff without a logo 2026-08-22 22:02:56 -04:00
grep.sh [FIX] grep: the m4 check lives in bootstrap.conf, not bootstrap 2026-08-17 00:00:48 -04:00
groff.sh [FIX] groff's remaining lists, systemd man pages, git without libsecret 2026-08-23 23:58:32 -04:00
jsoncpp.sh [ADD] gyp for nss, and jsoncpp's doxygen output 2026-08-24 00:03:26 -04:00
kbd.sh [ADD] test-chroot: read the binaries, not the declarations 2026-08-19 06:24:11 -04:00
krb5.sh [FIX] the build host answered questions the target should 2026-08-19 05:28:32 -04:00
lib-python-bootstrap.sh [FIX] the Python bootstrap installed older code than it claimed 2026-08-23 23:50:06 -04:00
libarchive.sh [FIX] a hook's scope belongs to its sections, not to its filename 2026-08-23 17:23:30 -04:00
libassuan.sh [FIX] canonical CHOST, and a reachable libassuan source 2026-08-16 00:45:50 -04:00
libcap-ng.sh [FIX] four hooks the closure's second round needed 2026-08-19 06:24:11 -04:00
libevent.sh [FIX] the second half of two of my own hooks 2026-08-23 19:09:10 -04:00
libgcrypt.sh [FIX] a hook's scope belongs to its sections, not to its filename 2026-08-23 17:23:30 -04:00
libpsl.sh [FIX] sqlite, libpsl and util-linux 2026-08-22 07:33:10 -04:00
libsasl.sh [FIX] four hooks the closure's second round needed 2026-08-19 06:24:11 -04:00
libseccomp.sh [REM] sub-packages: four that cost more closure than they carry 2026-08-19 05:28:32 -04:00
libtool.sh [ADD] port patches: gcc front ends, binutils gold, libtool multilib 2026-08-15 21:01:18 -04:00
libuv.sh [ADD] nlohmann-json, and three more packages without their docs 2026-08-22 02:32:55 -04:00
libxcrypt.sh [FIX] libxcrypt: a compiler newer than the release expects 2026-08-22 00:08:00 -04:00
libxml2.sh [FIX] stage 2: produce its first package 2026-08-20 01:12:14 -04:00
llvm.sh [ADD] llvm and clang, with Sphinx off, for Rust 2026-08-24 01:57:19 -04:00
lvm2.sh [FIX] lvm2: only device-mapper, and the closure closes 2026-08-19 06:40:50 -04:00
lz4.sh [FIX] libdir: the Debian host hid the libraries from Arch 2026-08-17 01:33:41 -04:00
make.sh [FIX] declared, never linked: guile, libisl.so, leancrypto 2026-08-19 05:28:32 -04:00
meson.sh [FIX] a hook's scope belongs to its sections, not to its filename 2026-08-23 17:23:30 -04:00
openssl.sh [FIX] openssl: s390x is big-endian, drop the little-endian EC path 2026-08-16 22:53:33 -04:00
p11-kit.sh [FIX] tpm2-tss without integration tests, p11-kit's doc sub-package 2026-08-23 23:33:38 -04:00
pacman.sh [FIX] systemd without BPF, pacman without asciidoc 2026-08-21 21:25:20 -04:00
pam.sh [FIX] the second half of two of my own hooks 2026-08-23 19:09:10 -04:00
pinentry.sh [FIX] the build host answered questions the target should 2026-08-19 05:28:32 -04:00
python-build.sh [ADD] Python packaging, through Arch's own bootstrap path 2026-08-21 16:37:55 -04:00
python-installer.sh [ADD] Python packaging, through Arch's own bootstrap path 2026-08-21 16:37:55 -04:00
python-jinja.sh [FIX] our flit_core is too new, and savannah would not serve a patch 2026-08-23 19:27:14 -04:00
python-packaging.sh [FIX] the Python bootstrap installed older code than it claimed 2026-08-23 23:50:06 -04:00
python-pyproject-hooks.sh [ADD] Python packaging, through Arch's own bootstrap path 2026-08-21 16:37:55 -04:00
python-setuptools.sh [ADD] Python packaging, through Arch's own bootstrap path 2026-08-21 16:37:55 -04:00
python-wheel.sh [ADD] Python packaging, through Arch's own bootstrap path 2026-08-21 16:37:55 -04:00
python.sh [ADD] the build systems stage 2 rebuilds with 2026-08-19 19:53:46 -04:00
readline.sh [FIX] stage 2: x86_64 compiler flags, and a .pc naming nothing 2026-08-19 20:19:37 -04:00
rsync.sh [FIX] stage 2: the build tools the host was providing silently 2026-08-20 01:34:41 -04:00
sed.sh [FIX] selinux: the chroot named a host artefact, not a dependency 2026-08-17 01:33:41 -04:00
shadow.sh [FIX] libaio, and two packages that installed man pages nobody wrote 2026-08-22 22:00:00 -04:00
sqlite.sh [FIX] sqlite: tcl 9 keeps its library inside the binary 2026-08-23 21:19:23 -04:00
systemd.sh [FIX] systemd: sixteen man page operations, across five sub-packages 2026-08-24 00:33:37 -04:00
tar.sh [FIX] selinux: the chroot named a host artefact, not a dependency 2026-08-17 01:33:41 -04:00
tpm2-tss.sh [FIX] tpm2-tss without integration tests, p11-kit's doc sub-package 2026-08-23 23:33:38 -04:00
util-linux.sh [FIX] sqlite, libpsl and util-linux 2026-08-22 07:33:10 -04:00
xz.sh [FIX] xz: the flag was already there, and lost to position 2026-08-23 23:44:36 -04:00
zstd.sh [FIX] libdir: the Debian host hid the libraries from Arch 2026-08-17 01:33:41 -04:00