From b677f50358ab2f2eda9971b08888fe92b50d6bdb Mon Sep 17 00:00:00 2001 From: Marcelo Alcantara Date: Thu, 3 Sep 2026 02:10:04 +1000 Subject: [PATCH] Pin PKGEXT to .pkg.tar.zst in the builder image Arch Linux ARM's makepkg.conf defaults PKGEXT to .pkg.tar.xz. build/sign.sh only signs *.pkg.tar.zst, and push-build, sync-rebuilds and the notifier parse the same suffix, so an aarch64 package built under the stacked pipeline came out as .xz and would have been skipped at signing. Seen on a plain x86_64 runner building aarch64 under QEMU (fork run 33642125077). Same fix as the PKGEXT line in #240. --- build/Dockerfile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/build/Dockerfile b/build/Dockerfile index 5ef7bfd..258fec4 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -142,8 +142,13 @@ RUN useradd -m -G wheel -s /bin/bash builder && \ chmod 700 /home/builder/.gnupg && \ chown -R builder:builder /home/builder +# Arch Linux ARM's makepkg.conf still defaults PKGEXT to .pkg.tar.xz; every +# tool downstream of the build (sign.sh, push-build, sync-rebuilds, the +# notifier) expects .pkg.tar.zst, so an aarch64 package would build and then +# be skipped at signing. Pin the extension so both architectures match. RUN sed -i 's/^#MAKEFLAGS=.*/MAKEFLAGS="-j$(nproc)"/' /etc/makepkg.conf && \ - sed -i 's/^COMPRESSZST=.*/COMPRESSZST=(zstd -c -z -q --threads=0 -)/' /etc/makepkg.conf + sed -i 's/^COMPRESSZST=.*/COMPRESSZST=(zstd -c -z -q --threads=0 -)/' /etc/makepkg.conf && \ + sed -i "s|^PKGEXT=.*|PKGEXT='.pkg.tar.zst'|" /etc/makepkg.conf # Pacman wrapper that auto-resolves package conflicts (e.g. rustup vs rust). # makepkg only passes --noconfirm to pacman, which defaults to 'N' on conflict