qemu-binfmt-conf.sh groups arm with aarch64 and skipped it; Apple Silicon has no AArch32 execution, so --ignore-family is needed for ARM32 programs. The bin/sync-upstream extension, its tests and the Tests workflow edit are reverted; QEMU updates become reviewed pins.
74 lines
3.1 KiB
Bash
74 lines
3.1 KiB
Bash
# aarch64-only build: Arch Linux ARM builds qemu without the static user-mode
|
|
# binaries, so the Omarchy default set (qemu-user-static-binfmt, used for
|
|
# foreign-architecture containers) repackages Debian's statically linked
|
|
# qemu-user build. On x86_64 both packages come from the Arch extra repository.
|
|
|
|
pkgbase=qemu-user-static
|
|
pkgname=('qemu-user-static' 'qemu-user-static-binfmt')
|
|
# One-time epoch moves from upstream-only to full Debian revision ordering.
|
|
# pkgver records Debian epoch.upstream.revision. Updates are reviewed pins:
|
|
# bump _debver, pkgver, _snapshot and the checksum together.
|
|
epoch=1
|
|
pkgver=1.10.0.13+ds.0+deb13u1
|
|
_debver=1:10.0.13+ds-0+deb13u1
|
|
_snapshot=02b553a4532192bc999d15408d1e56d7b254906f
|
|
pkgrel=1
|
|
pkgdesc="A generic and open source machine emulator and virtualizer - static user-mode emulation"
|
|
arch=('aarch64')
|
|
url="https://www.qemu.org"
|
|
license=('GPL-2.0-only' 'LGPL-2.1-only')
|
|
source=("qemu-binfmt-conf.sh")
|
|
# Debian removes superseded pool files. Pin the official archive snapshot so
|
|
# the same checksum-verified binary remains rebuildable. _snapshot is the
|
|
# content-addressed snapshot SHA1; SHA256 below remains the integrity check.
|
|
source_aarch64=("qemu-user_${pkgver}_arm64.deb::https://snapshot.debian.org/file/$_snapshot")
|
|
sha256sums=('5e12ef484b8364e1ba7bae4acda837d2e6320ffbeb7fab341034124553cdb137')
|
|
sha256sums_aarch64=('c73711af02b97cd5e2667e735d9c06890c57165517110ca4e646c95a7083158d')
|
|
noextract=("qemu-user_${pkgver}_arm64.deb")
|
|
|
|
prepare() {
|
|
mkdir -p deb
|
|
bsdtar -C deb -xf "qemu-user_${pkgver}_arm64.deb" data.tar.xz
|
|
bsdtar -C deb -xf deb/data.tar.xz ./usr/bin ./usr/share/doc/qemu-user/copyright
|
|
}
|
|
|
|
package_qemu-user-static() {
|
|
pkgdesc="A generic and open source machine emulator and virtualizer - static user-mode emulation"
|
|
depends=('glibc')
|
|
optdepends=('qemu-user-static-binfmt: binary format rules for foreign-architecture binaries')
|
|
provides=('qemu-user-static')
|
|
conflicts=('qemu-user-static-bin')
|
|
|
|
install -dm755 "$pkgdir/usr/bin"
|
|
local binary
|
|
for binary in deb/usr/bin/qemu-*; do
|
|
install -Dm755 "$binary" "$pkgdir/usr/bin/$(basename "$binary")-static"
|
|
done
|
|
install -Dm644 deb/usr/share/doc/qemu-user/copyright "$pkgdir/usr/share/licenses/$pkgname/copyright"
|
|
}
|
|
|
|
package_qemu-user-static-binfmt() {
|
|
pkgdesc="Binary format rules for the static QEMU user-mode emulators"
|
|
depends=('qemu-user-static')
|
|
provides=('qemu-user-binfmt-provider')
|
|
conflicts=('qemu-user-binfmt-provider' 'binfmt-qemu-static')
|
|
|
|
install -dm755 "$pkgdir/usr/lib/binfmt.d"
|
|
# HOST_ARCH keeps the native architecture out of the rule set regardless
|
|
# of the build host, so the package is identical under native and QEMU builds.
|
|
# --ignore-family keeps 32-bit ARM: the script groups it with aarch64, but
|
|
# Apple Silicon cannot execute AArch32 natively.
|
|
HOST_ARCH=aarch64 sh "$srcdir/qemu-binfmt-conf.sh" \
|
|
--systemd ALL \
|
|
--exportdir "$pkgdir/usr/lib/binfmt.d/" \
|
|
--qemu-path /usr/bin \
|
|
--qemu-suffix -static \
|
|
--persistent yes \
|
|
--preserve-argv0 yes \
|
|
--ignore-family yes
|
|
local conf
|
|
for conf in "$pkgdir"/usr/lib/binfmt.d/*.conf; do
|
|
mv "$conf" "${conf%.conf}-static.conf"
|
|
done
|
|
}
|