48 lines
1.9 KiB
Bash
Executable File
48 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
PACKAGE=${1:?usage: verify-fnos-package.sh package.fpk}
|
|
VERIFY_TMP_ROOT="${LIVERECORDER_VERIFY_TMPDIR:-${TMPDIR:-/tmp}}"
|
|
mkdir -p "$VERIFY_TMP_ROOT"
|
|
WORK_DIR=$(mktemp -d "${VERIFY_TMP_ROOT%/}/liverecorder-fnos-verify.XXXXXX")
|
|
trap 'rm -rf -- "$WORK_DIR"' EXIT
|
|
|
|
tar -xzf "$PACKAGE" -C "$WORK_DIR"
|
|
grep -q '^appname=liverecorder$' "$WORK_DIR/manifest"
|
|
grep -q '^version=1.0.0$' "$WORK_DIR/manifest"
|
|
grep -q '^platform=x86$' "$WORK_DIR/manifest"
|
|
test -x "$WORK_DIR/cmd/main"
|
|
test -x "$WORK_DIR/cmd/install_callback"
|
|
test -s "$WORK_DIR/wizard/install"
|
|
test -s "$WORK_DIR/wizard/upgrade"
|
|
test -s "$WORK_DIR/ICON.PNG"
|
|
test -s "$WORK_DIR/ICON_256.PNG"
|
|
|
|
expected=$(sed -n 's/^checksum=//p' "$WORK_DIR/manifest")
|
|
actual=$(md5sum "$WORK_DIR/app.tgz" | cut -d' ' -f1)
|
|
test -n "$expected"
|
|
test "$expected" = "$actual"
|
|
|
|
tar -tzf "$WORK_DIR/app.tgz" >"$WORK_DIR/app-files.txt"
|
|
grep -q '^server/LiveRecorder.WebApi$' "$WORK_DIR/app-files.txt"
|
|
grep -q '^server/wwwroot/index.html$' "$WORK_DIR/app-files.txt"
|
|
grep -q '^runtime/usr/lib/postgresql/15/bin/postgres$' "$WORK_DIR/app-files.txt"
|
|
grep -q '^runtime/usr/lib/postgresql/15/bin/initdb$' "$WORK_DIR/app-files.txt"
|
|
grep -q '^runtime/usr/bin/ffmpeg$' "$WORK_DIR/app-files.txt"
|
|
grep -q '^runtime/usr/bin/node$' "$WORK_DIR/app-files.txt"
|
|
grep -q '^runtime/usr/bin/curl$' "$WORK_DIR/app-files.txt"
|
|
grep -q '^ui/config$' "$WORK_DIR/app-files.txt"
|
|
grep -q '^ui/images/icon_64.png$' "$WORK_DIR/app-files.txt"
|
|
|
|
if grep -Eq '^runtime/(usr/)?lib/x86_64-linux-gnu/(libc\.so\.6|ld-linux-x86-64\.so\.2)$' "$WORK_DIR/app-files.txt"; then
|
|
printf 'the FPK must use the fnOS glibc and matching system loader\n' >&2
|
|
exit 1
|
|
fi
|
|
|
|
if grep -Eq '^(data|records|postgres|log|var)/' "$WORK_DIR/app-files.txt"; then
|
|
printf 'persistent data must not be included in app.tgz\n' >&2
|
|
exit 1
|
|
fi
|
|
|
|
printf 'fnOS package verified: %s\n' "$PACKAGE"
|