#!/usr/bin/env bash source "$(dirname -- "${BASH_SOURCE[0]}")/../../tools/lib.sh" cd "$FDS_ROOT" use_xbps [[ -f out/rootfs-cli.tar ]] || die 'Run make rootfs PROFILE=cli first' if ! xbps-query -r "$FDS_VOID/masterdir-x86_64" qemu-system-aarch64 >/dev/null 2>&1; then tools/in-void xbps-install -y qemu-system-aarch64 fi tools/prepare-vm work=$(mktemp -d "$FDS_ROOT/out/m2-vm.XXXXXX") python3 tools/make-vm-image "$work" sha256sum config/vm-test.conf tools/prepare-vm tools/make-vm-image tools/run-vm \ tests/integration/m2-checks tests/integration/m2-guest >"$work/test-inputs.sha256" sha256sum "$work/rootfs.ext4" >"$work/disk-before.sha256" { cat config/vm-test.conf printf '\n' tools/in-void qemu-system-aarch64 --version mkfs.ext4 -V 2>&1 } >"$work/test-environment.txt" printf 'ARM boot test artifacts: %s\n' "$work" timeout --foreground 180 tools/run-vm "$work" 2>&1 | tee "$work/serial.log" ! grep -q 'FDS_M2_FAIL\|Kernel panic' "$work/serial.log" || die 'ARM guest reported a failure' for marker in FDS_M2_PID1 FDS_M2_FILESYSTEM FDS_M2_BOOT FDS_M2_SERVICE FDS_M2_PASS; do grep -q "$marker" "$work/serial.log" || die "Missing guest evidence: $marker" done grep -q 'Power down' "$work/serial.log" || die 'Guest did not complete orderly power-off' sha256sum -c "$work/disk-before.sha256" sha256sum out/rootfs-cli.tar "$work/test-rootfs.tar" "$work/rootfs.ext4" \ out/vm-kernel/boot/vmlinux-* >"$work/artifacts.sha256" ln -sfn "${work##*/}" out/m2-vm-latest printf 'PASS: M2 ARM boot, native s6 PID 1, service control, and orderly power-off\n' printf 'SKIP: physical Pi boot and Dasung display recovery require M4/hardware\n'