63 lines
1.5 KiB
Bash
63 lines
1.5 KiB
Bash
#!/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
|
||
|
|
}
|
||
|
|
|