From 8b74772a0db8b57a94e6c8572319691bff322812 Mon Sep 17 00:00:00 2001 From: Elliot Berman Date: Thu, 13 Nov 2025 15:28:20 -0800 Subject: [PATCH 1/2] oci: Support for JetPack 7 --- pkgs/containers/gen_l4t_json.py | 3 +- pkgs/containers/l4t-csv.nix | 5 + pkgs/containers/r38.2-l4t.json | 358 ++++++++++++++++++++++++++++++++ 3 files changed, 365 insertions(+), 1 deletion(-) create mode 100644 pkgs/containers/r38.2-l4t.json diff --git a/pkgs/containers/gen_l4t_json.py b/pkgs/containers/gen_l4t_json.py index 833566ef..294bfbec 100755 --- a/pkgs/containers/gen_l4t_json.py +++ b/pkgs/containers/gen_l4t_json.py @@ -5,7 +5,8 @@ import os.path import sys -# Run like ./gen_l4t_json.py ./l4t.csv ./unpackedDebs +# nix build .\#nvidia-jetpack.containers.l4t-csv .\#nvidia-jetpack.unpackedDebsFilenames +# Run like ./gen_l4t_json.py ./l4t.csv ./unpackedDebsFilenames def main(): diff --git a/pkgs/containers/l4t-csv.nix b/pkgs/containers/l4t-csv.nix index 57353641..66dde3af 100644 --- a/pkgs/containers/l4t-csv.nix +++ b/pkgs/containers/l4t-csv.nix @@ -28,6 +28,11 @@ stdenvNoCC.mkDerivation { "devices.csv" "drivers.csv" ] + else if l4tMajorVersion == "38" then + [ + "devices.csv" + "drivers.csv" + ] else builtins.throw "unhandled L4T version ${l4tMajorMinorPatchVersion}"; diff --git a/pkgs/containers/r38.2-l4t.json b/pkgs/containers/r38.2-l4t.json new file mode 100644 index 00000000..bc0cacb9 --- /dev/null +++ b/pkgs/containers/r38.2-l4t.json @@ -0,0 +1,358 @@ +{ + "libnvidia-compute-580": [ + "/usr/lib/aarch64-linux-gnu/libcuda.so.580.65.06", + "/usr/lib/aarch64-linux-gnu/libcuda.so", + "/usr/lib/aarch64-linux-gnu/libcuda.so.1" + ], + "libnvidia-extra-580": [ + "/usr/lib/aarch64-linux-gnu/gbm/nvidia-drm_gbm.so" + ], + "libnvidia-gl-580": [ + "/usr/share/glvnd/egl_vendor.d/10_nvidia.json" + ], + "nvidia-compute-utils-580": [ + "/usr/bin/nvidia-cuda-mps-control", + "/usr/bin/nvidia-cuda-mps-server" + ], + "nvidia-l4t-3d-core": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libGLX_nvidia.so.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-eglcore.so.580.00", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-glcore.so.580.00", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-glsi.so.580.00", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-glvkspirv.so.580.00", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-gpucomp.so.580.00", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-nvvm.so.580.00", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-nvvm70.so.580.00", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ptxjitcompiler.so.580.00", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-rtcore.so.580.00", + "/usr/lib/aarch64-linux-gnu/nvidia/nvidia_icd.json", + "/usr/lib/aarch64-linux-gnu/tegra-egl/", + "/usr/lib/aarch64-linux-gnu/tegra-egl/libEGL_nvidia.so.0", + "/usr/lib/aarch64-linux-gnu/tegra-egl/libGLESv1_CM_nvidia.so.1", + "/usr/lib/aarch64-linux-gnu/tegra-egl/libGLESv2_nvidia.so.2", + "/usr/lib/aarch64-linux-gnu/tegra-egl/nvidia.json", + "/etc/vulkan/icd.d/nvidia_icd.json", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-nvvm.so.4", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-nvvm70.so.4", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ptxjitcompiler.so.1", + "/usr/share/glvnd/egl_vendor.d/10_nvidia.json" + ], + "nvidia-l4t-adaruntime": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libgnarl-24.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libgnat-24.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libgnarl.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libgnat.so" + ], + "nvidia-l4t-camera": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvargus.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvargus_socketclient.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvargus_socketserver.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcam_imageencoder.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcamerahal.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcameratools.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcamerautils.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcamlog.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcamv4l2.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcapture.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvfusacap.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvfusacapinterface.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvisp.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvisppg.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_isp_ext.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvodm_imager.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscf.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvsipl.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvsipl_control.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvsipl_devblk.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvsipl_devblk_cdi.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvsipl_devblk_crypto.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvsipl_devblk_ddi.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvsipl_pipeline.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvsipl_query.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libv4l2_nvargus.so", + "/usr/lib/nvsipl_drv/libnvsipl_qry_vb1940.so", + "/usr/lib/nvsipl_uddf/libnvuddf_eagle_library.so", + "/var/nvidia/nvcam/settings/ar0234.nito", + "/var/nvidia/nvcam/settings/e3333.nito", + "/var/nvidia/nvcam/settings/imx185.nito", + "/var/nvidia/nvcam/settings/imx219.nito", + "/var/nvidia/nvcam/settings/imx274_li.nito", + "/var/nvidia/nvcam/settings/imx477.nito", + "/var/nvidia/nvcam/settings/sipl/vb1940.nito", + "/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so" + ], + "nvidia-l4t-core": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libdrm.so.2", + "/usr/lib/aarch64-linux-gnu/nvidia/libjetsonpower.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcolorutil.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvdc.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvddk_2d_v2.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvddk_vic.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvdla_runtime.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvfnet.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvfnetstoredefog.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvfnetstorehdfx.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-rmapi-tegra.so.580.00", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-tls.so.580.00", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvimp.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvisp_utils.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvll.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvos.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvplayfair.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvpva.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvpva_algorithms.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvrm_chip.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvrm_gpu.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvrm_host1x.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvrm_mem.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvrm_stream.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvrm_surface.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvrm_sync.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvsciipc.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvsocsys.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvtegrahv.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvvic.so", + "/usr/lib/aarch64-linux-gnu/tegra" + ], + "nvidia-l4t-cuda": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1", + "/usr/lib/aarch64-linux-gnu/nvidia/libcuda_instrumentation.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcucompat.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcudla.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcuextend.so", + "/usr/lib/aarch64-linux-gnu/libcuda.so", + "/usr/lib/aarch64-linux-gnu/libcuda_instrumentation.so", + "/usr/lib/aarch64-linux-gnu/libnvcucompat.so", + "/usr/lib/aarch64-linux-gnu/libnvcudla.so", + "/usr/lib/aarch64-linux-gnu/libnvcuextend.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1", + "/usr/lib/aarch64-linux-gnu/nvidia/libcuda_instrumentation.so.1" + ], + "nvidia-l4t-cuda-utils": [ + "/usr/bin/nvidia-cuda-mps-control", + "/usr/bin/nvidia-cuda-mps-server" + ], + "nvidia-l4t-cudadebuggingsupport": [ + "/usr/lib/aarch64-linux-gnu/tegra/", + "/usr/lib/aarch64-linux-gnu/tegra/libcudadebugger.so.1" + ], + "nvidia-l4t-firmware": [ + "/lib/firmware/tegra23x/nvhost_nvdec050_desc_prod.bin" + ], + "nvidia-l4t-gbm": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-allocator.so.1", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-gbm.so.1.1.0", + "/usr/lib/aarch64-linux-gnu/gbm/nvidia-drm_gbm.so", + "/usr/lib/aarch64-linux-gnu/gbm/tegra_gbm.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-allocator.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-gbm.so.1" + ], + "nvidia-l4t-gstreamer": [ + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvarguscamerasrc.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvcompositor.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvdrmvideosink.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnveglglessink.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnveglstreamsrc.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvegltransform.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvipcpipeline.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvivafilter.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvjpeg.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvsiplsrc.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvtee.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvunixfd.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvv4l2camerasrc.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvidconv.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideo4linux2.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideosink.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideosinks.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/nvgstcapture-1.0_README.txt", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/nvgstipctestapp-1.0_README.txt", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/nvgstplayer-1.0_README.txt", + "/usr/lib/aarch64-linux-gnu/libgstnvegl-1.0.so.0", + "/usr/lib/aarch64-linux-gnu/libgstnvexifmeta.so", + "/usr/lib/aarch64-linux-gnu/libgstnvivameta.so", + "/usr/lib/aarch64-linux-gnu/libnvsample_cudaprocess.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libgstnvcustomhelper.so.1.0.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libgstnvdsseimeta.so.1.0.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnveglstreamproducer.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libgstnvcustomhelper.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libgstnvdsseimeta.so" + ], + "nvidia-l4t-libvulkan": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libvulkan.so.1.4.304", + "/usr/lib/aarch64-linux-gnu/libvulkan.so.1.4.304", + "/usr/lib/aarch64-linux-gnu/nvidia/libvulkan.so.1" + ], + "nvidia-l4t-multimedia": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurftransform.so.1.0.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvdecode2eglimage.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvdsbufferpool.so.1.0.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnveventlib.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvexif.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvid_mapper.so.1.0.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia2d.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_2d.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_dla.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_eglstream.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ide_parser.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ide_sci.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_iep_sci.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ijpd_sci.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ijpe_sci.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_iofa_sci.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_tensor.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedialdc.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmm.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmm_contentpipe.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmm_jpeg.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmm_parser.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmm_utils.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite_image.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite_utils.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite_video.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvoggopus.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvomx.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvomxilclient.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvosd.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvparser.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvtracebuf.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvtvmr.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvtvmr_2d.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvv4l2.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvv4lconvert.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvvideo.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvvideoencode_ppe.so", + "/usr/lib/aarch64-linux-gnu/libv4l2.so.0.0.999999", + "/usr/lib/aarch64-linux-gnu/libv4lconvert.so.0.0.999999", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurftransform.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvdsbufferpool.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvid_mapper.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libv4l2.so.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libv4lconvert.so.0" + ], + "nvidia-l4t-multimedia-nvgpu": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libtegrav4l2.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libv4l2_nvvideocodec.so", + "/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvvideocodec.so" + ], + "nvidia-l4t-multimedia-openrm": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcuvidv4l2.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libv4l2_nvcuvidvideocodec.so", + "/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvcuvidvideocodec.so" + ], + "nvidia-l4t-multimedia-utils": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvbuf_fdmap.so.1.0.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurface.so.1.0.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurface_nvsci.so.1.0.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurface.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurface_nvsci.so" + ], + "nvidia-l4t-nvml": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1", + "/usr/sbin/nvidia-smi" + ], + "nvidia-l4t-nvsci": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscibuf.so.1", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscicommon.so.1", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscievent.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscistream.so.1", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscisync.so.1", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscibuf.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscicommon.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscistream.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscisync.so" + ], + "nvidia-l4t-openwfd": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-kms.so.580.00", + "/usr/lib/aarch64-linux-gnu/nvidia/libtegrawfd.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-kms.so" + ], + "nvidia-l4t-pva": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvpvaintf.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvpvaumd_core.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvpvaumd_cuda.so" + ], + "nvidia-l4t-video-codec-openrm": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcuvid.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-encode.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-opticalflow.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcuvid.so.1", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-encode.so.1", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-opticalflow.so.1" + ], + "nvidia-l4t-vulkan-sc-sdk": [ + "/etc/vulkansc/icd.d/nvidia_icd_vksc.json", + "/usr/lib/aarch64-linux-gnu/nvidia/libVkLayer_json_gen.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libVkSCLayer_khronos_validation.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libvulkansc.so.1.0.10", + "/usr/lib/aarch64-linux-gnu/nvidia/libvulkansc.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libvulkansc.so.1" + ], + "nvidia-l4t-wayland": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-wayland.so.1.1.11", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-wayland.so.1" + ], + "nvidia-l4t-weston": [ + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/EGLWLInputEventExample", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/EGLWLMockNavigation", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/LayerManagerControl", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/color-lcms.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/desktop-shell.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/drm-backend.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/fullscreen-shell.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/gl-renderer.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/headless-backend.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/hmi-controller.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/ivi-controller.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/ivi-shell.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/libilmClient.so.2.3.2", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/libilmCommon.so.2.3.2", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/libilmControl.so.2.3.2", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/libilmInput.so.2.3.2", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/libweston-13.so.0", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/simple-weston-client", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/spring-tool", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/wayland-backend.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-calibrator", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-clickdot", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-cliptest", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-content-protection", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-debug", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-desktop-shell", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-dnd", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-eventdemo", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-flower", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-fullscreen", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-image", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-ivi-shell-user-interface", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-keyboard", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-multi-resource", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-presentation-shm", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-resizor", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-scaler", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-screenshooter", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-damage", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-dmabuf-egl", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-dmabuf-egldevice", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-dmabuf-feedback", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-egl", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-im", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-shm", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-touch", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-smoke", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-stacking", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-subsurfaces", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-tablet", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-terminal", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-touch-calibrator", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-transformed" + ], + "nvidia-l4t-xwayland": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-xcb.so.1", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-xlib.so.1" + ] +} From 5d16cfaffdef9cdd6fd47120f9cf01696aa53967 Mon Sep 17 00:00:00 2001 From: Elliot Berman Date: Fri, 14 Nov 2025 16:36:40 -0800 Subject: [PATCH 2/2] tests: oci: Use saxpy as the test The current oci test requires downloading and building cuda-samples. This requires a very large container containing the CUDA runtime and development tools. Instead, build a simple CUDA binary (saxpy) separately and create a container with only the CUDA runtime and saxpy. --- pkgs/tests/default.nix | 187 +++++++++++++++++++++++++++++------------ 1 file changed, 132 insertions(+), 55 deletions(-) diff --git a/pkgs/tests/default.nix b/pkgs/tests/default.nix index 7258c4e5..72ba3a40 100644 --- a/pkgs/tests/default.nix +++ b/pkgs/tests/default.nix @@ -1,64 +1,141 @@ -{ l4tMajorMinorPatchVersion +{ cudaPackages , dockerTools -, writeShellScriptBin +, go , lib -, l4tAtLeast -, fetchFromGitHub -, buildEnv +, path , stdenv , dlopenOverride +, writeShellScriptBin +, writeText +, writeTextFile }: -# https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/TestPlanValidation.html#nvidia-containers let - l4tImage = { - "35" = dockerTools.buildImage { - name = "l4t-jetpack-with-samples"; + # cuda "base" with only libcuda.so.1 and other essentials; used on device + cudaBase = dockerTools.pullImage ({ + imageName = "nvidia/cuda"; + } // lib.getAttrFromPath [ cudaPackages.cudaMajorMinorVersion go.GOARCH ] { + "13.0".amd64 = { + finalImageTag = "13.0.2-base-ubuntu24.04"; + imageDigest = "sha256:605fb0c8acf8674e164d822da8a8521f3a655056e569f0899e72ae940e1fe7dc"; + sha256 = ""; + }; + "13.0".arm64 = { + finalImageTag = "13.0.2-base-ubuntu24.04"; + imageDigest = "sha256:1ca86773be1716af6cfff3d2eb8cd10d4d9cac181931d1ee9be792d3e33c7322"; + sha256 = "sha256-IOtmpA2xiNL1/zodFdUz5/nrDYMBssDibwYE0uwrCcI= "; + }; + "12.6".amd64 = { + finalImageTag = "12.6.3-base-ubuntu24.04"; + imageDigest = "sha256:6b3201183858bad08441837f5a5efc2c75290135cc25fcc87d9ff763190cfd09"; + sha256 = "sha256-326qF7q4RtMnye/yOeh+lgilopoCrEJyV0WuTQlN9JM="; + }; + "12.6".arm64 = { + finalImageTag = "12.6.3-base-ubuntu24.04"; + imageDigest = "sha256:ba25600cea339517a8e55361a27535bbfdeae1936663e9b4970f3cec2fbbd165"; + sha256 = "sha256-lii+GS0havrQceqqYvHa35Lwe7I2rCQ3pVN5XvE2rmw="; + }; + "11.8".amd64 = { + finalImageTag = "11.8.0-base-ubuntu22.04"; + imageDigest = "sha256:79e5b2cf878ee9006f5b3738caeea34fdc7708a32db53fe3e80db0b48bd286a0"; + sha256 = "sha256-UHNlMC/LlQ6bJLMQ+tftDsvjxSgi+gmJvKoRbbH6CNA="; + }; + "11.4".arm64 = { + finalImageTag = "11.4.3-base-ubuntu20.04"; + imageDigest = "sha256:ef4813458a4b40b41f21c5fc505a7c7a39e12616273b2fb8ab10a1ebee541ac7"; + sha256 = "sha256-Oxx5w0OXq74oUHqaOYF2Xb4q8cxz2srhVvst+mFjC04="; + }; + }); + + # cuda "development" with libcuda and all the development tools; used to build saxpy the not-nixos way + cudaDevel = dockerTools.pullImage ({ + imageName = "nvidia/cuda"; + } // lib.getAttrFromPath [ cudaPackages.cudaMajorMinorVersion go.GOARCH ] { + "13.0".amd64 = { + finalImageTag = "13.0.2-devel-ubuntu24.04"; + imageDigest = "sha256:0eee3094c71518ad31d011a594ae6ed6de72959ee07e318cb31cffe71690e90c"; + sha256 = "sha256-5PcPyKbIrNfHOsNJ8MCsBMSpVizR01qWaUtVsbEyqZE="; + }; + "13.0".arm64 = { + finalImageTag = "13.0.2-devel-ubuntu24.04"; + imageDigest = "sha256:450d11555d20ac8ebbbc13ebf17589c2bd42869171a90179ce7098b4a5e64c6a"; + sha256 = "sha256-fUwPPtLwAhU9UwxM59x35mboOPuxA1D6nV8N64I0uPI="; + }; + "12.6".amd64 = { + finalImageTag = "12.6.3-devel-ubuntu24.04"; + imageDigest = "sha256:badf6c452e8b1efea49d0bb956bef78adcf60e7f87ac77333208205f00ac9ade"; + sha256 = "sha256-P1XZZFmMP76XjZtagtNDXAlYcBR3OW+h/2fYMIMHCVM="; + }; + "12.6".arm64 = { + finalImageTag = "12.6.3-devel-ubuntu24.04"; + imageDigest = "sha256:37191266f9cad5651a92a4b56d8a03bb072bb27d768663e0fc9b6c7ecdfa0a11"; + sha256 = "sha256-+21AwCDcGtT3g3xcXi7wpzj3u1Wy7zRhFPumYVnfa+A="; + }; + "11.8".amd64 = { + finalImageTag = "11.8.0-devel-ubuntu22.04"; + imageDigest = "sha256:60eda04ab6790aa76d73bf0df245b361eabc6d8f7b6f6cf9846c70f399b9a1eb"; + sha256 = "sha256-PKn6U9m4jRXsnAxCLEw+BW3lYWdflKzLex2bA28ASa0="; + }; + "11.4".arm64 = { + finalImageTag = "11.4.3-devel-ubuntu20.04"; + imageDigest = "sha256:c5b82aac11fbba9f6d1a2802faa6739f597ba4ac3cdbd95205bd8e817dca74e3"; + sha256 = "sha256-oVILXM3crP2EwH/N+KhhAH2cm8Kwuihk705R88KNfcM="; + }; + }); + + saxpyLayer = dockerTools.mkRootLayer { + name = "saxpy-builder"; - fromImage = dockerTools.pullImage { - imageName = "nvcr.io/nvidia/l4t-jetpack"; + fromImage = cudaDevel; + + copyToRoot = [ + (path + "/pkgs/development/cuda-modules/packages/saxpy/src/") + ]; + + runAsRoot = '' + /usr/local/cuda/bin/nvcc saxpy.cu + ''; + + # See nixpkgs/pkgs/build-support/docker/default.nix buildImage for construction of baseJson + baseJson = writeText "saxpy-builder-config.json" ( + builtins.toJSON { + created = "1970-01-01T00:00:01Z"; + config = null; + architecture = go.GOARCH; + preferLocalBuild = true; os = "linux"; - arch = "arm64"; - imageDigest = "sha256:d1c8e971ab994235840eacc31c4ef4173bf9156317b1bf8aabe7e01eb21b2a0e"; - finalImageTag = "r35.4.1"; # As of 2024-10-27 there is (still) no 35.6.0 image published - sha256 = "sha256-IDePYGssk6yrcaocnluxBaRJb7BrXxS7tBlEo6hNtHw="; - }; + } + ); - config.cmd = [ "bash" "-c" "cd /usr/local/cuda/samples/1_Utilities/deviceQuery && make && ./deviceQuery" ]; - }; - "36" = - let - cuda-samples = fetchFromGitHub { - owner = "NVIDIA"; - repo = "cuda-samples"; - tag = "v12.5"; # There is no 12.6 tag - hash = "sha256-LL9A6olrpSAqePumNzQbAdljnzhOehmqqOy5sJieJk8="; - }; - - extraPrefix = "/share"; - in - dockerTools.buildImage { - name = "l4t-jetpack-with-samples"; - - fromImage = dockerTools.pullImage { - imageName = "nvcr.io/nvidia/l4t-jetpack"; - os = "linux"; - arch = "arm64"; - imageDigest = "sha256:34ccf0f3b63c6da9eee45f2e79de9bf7fdf3beda9abfd72bbf285ae9d40bb673"; - finalImageTag = "r36.4.0"; - sha256 = "sha256-+5+GRmyCl2ZcdYIJHU5snuFzEx1QkZic9bhtx9ZjXeo="; - }; - - copyToRoot = [ - (buildEnv { - name = "cuda-samples-fhs"; - paths = [ cuda-samples ]; - inherit extraPrefix; - }) - ]; - - config.Cmd = [ "bash" "-c" "make -C ${extraPrefix}/Samples/1_Utilities/deviceQuery && ${extraPrefix}/Samples/1_Utilities/deviceQuery/deviceQuery" ]; - }; - }.${lib.versions.major l4tMajorMinorPatchVersion}; + diskSize = 1024 * 20; # 20GB + buildVMMemorySize = 2048; # 2GB + }; + + testContainer = dockerTools.buildLayeredImage { + name = "oci-saxpy-container-test"; + fromImage = cudaBase; + + contents = [ + saxpyLayer + + (writeTextFile { + name = "script-to-run-in-container"; + text = '' + #!/bin/sh + + set -ex + + # nvidia-smi + + tar xf /layer.tar + /a.out + ''; + executable = true; + destination = "/script-in-container"; + }) + ]; + + config.cmd = [ "/script-in-container" ]; + }; normal = stdenv.mkDerivation { name = "test-app"; @@ -104,7 +181,7 @@ let in { oci = writeShellScriptBin "oci-test" '' - image=${l4tImage.imageName}:${l4tImage.imageTag} + image=${testContainer.imageName}:${testContainer.imageTag} for runtime in docker podman; do if command -v $runtime 2>&1 >/dev/null; then @@ -114,8 +191,8 @@ in continue fi - echo "loading image ${l4tImage} with tag $image..." - "$runtime" load --input=${l4tImage} + echo "loading image ${testContainer} with tag $image..." + "$runtime" load --input=${testContainer} echo "loaded image" echo "testing without NVIDIA passthru, which should fail"