openSUSE / obs-build

OBS build script, can be used with OBS or stand alone
GNU General Public License v2.0
132 stars 183 forks source link

Failure to launch qemu under kvm-ized cross-builds #900

Closed jengelh closed 1 year ago

jengelh commented 1 year ago

OS: CPE_NAME="cpe:/o:opensuse:tumbleweed:20221122" Version: osc-0.182.0-2.1.noarch build-20221118-1.1.noarch

$ osc co openSUSE:Factory:ARM/doomsday; cd $there
$ osc build standard aarch64
WARNING: native compile is not possible, a emulator via binfmt misc handler must be configured!
Building doomsday.spec for standard/aarch64
Run source service: /usr/lib/obs/service/format_spec_file --outdir /home/jengelh/openSUSE/Factory/ARM/doomsday/tmp8nlefj_q.format_spec_file.service
Run source service: /usr/lib/obs/service/source_validator --outdir /home/jengelh/openSUSE/Factory/ARM/doomsday/tmpo4m5so44.source_validator.service
- package has doomsday-rpmlintrc: (unchanged)
Getting buildconfig from server and store to /home/jengelh/openSUSE/Factory/ARM/doomsday/.osc/_buildconfig-standard-aarch64
Getting buildinfo from server and store to /home/jengelh/openSUSE/Factory/ARM/doomsday/.osc/_buildinfo-standard-aarch64.xml
WARNING: It is guessed to build on hostarch 'x86_64' for 'aarch64' via QEMU user emulation.
Updating cache of required packages
0.0% cache miss. 265/265 dependencies cached.

Skipping verification of package signatures due to secure VM build
Writing build configuration
Running build
VM_ROOT: /var/tmp/build-root/standard-aarch64/img, VM_SWAP: /var/tmp/build-root/standard-aarch64/swap
logging output to /var/tmp/build-root/standard-aarch64/.build.log...
[    0s] Using BUILD_ROOT=/var/tmp/build-root/standard-aarch64/.mount
[    0s] Using BUILD_ARCH=aarch64:aarch64_ilp32:armv8l
[    0s] Doing kvm build in /var/tmp/build-root/standard-aarch64/img
[    0s] 
[    0s] 
[    0s] f3 started "build doomsday.spec" at Thu Nov 24 11:26:08 UTC 2022.
[    0s] 
[    0s] 
[    0s] processing recipe /home/jengelh/openSUSE/Factory/ARM/doomsday/doomsday.spec ...
[    0s] running changelog2spec --target rpm --file /home/jengelh/openSUSE/Factory/ARM/doomsday/doomsday.spec
[    0s] init_buildsystem --configdir /usr/lib/build/configs --cachedir /var/cache/build --prepare --rpmlist /tmp/rpmlist._05w9asa /home/jengelh/openSUSE/Factory/ARM/doomsday/doomsday.spec ...
[    1s] unpacking preinstall image openSUSE:Factory:ARM/standard/preinstallimage-base [e4402180a6b6422bbfd9fa562dc062a0]
[    1s] 
[    1s] copying packages...
[    2s] reordering...cycle: python310-base -> libpython3_10-1_0
[    2s]   breaking dependency python310-base -> libpython3_10-1_0
[    2s] cycle: gio-branding-upstream -> libgio-2_0-0
[    2s]   breaking dependency libgio-2_0-0 -> gio-branding-upstream
[    2s] cycle: libgio-2_0-0 -> glib2-tools
[    2s]   breaking dependency libgio-2_0-0 -> glib2-tools
[    2s] cycle: Mesa-dri -> Mesa
[    2s]   breaking dependency Mesa -> Mesa-dri
[    2s] cycle: libglvnd -> Mesa-dri -> Mesa -> Mesa-libEGL1
[    2s]   breaking dependency Mesa -> Mesa-libEGL1
[    2s] cycle: Mesa -> Mesa-libGL1
[    2s]   breaking dependency Mesa-libGL1 -> Mesa
[    2s] cycle: libglvnd -> Mesa-dri -> Mesa -> Mesa-libGL1
[    2s]   breaking dependency Mesa -> Mesa-libGL1
[    2s] cycle: libglvnd -> Mesa-dri -> Mesa
[    2s]   breaking dependency libglvnd -> Mesa-dri
[    2s] cycle: fontconfig -> libfontconfig1
[    2s]   breaking dependency libfontconfig1 -> fontconfig
[    2s] done
[    2s] setting hostarch to aarch64
[    2s] Detected virtio-serial support
[    2s] QEMU 7.1.0 detected: Skipping iothreads because of bsc#1204082
[   10s] booting kvm...
[   10s] Using virtio-serial support
[   10s] /usr/bin/qemu-system-x86_64 -nodefaults -no-reboot -nographic -vga none -cpu host -M pc,accel=kvm,usb=off,dump-guest-core=off,vmport=off -sandbox on -object rng-random,filename=/dev/hwrng,id=rng0 -device virtio-rng-pci,rng=rng0 -runas qemu -net none -kernel /var/tmp/build-root/standard-aarch64/.mount/boot/kernel -initrd /var/tmp/build-root/standard-aarch64/.mount/boot/initrd -append root=/dev/disk/by-id/virtio-0 rootfstype=ext4 rootflags=noatime kvmclock mitigations=off elevator=noop nmi_watchdog=0 rw rd.driver.pre=binfmt_misc oops=panic panic=1 quiet console=hvc0 init=/.build/build -m 512 -drive file=/var/tmp/build-root/standard-aarch64/img,format=raw,if=none,id=disk,cache=unsafe,aio=io_uring -device virtio-blk-pci,drive=disk,serial=0 -drive file=/var/tmp/build-root/standard-aarch64/swap,format=raw,if=none,id=swap,cache=unsafe,aio=io_uring -device virtio-blk-pci,drive=swap,serial=1 -device virtio-serial,max_ports=2 -device virtconsole,chardev=virtiocon0 -chardev stdio,id=virtiocon0 -chardev socket,id=monitor,server=on,wait=off,path=/var/tmp/build-root/standard-aarch64/img.qemu/monitor -mon chardev=monitor,mode=readline -smp 8
[   10s] qemu: linux kernel too old to load a ram disk
[   10s] No buildstatus set, either the base system is broken (kernel/initrd/udev/glibc/bash/perl)
[   10s] or the build host has a kernel or hardware problem...

The buildroot was: /var/tmp/build-root/standard-aarch64/.mount

It tries to use qemu-system-x86_64, which I have traced back to .oscrc containing build-type=kvm. Since this does not appear to work, can obs-build please emit a warning/hint that such configuration is unsupported.

adrianschroeter commented 1 year ago

such a config could be supported via injecting a x86_64 kernel and qemu user land setup...