This commit is contained in:
90
scripts/ci/actions/setup-onnx-runtime/linux.sh
Executable file
90
scripts/ci/actions/setup-onnx-runtime/linux.sh
Executable file
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ort_version="${1:?ort-version required}"
|
||||
dest_dir="${2:-crates/kreuzberg-node}"
|
||||
arch_id="${3:-}"
|
||||
strategy="${4:-system}"
|
||||
|
||||
extract_dir="$RUNNER_TEMP/onnxruntime"
|
||||
|
||||
if [ -z "$arch_id" ]; then
|
||||
case "$(uname -m)" in
|
||||
x86_64 | amd64) arch_id="x64" ;;
|
||||
arm64 | aarch64) arch_id="arm64" ;;
|
||||
*)
|
||||
echo "Unsupported Linux architecture: $(uname -m)" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
case "$arch_id" in
|
||||
x64)
|
||||
ort_dir_name="onnxruntime-linux-x64-${ort_version}"
|
||||
archive="onnxruntime-linux-x64-${ort_version}.tgz"
|
||||
;;
|
||||
arm64)
|
||||
ort_dir_name="onnxruntime-linux-aarch64-${ort_version}"
|
||||
archive="onnxruntime-linux-aarch64-${ort_version}.tgz"
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported Linux arch-id: $arch_id" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ ! -d "$extract_dir/$ort_dir_name" ]; then
|
||||
echo "Cache miss: Downloading ONNX Runtime ${ort_version}"
|
||||
curl -fsSL --retry 5 --retry-delay 5 --retry-all-errors -o "$RUNNER_TEMP/$archive" "https://github.com/microsoft/onnxruntime/releases/download/v${ort_version}/$archive"
|
||||
mkdir -p "$extract_dir"
|
||||
tar -xzf "$RUNNER_TEMP/$archive" -C "$extract_dir"
|
||||
else
|
||||
echo "Cache hit: Using cached ONNX Runtime ${ort_version}"
|
||||
fi
|
||||
|
||||
ort_root="$extract_dir/$ort_dir_name"
|
||||
|
||||
if [ ! -d "$ort_root/lib" ]; then
|
||||
echo "ERROR: ONNX Runtime lib directory missing at $ort_root/lib" >&2
|
||||
echo "Available directories:" >&2
|
||||
ls -la "$extract_dir" >&2 || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! ls "$ort_root/lib"/*.so* 1>/dev/null 2>&1; then
|
||||
echo "ERROR: No ONNX Runtime libraries found in $ort_root/lib" >&2
|
||||
echo "Directory contents:" >&2
|
||||
ls -la "$ort_root/lib" >&2 || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dest="$GITHUB_WORKSPACE/$dest_dir"
|
||||
mkdir -p "$dest"
|
||||
cp -f "$ort_root/lib/"*.so* "$dest/"
|
||||
|
||||
if [ -n "${RUSTFLAGS:-}" ]; then
|
||||
rustflags="$RUSTFLAGS -L $ort_root/lib"
|
||||
else
|
||||
rustflags="-L $ort_root/lib"
|
||||
fi
|
||||
|
||||
if [ "$strategy" = "bundled" ]; then
|
||||
echo "Using bundled ORT strategy — letting ort-sys download-binaries handle static linking"
|
||||
{
|
||||
echo "LD_LIBRARY_PATH=$ort_root/lib:$dest:${LD_LIBRARY_PATH:-}"
|
||||
echo "LIBRARY_PATH=$ort_root/lib:$dest:${LIBRARY_PATH:-}"
|
||||
} >>"$GITHUB_ENV"
|
||||
else
|
||||
{
|
||||
ort_lib=$(find "$ort_root/lib" -name "libonnxruntime*.so*" -print -quit)
|
||||
echo "ORT_LIB_LOCATION=$ort_root/lib"
|
||||
echo "ORT_PREFER_DYNAMIC_LINK=1"
|
||||
echo "ORT_SKIP_DOWNLOAD=1"
|
||||
echo "ORT_STRATEGY=system"
|
||||
echo "ORT_DYLIB_PATH=$ort_root/lib/${ort_lib##*/}"
|
||||
echo "LD_LIBRARY_PATH=$ort_root/lib:$dest:${LD_LIBRARY_PATH:-}"
|
||||
echo "LIBRARY_PATH=$ort_root/lib:$dest:${LIBRARY_PATH:-}"
|
||||
echo "RUSTFLAGS=$rustflags"
|
||||
} >>"$GITHUB_ENV"
|
||||
fi
|
||||
Reference in New Issue
Block a user