mirror of
https://github.com/X11Libre/xserver.git
synced 2026-11-15 05:23:40 +00:00
ci: qemu: install qemu-user where qemu-user-static is gone
Ubuntu 26.04 runners have no qemu-user-static: qemu-user ships the static binaries without the -static suffix and qemu-user-binfmt registers them. Fall back to those and copy the registered binary. Signed-off-by: Joseph Crowell <joseph.w.crowell@gmail.com>
This commit is contained in:
parent
caf6b98e51
commit
9fd09f4bd9
1 changed files with 21 additions and 7 deletions
28
.github/scripts/qemu/run-qemu-build.sh
vendored
28
.github/scripts/qemu/run-qemu-build.sh
vendored
|
|
@ -25,7 +25,8 @@
|
|||
# MESON_ARGS, MESON_TEST_ARGS, FDO_CI_CONCURRENT (passed into the rootfs)
|
||||
#
|
||||
# Run as root (workflow uses `sudo`). The runner's own OS stays untouched:
|
||||
# only qemu-user-static/binfmt-support/debootstrap get installed on it.
|
||||
# only qemu-user-static (or qemu-user + qemu-user-binfmt), binfmt-support and
|
||||
# debootstrap get installed on it.
|
||||
|
||||
set -e
|
||||
set -x # Debug: print every command
|
||||
|
|
@ -54,11 +55,23 @@ echo "=== [$(date)] Starting QEMU build for $ARCH ($QEMU, $SUITE, $MIRROR) ==="
|
|||
# --- host side: prepare the emulator + debootstrap -------------------------
|
||||
echo "=== [$(date)] Installing host packages ==="
|
||||
apt-get update
|
||||
apt-get install -y \
|
||||
qemu-user-static \
|
||||
binfmt-support \
|
||||
debootstrap \
|
||||
wget
|
||||
# Ubuntu 26.04 dropped qemu-user-static: qemu-user now ships the static
|
||||
# binaries (without the -static suffix) and qemu-user-binfmt registers them.
|
||||
if ! apt-get install -y qemu-user-static binfmt-support debootstrap wget; then
|
||||
apt-get install -y qemu-user qemu-user-binfmt binfmt-support debootstrap wget
|
||||
fi
|
||||
|
||||
QEMU_BIN=/usr/bin/$QEMU
|
||||
[ -x "$QEMU_BIN" ] || QEMU_BIN=/usr/bin/${QEMU%-static}
|
||||
# binfmt_misc runs the interpreter at its registered path inside the chroot
|
||||
QEMU_BINFMT=/proc/sys/fs/binfmt_misc/$(basename "${QEMU%-static}")
|
||||
[ -e "$QEMU_BINFMT" ] || systemctl restart systemd-binfmt || true
|
||||
if [ ! -x "$QEMU_BIN" ] || [ ! -e "$QEMU_BINFMT" ]; then
|
||||
echo "ERROR: no $QEMU_BIN or no binfmt_misc entry $QEMU_BINFMT" >&2
|
||||
exit 1
|
||||
fi
|
||||
cat "$QEMU_BINFMT"
|
||||
QEMU_INTERP=$(grep '^interpreter ' "$QEMU_BINFMT" | cut -d' ' -f2)
|
||||
|
||||
# debian-ports (sparc64/alpha) needs the ports archive keyring. The one
|
||||
# shipped by the runner's distro (Ubuntu) is routinely out of date and misses
|
||||
|
|
@ -100,7 +113,8 @@ debootstrap \
|
|||
|
||||
# --- register the emulator inside the rootfs and finish the bootstrap -------
|
||||
echo "=== [$(date)] Copying qemu binary and running --second-stage ==="
|
||||
cp "/usr/bin/$QEMU" "$ROOTFS/usr/bin/"
|
||||
mkdir -p "$ROOTFS$(dirname "${QEMU_INTERP:-$QEMU_BIN}")"
|
||||
cp "$QEMU_BIN" "$ROOTFS${QEMU_INTERP:-$QEMU_BIN}"
|
||||
chroot "$ROOTFS" /debootstrap/debootstrap --second-stage
|
||||
|
||||
# Copy debian-ports keyring into chroot for apt verification. apt only trusts
|
||||
|
|
|
|||
Loading…
Reference in a new issue