From 185ef2acf6f4348559f64bcaf272bfa3b8faf8de Mon Sep 17 00:00:00 2001 From: Dorian Date: Wed, 8 Apr 2026 15:19:14 +0200 Subject: [PATCH] fix: restore musl static build, brand GRUB as Archipelago Runner is Debian 13 (glibc 2.41), ISO rootfs is Debian 12/bookworm (glibc 2.36). Dynamic binary crashes with GLIBC_2.41 not found. Musl static build eliminates the dependency entirely. Also set GRUB_DISTRIBUTOR="Archipelago" so installed system boot menu says "Archipelago" not "Debian GNU/Linux". Co-Authored-By: Claude Opus 4.6 --- .gitea/workflows/build-iso-dev.yml | 16 +++++++++++----- image-recipe/build-auto-installer-iso.sh | 4 ++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/build-iso-dev.yml b/.gitea/workflows/build-iso-dev.yml index b4667740..d717ca45 100644 --- a/.gitea/workflows/build-iso-dev.yml +++ b/.gitea/workflows/build-iso-dev.yml @@ -30,26 +30,32 @@ jobs: run: | # Skip apt if packages already installed (persistent runner) if dpkg -s debootstrap squashfs-tools xorriso isolinux syslinux-common mtools \ - grub-efi-amd64-bin grub-pc-bin grub-common >/dev/null 2>&1; then + grub-efi-amd64-bin grub-pc-bin grub-common musl-tools >/dev/null 2>&1; then echo "ISO build deps already installed, skipping apt" else sudo apt-get update -qq sudo apt-get install -y -qq \ debootstrap squashfs-tools xorriso \ isolinux syslinux-common mtools \ - grub-efi-amd64-bin grub-pc-bin grub-common + grub-efi-amd64-bin grub-pc-bin grub-common \ + musl-tools fi + # Ensure musl Rust target is available + source $HOME/.cargo/env 2>/dev/null || true + rustup target add x86_64-unknown-linux-musl 2>/dev/null || true - - name: Build backend (incremental) + - name: Build backend (incremental, musl static) run: | source $HOME/.cargo/env 2>/dev/null || true # Build in persistent repo dir to reuse target/ cache cd "$HOME/archy" export GIT_HASH=$(git rev-parse --short HEAD) - cargo build --release --manifest-path core/Cargo.toml + # Static musl build — runner is Debian 13 (glibc 2.41) but ISO rootfs + # is Debian 12/bookworm (glibc 2.36). Dynamic binary won't run. + cargo build --release --target x86_64-unknown-linux-musl --manifest-path core/Cargo.toml # Copy binary to workspace for downstream steps mkdir -p "$GITHUB_WORKSPACE/core/target/release" - cp core/target/release/archipelago "$GITHUB_WORKSPACE/core/target/release/" + cp core/target/x86_64-unknown-linux-musl/release/archipelago "$GITHUB_WORKSPACE/core/target/release/" - name: Build frontend run: cd neode-ui && npm ci && npm run build diff --git a/image-recipe/build-auto-installer-iso.sh b/image-recipe/build-auto-installer-iso.sh index ece11af8..6e4bf33c 100755 --- a/image-recipe/build-auto-installer-iso.sh +++ b/image-recipe/build-auto-installer-iso.sh @@ -2564,6 +2564,10 @@ rm -f /mnt/target/etc/initramfs-tools/conf.d/live-boot* 2>/dev/null || true rm -f /mnt/target/usr/share/initramfs-tools/scripts/live* 2>/dev/null || true rm -f /mnt/target/usr/share/initramfs-tools/hooks/live* 2>/dev/null || true +# Brand GRUB as Archipelago (default says "Debian GNU/Linux") +sed -i 's/^GRUB_DISTRIBUTOR=.*/GRUB_DISTRIBUTOR="Archipelago"/' /mnt/target/etc/default/grub +grep -q '^GRUB_DISTRIBUTOR' /mnt/target/etc/default/grub || echo 'GRUB_DISTRIBUTOR="Archipelago"' >> /mnt/target/etc/default/grub + # Suppress os-prober warning in GRUB echo "GRUB_DISABLE_OS_PROBER=true" >> /mnt/target/etc/default/grub # GFX fallback for hardware without graphical GRUB support