#!/usr/bin/env bash # Install build dependencies for dora-zed on Ubuntu 24.04 x86_64 (CUDA 12). # Skips any component that is already installed. # Uses aria2c for fast parallel downloads if available, otherwise falls back to wget. # Downloads are placed in ./tmp relative to this script for inspection. set -euo pipefail ZED_VERSION="5.2" ORT_VERSION="1.24.4" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" TMP_DIR="${SCRIPT_DIR}/../tmp" mkdir -p "$TMP_DIR" download() { local url="$1" dest="$2" if command -v aria2c &>/dev/null; then aria2c -x 16 -s 16 -d "$(dirname "$dest")" -o "$(basename "$dest")" "$url" else wget -O "$dest" "$url" fi } # --- ZED SDK --- if [ -d /usr/local/zed ]; then echo ">>> ZED SDK already installed at /usr/local/zed — skipping." else echo ">>> Downloading ZED SDK ${ZED_VERSION} for Ubuntu 24.04 (CUDA 12)..." download \ "https://download.stereolabs.com/zedsdk/${ZED_VERSION}/cu12/ubuntu24" \ "${TMP_DIR}/ZED_SDK.run" chmod +x "${TMP_DIR}/ZED_SDK.run" echo ">>> Installing ZED SDK (silent)..." sudo "${TMP_DIR}/ZED_SDK.run" -- silent skip_python skip_tools fi # --- ONNX Runtime (C++ GPU, installs to /usr/local) --- if [ -f /usr/local/lib64/libonnxruntime.so ] && [ -d /usr/local/lib/cmake/onnxruntime ]; then echo ">>> ONNX Runtime already installed — skipping." else echo ">>> Downloading ONNX Runtime ${ORT_VERSION} GPU..." download \ "https://github.com/microsoft/onnxruntime/releases/download/v${ORT_VERSION}/onnxruntime-linux-x64-gpu-${ORT_VERSION}.tgz" \ "${TMP_DIR}/onnxruntime-linux-x64-gpu-${ORT_VERSION}.tgz" echo ">>> Extracting..." tar -xzf "${TMP_DIR}/onnxruntime-linux-x64-gpu-${ORT_VERSION}.tgz" -C "${TMP_DIR}" echo ">>> Installing ONNX Runtime to /usr/local..." sudo mkdir -p /usr/local/include/onnxruntime sudo cp -r "${TMP_DIR}/onnxruntime-linux-x64-gpu-${ORT_VERSION}/include/"* /usr/local/include/onnxruntime/ sudo mkdir -p /usr/local/lib64 sudo cp -r "${TMP_DIR}/onnxruntime-linux-x64-gpu-${ORT_VERSION}/lib/"* /usr/local/lib64/ # onnxruntimeTargets.cmake resolves the library as /lib64, but Ubuntu # is multiarch: CMake does not search lib64 for packages and ld.so does not # search /usr/local/lib64 at all. Move only the package files to lib/cmake # and put lib64 on the linker path. sudo mkdir -p /usr/local/lib/cmake sudo rm -rf /usr/local/lib/cmake/onnxruntime sudo mv /usr/local/lib64/cmake/onnxruntime /usr/local/lib/cmake/ sudo rmdir /usr/local/lib64/cmake echo /usr/local/lib64 | sudo tee /etc/ld.so.conf.d/onnxruntime.conf > /dev/null sudo ldconfig fi echo ">>> Done. You can now run: mkdir -p build && cd build && cmake .. && make install" echo ">>> Downloaded files are in ${TMP_DIR}"