FDS/OS 1.0
This commit is contained in:
Executable
+43
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env bash
|
||||
# Exercise the imported daemon without opening a physical USB or display device.
|
||||
source "$(dirname -- "${BASH_SOURCE[0]}")/../../tools/lib.sh"
|
||||
cd "$FDS_ROOT"
|
||||
need python3
|
||||
use_xbps
|
||||
package=out/packages/fds-dasungd-0.1.0_1.aarch64.xbps
|
||||
[[ -f $package ]] || die 'Run make dasung before make dasung-test'
|
||||
for script in tools/* tests/integration/*; do
|
||||
[[ -f $script && $(head -n 1 "$script") == '#!/usr/bin/env bash' ]] || continue
|
||||
bash -n "$script"
|
||||
done
|
||||
tools/in-void env LIBUSB_NO_PKG_CONFIG=1 LIBUDEV_NO_PKG_CONFIG=1 \
|
||||
cargo test --locked --offline --target x86_64-unknown-linux-gnu -p dasungd --features vendored
|
||||
tools/in-void env LIBUSB_NO_PKG_CONFIG=1 LIBUDEV_NO_PKG_CONFIG=1 \
|
||||
"$FDS_ROOT/tools/cargo-build" --locked --offline --release --target x86_64-unknown-linux-gnu -p dasungd --features vendored
|
||||
binary="$FDS_ROOT/target/x86_64-unknown-linux-gnu/release/dasungd"
|
||||
"$binary" --config packages/fds-dasungd/files/dasungd.toml check
|
||||
DASUNGD_BIN="$binary" python3 rust/dasungd/tests/pty_smoke.py
|
||||
scratch=$(mktemp -d "$FDS_ROOT/out/dasung-check.XXXXXX")
|
||||
trap 'rm -rf -- "$scratch"' EXIT
|
||||
tar -xf "$package" -C "$scratch"
|
||||
tools/verify-elf "$scratch/usr/bin/dasungd" aarch64 static
|
||||
cmp out/dasungd "$scratch/usr/bin/dasungd"
|
||||
cmp packages/fds-dasungd/files/dasungd.toml "$scratch/etc/dasungd.toml"
|
||||
cmp rust/dasungd/profiles/paperlike13k-37hz.edid "$scratch/usr/lib/firmware/edid/dasung-paperlike13k-37hz.bin"
|
||||
while IFS= read -r -d '' source; do
|
||||
cmp "$source" "s6/source/${source#"$scratch/etc/s6-rc/source/"}"
|
||||
done < <(find "$scratch/etc/s6-rc/source" -type f -print0)
|
||||
[[ $(XBPS_ARCH=aarch64 xbps-query -i --repository "$FDS_ROOT/out/packages" -p architecture fds-dasungd) == aarch64 ]]
|
||||
[[ -f $scratch/etc/s6-rc/source/boot/contents.d/dasungd ]] || die 'Dasung missing from base boot bundle'
|
||||
grep -qx fds-dasungd image/base-packages.list || die 'Dasung missing from base image package selection'
|
||||
if tar -tf "$package" | grep -Eq '/(systemd|runit)/'; then
|
||||
die 'Unexpected target init implementation in Dasung package'
|
||||
fi
|
||||
if XBPS_ARCH=aarch64 xbps-query -i --repository "$FDS_ROOT/out/packages" -x fds-dasungd | grep -Eq '^(musl|libusb|eudev-libudev|systemd|runit)(-|>|=|$)'; then
|
||||
die 'Unexpected runtime linkage or init dependency'
|
||||
fi
|
||||
tools/in-void s6-rc-compile "$scratch/compiled" "$scratch/etc/s6-rc/source"
|
||||
tests/integration/dasung-s6-check "$scratch" "$scratch/compiled"
|
||||
sha256sum -c out/manifests/dasung-artifacts.sha256
|
||||
printf 'PASS: packaged static daemon, exact profile, base selection and native s6 source\n'
|
||||
printf 'SKIP: Pi boot, physical Dasung picture, and cold-power recovery require hardware validation\n'
|
||||
Reference in New Issue
Block a user