#!/usr/bin/env bash source "$(dirname -- "${BASH_SOURCE[0]}")/lib.sh" [[ $# == 0 ]] || die 'Usage: tools/smoke-test' cd "$FDS_ROOT" use_xbps check_void_pin mkdir -p out/logs out/manifests out/packages printf 'FDS/OS M0 smoke test\nVoid commit: %s\n' "$(cat VOID_PACKAGES_COMMIT)" rustc --version cargo --version xbps-install -V tools/verify-elf "$FDS_XBPS/xbps-install" x86_64 static tools/cargo-build --locked --offline --release --target aarch64-unknown-linux-musl -p fds-smoketest binary=target/aarch64-unknown-linux-musl/release/fds-smoketest tools/verify-elf "$binary" aarch64 static # Supplemental diagnostic only: ldd on an x86 host is not an ARM loader test. ldd_status=0 ldd_output=$(ldd "$binary" 2>&1) || ldd_status=$? printf 'ldd (host diagnostic, exit %s): %s\n' "$ldd_status" "$ldd_output" cp -- "$binary" out/fds-smoketest tools/build-package hello # Limit lookup to our local output, never a remote prebuilt hello package. XBPS_ARCH=aarch64 xbps-rindex -a out/packages/hello-*.aarch64.xbps arch=$(XBPS_ARCH=aarch64 xbps-query -i --repository "$FDS_ROOT/out/packages" -p architecture hello) [[ $arch == aarch64 ]] || die "Wrong XBPS architecture: $arch" pkgver=$(XBPS_ARCH=aarch64 xbps-query -i --repository "$FDS_ROOT/out/packages" -p pkgver hello) package="out/packages/$pkgver.aarch64.xbps" [[ -f $package ]] || die "Missing package: $package" scratch=$(mktemp -d "$FDS_ROOT/out/verify-package.XXXXXX") trap 'rm -rf -- "$scratch"' EXIT tar -xf "$package" -C "$scratch" ./usr/bin/hello tools/verify-elf "$scratch/usr/bin/hello" aarch64 glibc printf 'PASS: XBPS package %s architecture=%s (glibc)\n' "$pkgver" "$arch" if command -v qemu-aarch64 >/dev/null; then output=$(qemu-aarch64 "$binary") [[ $output == 'FDS/OS M0: aarch64 static-musl OK' ]] || die 'Unexpected Rust runtime output' printf 'PASS: QEMU Rust execution: %s\n' "$output" else printf 'SKIP: ARM execution (optional qemu-aarch64 not installed); ELF verification passed\n' fi XBPS_ARCH=x86_64 xbps-query -r "$FDS_VOID/masterdir-x86_64" -l >out/manifests/void-build-packages.txt find "$FDS_VOID/hostdir" -type f -name '*.xbps' -print0 \ | sort -z | xargs -0 -r sha256sum >out/manifests/void-package-inputs.sha256 sha256sum "$package" out/fds-smoketest >out/manifests/artifacts.sha256 printf 'PASS: M0 smoke test complete\n'