Files
fds-os/tools/smoke-test
T
2026-09-23 03:12:45 +08:00

49 lines
2.3 KiB
Bash
Executable File

#!/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'