Files
rk1/media/scripts/lib.sh
T

63 lines
1.5 KiB
Bash
Raw Normal View History

2026-08-17 18:42:29 +00:00
#!/usr/bin/env bash
set -Eeuo pipefail
RKMEDIA_SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
RKMEDIA_ROOT="$(cd -- "${RKMEDIA_SCRIPT_DIR}/.." && pwd -P)"
log() {
printf '[rkmedia] %s\n' "$*" >&2
}
die() {
printf '[rkmedia] ERROR: %s\n' "$*" >&2
exit 1
}
need_command() {
command -v "$1" >/dev/null 2>&1 || die "required command not found: $1"
}
absolute_path() {
realpath -m -- "$1"
}
assert_child_path() {
local parent child
parent="$(absolute_path "$1")"
child="$(absolute_path "$2")"
case "${child}" in
"${parent}"/*) ;;
*) die "refusing operation outside ${parent}: ${child}" ;;
esac
[[ "${child}" != "${parent}" ]] || die "refusing operation on parent directory itself: ${parent}"
}
reset_child_dir() {
local parent="$1"
local child="$2"
assert_child_path "${parent}" "${child}"
rm -rf -- "${child}"
mkdir -p -- "${child}"
}
require_arm64_trixie() {
local arch codename
arch="$(dpkg --print-architecture 2>/dev/null || true)"
codename=""
if [[ -r /etc/os-release ]]; then
# shellcheck disable=SC1091
. /etc/os-release
codename="${VERSION_CODENAME:-}"
fi
if [[ "${arch}" != "arm64" || "$(uname -m)" != "aarch64" || "${codename}" != "trixie" ]]; then
if [[ "${RKMEDIA_ALLOW_UNSUPPORTED_HOST:-0}" == "1" ]]; then
log "warning: unsupported build host (dpkg=${arch}, uname=$(uname -m), suite=${codename:-unknown})"
return
fi
die "native Debian Trixie arm64 is required (set RKMEDIA_ALLOW_UNSUPPORTED_HOST=1 only for development)"
fi
}