#!/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 }