#!/usr/bin/env bash # Extract only the immutable RKNN assets needed by install-rknn-runtime.sh. set -Eeuo pipefail SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P) # shellcheck source=rknn-version.env source "$SCRIPT_DIR/rknn-version.env" [[ $# -eq 2 ]] || { echo "Usage: $0 PINNED-RKNN-CHECKOUT OUTPUT-DIRECTORY" >&2 exit 2 } SOURCE_DIR=$(readlink -f -- "$1") OUTPUT_DIR=$2 [[ -d "$SOURCE_DIR/.git" ]] || { echo "Source must be a Git checkout: $SOURCE_DIR" >&2 exit 1 } [[ "$(git -C "$SOURCE_DIR" rev-parse HEAD)" == "$RKNN_COMMIT" ]] || { echo "RKNN checkout is not pinned commit $RKNN_COMMIT" >&2 exit 1 } [[ ! -e "$OUTPUT_DIR" ]] || { echo "Refusing to replace existing output: $OUTPUT_DIR" >&2 exit 1 } declare -a assets=( "rknpu2/runtime/Linux/librknn_api/include/rknn_api.h:$RKNN_HEADER_SHA256" "rknpu2/runtime/Linux/librknn_api/aarch64/librknnrt.so:$RKNN_RUNTIME_AARCH64_SHA256" "rknpu2/examples/rknn_api_demo/model/RK3588/mobilenet_v1.rknn:$RKNN_MOBILENET_RK3588_SHA256" "rknpu2/examples/rknn_api_demo/model/dog_224x224.jpg:$RKNN_DEMO_IMAGE_SHA256" "LICENSE:$RKNN_LICENSE_SHA256" ) for entry in "${assets[@]}"; do relative_path=${entry%%:*} expected_sha=${entry##*:} actual_sha=$(sha256sum "$SOURCE_DIR/$relative_path" | awk '{print $1}') [[ "$actual_sha" == "$expected_sha" ]] || { echo "Checksum mismatch: $relative_path" >&2 exit 1 } install -D -m 0644 "$SOURCE_DIR/$relative_path" "$OUTPUT_DIR/$relative_path" done cat >"$OUTPUT_DIR/SOURCE.env" <