Five packages, one shape: a default computed from this machine rather than from Arch, and arch-meson's --auto-features enabled turning what was optional into a requirement. dbus taught the method. It stopped three times in a row on a different documentation tool -- ducktype, then yelp-build, then qhelpgenerator. The first two were installed. The third needs Qt, so the chain had no end. All three are `auto` features promoted to mandatory; pinned off, they cost nothing. A single missing library is a host dependency. A queue of them is a feature that should be disabled. pinentry wanted Qt6 for a passphrase prompt; tty and curses remain. krb5 asked for a system ss library Ubuntu ships no headers for, and said "cannot run test program" instead of saying so. sqlite found tcl, then installed into share/tcltk because Ubuntu's tclConfig.sh says so and Arch's says lib. gettext linked the host's libselinux, silently -- the sixth package to do it, and the first the audit caught rather than a build. --- FR --- Cinq paquets, une seule forme : une valeur par défaut calculée depuis cette machine plutôt que depuis Arch, et le --auto-features enabled d'arch-meson qui transforme l'optionnel en exigence. dbus a enseigné la méthode. Il s'est arrêté trois fois de suite sur un outil de documentation différent — ducktype, puis yelp-build, puis qhelpgenerator. Les deux premiers ont été installés. Le troisième exige Qt : la chaîne ne terminait nulle part. Les trois sont des features `auto` promues en obligations ; épinglées à disabled, elles ne coûtent rien. Une bibliothèque manquante est une dépendance hôte. Une file d'attente en est une fonctionnalité à désactiver. pinentry réclamait Qt6 pour une invite de mot de passe ; tty et curses suffisent. krb5 demandait une bibliothèque ss système dont Ubuntu ne livre aucun en-tête, et annonçait « cannot run test program » plutôt que de le dire. sqlite trouvait tcl, puis installait dans share/tcltk parce que le tclConfig.sh d'Ubuntu le dit là où celui d'Arch dit lib. gettext liait le libselinux de l'hôte, en silence — sixième paquet à le faire, et le premier que l'audit a pris plutôt qu'une compilation. Assisted-by: Claude Opus 5
30 lines
1.6 KiB
Bash
Executable file
30 lines
1.6 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# krb5: --with-system-ss, and Ubuntu ships no ss headers.
|
|
#
|
|
# checking whether system ss package works... configure: error: cannot run
|
|
# test program
|
|
#
|
|
# THE TRAP is that message. "cannot run test program" reads like a broken
|
|
# cross-compile or a missing loader -- the kind of thing that sends you into
|
|
# config.log looking for a link failure on this architecture. It is neither.
|
|
# The subsystem library (ss, from e2fsprogs) has no development package on
|
|
# Ubuntu at all: libss2 is runtime-only, libss-dev does not exist, and
|
|
# e2fslibs-dev has no candidate. There is no ss.h to compile against, so the
|
|
# test program cannot be built, let alone run.
|
|
#
|
|
# Note what IS present, so the two are not confused: --with-system-et works,
|
|
# because comerr-dev ships /usr/include/et/com_err.h. Only ss is missing.
|
|
#
|
|
# krb5 carries its own copy of the subsystem library and uses it when not told
|
|
# otherwise, so dropping the flag costs nothing but a slightly larger binary.
|
|
# Building e2fsprogs to supply one header would be the other answer; it is not
|
|
# worth a package in the closure, and TODO.md records the choice.
|
|
set -euo pipefail
|
|
grep -qE '^\s+--with-system-ss \\$' PKGBUILD || {
|
|
echo "krb5: --with-system-ss line not in the expected form" >&2; exit 1; }
|
|
[ "$(grep -c -- '--with-system-ss' PKGBUILD)" = 1 ] || {
|
|
echo "krb5: expected exactly one --with-system-ss" >&2; exit 1; }
|
|
sed -i '/^\s\+--with-system-ss \\$/d' PKGBUILD
|
|
grep -q -- '--with-system-ss' PKGBUILD && {
|
|
echo "krb5: --with-system-ss survived" >&2; exit 1; }
|
|
echo "krb5: uses its bundled ss (Ubuntu has no ss development package)"
|