mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-11-01 11:20:32 +03:00
Adds a `-tensorrt-jp7` Frigate image for JetPack 7.2 / L4T R39.2 Jetson hosts, built on nvcr.io/nvidia/tensorrt:26.02-py3-igpu (TensorRT 10.11, CUDA 13, py3.12), keeping the existing JP6 path unchanged. ONNX Runtime GPU is built from source (no public aarch64 onnxruntime-gpu wheel), TensorRT-Python branch is selected by the base image, and TensorRT runtime library checks are major-version aware. VALIDATED on a real AGX Orin (L4T R39.2 / nv_tegra_release R39 rev 2.0): - image frigate:test-tensorrt-jp7 builds (rc=0, 16.3GB, sha256:c9e4d382f1603ee130ee4a7315b4f71f9461405e3785707251505e2d6d088df3) - ONNX Runtime 1.25.1 exposes CUDAExecutionProvider, and a real Add-model inference RAN on the iGPU CUDA EP (functional, not just listed) - frigate.util.model.get_ort_providers(False,"AUTO") = [CUDA, CPU] (CUDA first, CPU last, TensorRT EP excluded) -> the ONNX detector GPU-accelerates on JP7 - /etc/TENSORRT_VER = 10.11.0 Native `type: tensorrt` (.trt gen) + the ORT TensorRT EP stay DRAFT-GATED: the L4T R39 host ships NO libnvdla_compiler.so (absent from host AND base image), so `import tensorrt` and libonnxruntime_providers_tensorrt.so fail to load. ONNX detector GPU acceleration is the supported JP7 path; native trt is deferred. Build fixes the new noble/CUDA-13 base surfaced (beyond the plan): - build_nginx.sh: enable deb-src for the deb822 ubuntu.sources (Ubuntu 24.04) - tensorrt_libyolo.sh: strip -lnvToolsExt (removed in CUDA 13) + -lnvparsers (dropped in TensorRT 10) when those libs are absent - docker/main: noble/py3.12 build adjustments (Dockerfile, build_sqlite_vec.sh) Reproducible: `make -C docker/tensorrt ... local-trt-jp7` (JETPACK7_ARGS) on any arm64 builder; built on-device only because the GPU smoke test needs the iGPU.
94 lines
3.5 KiB
Bash
Executable File
94 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euxo pipefail
|
|
|
|
NGINX_VERSION="1.27.4"
|
|
VOD_MODULE_VERSION="1.31"
|
|
SECURE_TOKEN_MODULE_VERSION="1.5"
|
|
SET_MISC_MODULE_VERSION="v0.33"
|
|
NGX_DEVEL_KIT_VERSION="v0.3.3"
|
|
|
|
source /etc/os-release
|
|
|
|
# Enable deb-src so `apt-get build-dep nginx` can find the source package. Detect the apt
|
|
# source FORMAT rather than guessing by distro: Debian 12 + Ubuntu 24.04 (noble — the JP7
|
|
# TensorRT igpu base) use the deb822 *.sources format with a `Types:` line; older Ubuntu
|
|
# (e.g. the JP6 22.04 jammy base) uses the legacy one-line /etc/apt/sources.list.
|
|
if [[ -f /etc/apt/sources.list.d/debian.sources ]]; then
|
|
sed -i '/^Types:/s/deb/& deb-src/' /etc/apt/sources.list.d/debian.sources
|
|
elif [[ -f /etc/apt/sources.list.d/ubuntu.sources ]]; then
|
|
sed -i '/^Types:/s/deb/& deb-src/' /etc/apt/sources.list.d/ubuntu.sources
|
|
elif [[ -f /etc/apt/sources.list ]]; then
|
|
cp /etc/apt/sources.list /etc/apt/sources.list.d/sources-src.list
|
|
sed -i 's|deb http|deb-src http|g' /etc/apt/sources.list.d/sources-src.list
|
|
fi
|
|
|
|
apt-get update
|
|
apt-get -yqq build-dep nginx
|
|
|
|
apt-get -yqq install --no-install-recommends ca-certificates wget
|
|
update-ca-certificates -f
|
|
apt install -y ccache
|
|
|
|
export PATH="/usr/lib/ccache:$PATH"
|
|
|
|
mkdir /tmp/nginx
|
|
wget -nv https://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
|
|
tar -zxf nginx-${NGINX_VERSION}.tar.gz -C /tmp/nginx --strip-components=1
|
|
rm nginx-${NGINX_VERSION}.tar.gz
|
|
mkdir /tmp/nginx-vod-module
|
|
wget -nv https://github.com/kaltura/nginx-vod-module/archive/refs/tags/${VOD_MODULE_VERSION}.tar.gz
|
|
tar -zxf ${VOD_MODULE_VERSION}.tar.gz -C /tmp/nginx-vod-module --strip-components=1
|
|
rm ${VOD_MODULE_VERSION}.tar.gz
|
|
# Patch MAX_CLIPS to allow more clips to be added than the default 128
|
|
sed -i 's/MAX_CLIPS (128)/MAX_CLIPS (1080)/g' /tmp/nginx-vod-module/vod/media_set.h
|
|
patch -d /tmp/nginx-vod-module/ -p1 << 'EOF'
|
|
--- a/vod/avc_hevc_parser.c 2022-06-27 11:38:10.000000000 +0000
|
|
+++ b/vod/avc_hevc_parser.c 2023-01-16 11:25:10.900521298 +0000
|
|
@@ -3,6 +3,9 @@
|
|
bool_t
|
|
avc_hevc_parser_rbsp_trailing_bits(bit_reader_state_t* reader)
|
|
{
|
|
+ // https://github.com/blakeblackshear/frigate/issues/4572
|
|
+ return TRUE;
|
|
+
|
|
uint32_t one_bit;
|
|
|
|
if (reader->stream.eof_reached)
|
|
EOF
|
|
|
|
|
|
mkdir /tmp/nginx-secure-token-module
|
|
wget https://github.com/kaltura/nginx-secure-token-module/archive/refs/tags/${SECURE_TOKEN_MODULE_VERSION}.tar.gz
|
|
tar -zxf ${SECURE_TOKEN_MODULE_VERSION}.tar.gz -C /tmp/nginx-secure-token-module --strip-components=1
|
|
rm ${SECURE_TOKEN_MODULE_VERSION}.tar.gz
|
|
|
|
mkdir /tmp/ngx_devel_kit
|
|
wget https://github.com/vision5/ngx_devel_kit/archive/refs/tags/${NGX_DEVEL_KIT_VERSION}.tar.gz
|
|
tar -zxf ${NGX_DEVEL_KIT_VERSION}.tar.gz -C /tmp/ngx_devel_kit --strip-components=1
|
|
rm ${NGX_DEVEL_KIT_VERSION}.tar.gz
|
|
|
|
mkdir /tmp/nginx-set-misc-module
|
|
wget https://github.com/openresty/set-misc-nginx-module/archive/refs/tags/${SET_MISC_MODULE_VERSION}.tar.gz
|
|
tar -zxf ${SET_MISC_MODULE_VERSION}.tar.gz -C /tmp/nginx-set-misc-module --strip-components=1
|
|
rm ${SET_MISC_MODULE_VERSION}.tar.gz
|
|
|
|
cd /tmp/nginx
|
|
|
|
./configure --prefix=/usr/local/nginx \
|
|
--with-file-aio \
|
|
--with-http_sub_module \
|
|
--with-http_ssl_module \
|
|
--with-http_v2_module \
|
|
--with-http_auth_request_module \
|
|
--with-http_realip_module \
|
|
--with-threads \
|
|
--add-module=../ngx_devel_kit \
|
|
--add-module=../nginx-set-misc-module \
|
|
--add-module=../nginx-vod-module \
|
|
--add-module=../nginx-secure-token-module \
|
|
--with-cc-opt="-O3 -Wno-error=implicit-fallthrough"
|
|
|
|
make CC="ccache gcc" -j$(nproc) && make install
|
|
rm -rf /usr/local/nginx/html /usr/local/nginx/conf/*.default
|