Initial RK1 media-center image project
This commit is contained in:
Executable
+62
@@ -0,0 +1,62 @@
|
||||
#!/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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user