58 lines
1.7 KiB
Bash
58 lines
1.7 KiB
Bash
#!/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"
|