FDS/OS 1.0
This commit is contained in:
Executable
+46
@@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env bash
|
||||
source "$(dirname -- "${BASH_SOURCE[0]}")/lib.sh"
|
||||
[[ $# == 0 || ( $# == 1 && $1 == --rebuild ) ]] || die 'Usage: tools/build-kernel [--rebuild]'
|
||||
cd "$FDS_ROOT"
|
||||
use_xbps
|
||||
check_void_pin
|
||||
tools/prepare-void
|
||||
mkdir -p out/logs out/packages out/manifests
|
||||
package=fds-kernel-6.12.87_1.aarch64.xbps
|
||||
inputs=$(mktemp "$FDS_ROOT/out/kernel-inputs.XXXXXX")
|
||||
trap 'rm -f "$inputs"' EXIT
|
||||
sha256sum VOID_PACKAGES_COMMIT config/xbps-src.conf tools/build-kernel \
|
||||
image/kernel/dasung.config packages/fds-kernel/template packages/fds-kernel/files/fds.config >"$inputs"
|
||||
if [[ $# == 0 && -s out/kernel/build-inputs.sha256 && -s out/kernel/payload.sha256 ]] && \
|
||||
cmp -s "$inputs" out/kernel/build-inputs.sha256 && \
|
||||
sha256sum -c out/kernel/artifacts.sha256 >/dev/null 2>&1 && \
|
||||
(cd out/kernel && sha256sum -c payload.sha256 >/dev/null 2>&1); then
|
||||
XBPS_ARCH=aarch64 xbps-rindex -fa "out/packages/$package"
|
||||
printf 'PASS: reusing verified Pi kernel build with unchanged recorded inputs\n'
|
||||
exit 0
|
||||
fi
|
||||
(
|
||||
cd "$FDS_VOID"
|
||||
if [[ ${1:-} == --rebuild ]]; then
|
||||
xbps_src -f -a aarch64 pkg fds-kernel
|
||||
else
|
||||
xbps_src -a aarch64 pkg fds-kernel
|
||||
fi
|
||||
) 2>&1 | tee out/logs/xbps-fds-kernel.log
|
||||
cp "$FDS_VOID/hostdir/binpkgs/$package" out/packages/
|
||||
XBPS_ARCH=aarch64 xbps-rindex -fa "out/packages/$package"
|
||||
work=$(mktemp -d "$FDS_ROOT/out/kernel-build.XXXXXX")
|
||||
tar -xf "out/packages/$package" -C "$work"
|
||||
[[ -s $work/boot/kernel_2712.img && -s $work/boot/bcm2712-rpi-5-b.dtb ]] || die 'Missing Pi 5 kernel/DTB'
|
||||
# Preserve the existing mandatory display-protection requirement.
|
||||
while IFS= read -r setting; do
|
||||
[[ $setting == CONFIG_*=* || $setting == '# CONFIG_'*' is not set' ]] || continue
|
||||
grep -Fqx "$setting" "$work/boot/config-fds" || die "Dasung kernel requirement missing: $setting"
|
||||
done <image/kernel/dasung.config
|
||||
sha256sum "out/packages/$package" "$work/boot/kernel_2712.img" "$work/boot/bcm2712-rpi-5-b.dtb" >"$work/artifacts.sha256"
|
||||
cp "$work/artifacts.sha256" out/manifests/kernel-artifacts.sha256
|
||||
cp "$inputs" "$work/build-inputs.sha256"
|
||||
(cd "$work" && find boot usr -type f -print0 | sort -z | xargs -0 sha256sum >payload.sha256)
|
||||
ln -sfn "${work##*/}" out/kernel
|
||||
printf 'PASS: pinned Pi 5 kernel, modules, DTBs and boot configuration built\n'
|
||||
printf 'SKIP: physical Pi boot and display behavior require hardware\n'
|
||||
Reference in New Issue
Block a user