From 8fe9fc3d9d83a5d65fee69e036c7f68cf6d22021 Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Sun, 16 Aug 2026 22:41:50 -0400 Subject: [PATCH] [FIX] give the build host Arch's group ids MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit install: invalid group: '11' The filesystem package creates directories with `install -g 11`, and GNU coreutils rejects a gid that resolves to nothing. gid 11 is `ftp` on Arch; Ubuntu leaves it free. This is the circular corner of any bootstrap: the package that DEFINES /etc/group needs groups that do not exist yet. The way out is to give the build host the target's id map, not to work around the check -- rewriting the install call to force a numeric gid would produce directories owned by a group the target does not have. Only the ids Arch uses and Ubuntu lacks are created, and only when missing, so a host that is already correct is left alone. Checked one by one: of 1, 2, 10, 11, 12 and 50, only 11 was absent. --- FR --- install: invalid group: '11' Le paquet filesystem cree des repertoires avec « install -g 11 », et GNU coreutils refuse un gid qui ne resout vers rien. Le gid 11 est « ftp » sur Arch ; Ubuntu le laisse libre. C est le coin circulaire de tout amorcage : le paquet qui DEFINIT /etc/group reclame des groupes qui n existent pas encore. La sortie est de donner a l hote de compilation la table d identifiants de la cible, non de contourner la verification -- forcer l interpretation numerique produirait des repertoires appartenant a un groupe que la cible n a pas. Seuls les identifiants qu Arch utilise et qu Ubuntu n a pas sont crees, et seulement s ils manquent : un hote deja correct n est pas touche. Verifie un a un : sur 1, 2, 10, 11, 12 et 50, seul le 11 etait absent. Assisted-by: Claude Opus 5 --- scripts/bootstrap-pacman.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/scripts/bootstrap-pacman.sh b/scripts/bootstrap-pacman.sh index fb489b8..223195e 100755 --- a/scripts/bootstrap-pacman.sh +++ b/scripts/bootstrap-pacman.sh @@ -74,6 +74,24 @@ configure_makepkg() { # pacman refuses to initialise alpm without its database directory. The # error is only a warning during packaging, but it hides real ones. sudo mkdir -p /var/lib/pacman + # Arch's numeric group ids must EXIST on the build host. + # + # The filesystem package creates directories with `install -g 11`, and + # GNU coreutils rejects a gid that resolves to nothing: + # + # install: invalid group: '11' + # + # gid 11 is `ftp` on Arch; Ubuntu leaves it free. This is the circular + # corner of any bootstrap -- the package that DEFINES /etc/group needs + # groups that do not exist yet -- and the way out is to give the build + # host the target's id map rather than to work around the check. + # + # Only the ids Arch uses and Ubuntu lacks are created, and only when + # missing, so an already-correct host is left alone. + if ! getent group 11 > /dev/null 2>&1; then + sudo groupadd -g 11 ftp + echo "created group ftp (gid 11), required by the filesystem package" + fi # CHOST must be the CANONICAL triplet, not the Debian-style one. # # gcc -dumpmachine reports s390x-linux-gnu here, but config.sub