Files
rk1/runtime/make-offline-bundle.sh
T

58 lines
1.7 KiB
Bash
Raw Permalink Normal View History

2026-08-17 18:42:29 +00:00
#!/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" <<EOF
RKNN_VERSION=$RKNN_VERSION
RKNN_TAG=$RKNN_TAG
RKNN_COMMIT=$RKNN_COMMIT
RKNN_REPOSITORY=$RKNN_REPOSITORY
EOF
chmod 0644 "$OUTPUT_DIR/SOURCE.env"
echo "Created verified offline RKNN bundle: $OUTPUT_DIR"