From 7b83777cad403bfe4a4a633f6f8eec9498bdf907 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 16 Mar 2025 12:44:07 +0100 Subject: [PATCH] onnxruntime: 1.20.2 -> 1.21.0 --- .../libraries/onnxruntime/default.nix | 43 ++++++++++--------- .../libraries/onnxruntime/eigen.patch | 28 ------------ .../libraries/onnxruntime/nvcc-gsl.patch | 9 ++-- 3 files changed, 27 insertions(+), 53 deletions(-) delete mode 100644 pkgs/development/libraries/onnxruntime/eigen.patch diff --git a/pkgs/development/libraries/onnxruntime/default.nix b/pkgs/development/libraries/onnxruntime/default.nix index 1f3c1144d8d3..90ee4580532f 100644 --- a/pkgs/development/libraries/onnxruntime/default.nix +++ b/pkgs/development/libraries/onnxruntime/default.nix @@ -2,6 +2,7 @@ , stdenv , lib , fetchFromGitHub +, fetchpatch , Foundation , abseil-cpp_202407 , cmake @@ -14,7 +15,6 @@ , howard-hinnant-date , libpng , nlohmann_json -, nsync , pkg-config , python3Packages , re2 @@ -30,13 +30,13 @@ let - version = "1.20.2"; + version = "1.21.0"; src = fetchFromGitHub { owner = "microsoft"; repo = "onnxruntime"; tag = "v${version}"; - hash = "sha256-GTrRRNdqLUKCcWC9VdV/Oslszykn73dMXf66FLcHRVc="; + hash = "sha256-BaHXpK6Ek+gsld7v+OBM+C3FjrPiyMQYP1liv7mEjho="; fetchSubmodules = true; }; @@ -77,14 +77,8 @@ let onnx = fetchFromGitHub { owner = "onnx"; repo = "onnx"; - tag = "v1.16.1"; - hash = "sha256-+NmWoZDXNJ8YQIWlUXV+czHyI8UtJedu2VG+1aR5L7s="; - # Apply backport of https://github.com/onnx/onnx/pull/6195 from 1.17.0 - postFetch = '' - pushd $out - patch -p1 < ${src}/cmake/patches/onnx/onnx.patch - popd - ''; + tag = "v1.17.0"; + hash = "sha256-9oORW0YlQ6SphqfbjcYb0dTlHc+1gzy9quH/Lj6By8Q="; }; cutlass = fetchFromGitHub { @@ -92,21 +86,28 @@ let repo = "cutlass"; tag = "v3.5.1"; hash = "sha256-sTGYN+bjtEqQ7Ootr/wvx3P9f8MCDSSj3qyCWjfdLEA="; - }; + }; + + dlpack = fetchFromGitHub { + owner = "dmlc"; + repo = "dlpack"; + tag = "v0.6"; + hash = "sha256-YJdZ0cMtUncH5Z6TtAWBH0xtAIu2UcbjnVcCM4tfg20="; + }; + in + effectiveStdenv.mkDerivation rec { pname = "onnxruntime"; inherit src version; patches = [ - # If you stumble on these patches trying to update onnxruntime, check - # `git blame` and ping the introducers. - - # Context: we want the upstream to - # - always try find_package first (FIND_PACKAGE_ARGS), - # - use MakeAvailable instead of the low-level Populate, - # - use Eigen3::Eigen as the target name (as declared by libeigen/eigen). - ./eigen.patch + # drop with the next update + # https://github.com/microsoft/onnxruntime/pull/23939 + (fetchpatch { + url = "https://github.com/microsoft/onnxruntime/commit/55553703eaa8cd01d2b01cc21171a0ea515c888a.patch"; + hash = "sha256-gL1rMNUcteKcjLmdJ+0r67rvNrC31bAyKYx4aeseWkM="; + }) ] ++ lib.optionals cudaSupport [ # We apply the referenced 1064.patch ourselves to our nix dependency. # FIND_PACKAGE_ARGS for CUDA was added in https://github.com/microsoft/onnxruntime/commit/87744e5 so it might be possible to delete this patch after upgrading to 1.17.0 @@ -179,8 +180,8 @@ effectiveStdenv.mkDerivation rec { "-DFETCHCONTENT_FULLY_DISCONNECTED=ON" "-DFETCHCONTENT_QUIET=OFF" "-DFETCHCONTENT_SOURCE_DIR_ABSEIL_CPP=${abseil-cpp_202407.src}" + "-DFETCHCONTENT_SOURCE_DIR_DLPACK=${dlpack}" "-DFETCHCONTENT_SOURCE_DIR_FLATBUFFERS=${flatbuffers_23.src}" - "-DFETCHCONTENT_SOURCE_DIR_GOOGLE_NSYNC=${nsync.src}" "-DFETCHCONTENT_SOURCE_DIR_MP11=${mp11}" "-DFETCHCONTENT_SOURCE_DIR_ONNX=${onnx}" "-DFETCHCONTENT_SOURCE_DIR_RE2=${re2.src}" diff --git a/pkgs/development/libraries/onnxruntime/eigen.patch b/pkgs/development/libraries/onnxruntime/eigen.patch deleted file mode 100644 index 3a58755812d4..000000000000 --- a/pkgs/development/libraries/onnxruntime/eigen.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff --git a/cmake/external/eigen.cmake b/cmake/external/eigen.cmake -index 339cded091..6264c8da69 100644 ---- a/cmake/external/eigen.cmake -+++ b/cmake/external/eigen.cmake -@@ -9,15 +9,21 @@ else () - URL ${DEP_URL_eigen} - URL_HASH SHA1=${DEP_SHA1_eigen} - PATCH_COMMAND ${Patch_EXECUTABLE} --binary --ignore-whitespace -p1 < ${PROJECT_SOURCE_DIR}/patches/eigen/eigen-aix.patch -+ FIND_PACKAGE_ARGS NAMES Eigen3 - ) - else() - FetchContent_Declare( - eigen - URL ${DEP_URL_eigen} - URL_HASH SHA1=${DEP_SHA1_eigen} -+ FIND_PACKAGE_ARGS NAMES Eigen3 - ) - endif() - -- FetchContent_Populate(eigen) -- set(eigen_INCLUDE_DIRS "${eigen_SOURCE_DIR}") -+ FetchContent_MakeAvailable(eigen) -+ add_library(eigen ALIAS Eigen3::Eigen) -+ # Onnxruntime doesn't always use `eigen` as a target in -+ # `target_link_libraries`, sometimes it just uses -+ # `target_include_directories`: -+ get_target_property(eigen_INCLUDE_DIRS Eigen3::Eigen INTERFACE_INCLUDE_DIRECTORIES) - endif() diff --git a/pkgs/development/libraries/onnxruntime/nvcc-gsl.patch b/pkgs/development/libraries/onnxruntime/nvcc-gsl.patch index c6ac77602fca..11127d93e1ce 100644 --- a/pkgs/development/libraries/onnxruntime/nvcc-gsl.patch +++ b/pkgs/development/libraries/onnxruntime/nvcc-gsl.patch @@ -1,19 +1,20 @@ diff --git a/cmake/external/onnxruntime_external_deps.cmake b/cmake/external/onnxruntime_external_deps.cmake -index 85746027d4..346ac37a54 100644 +index ebf20ab21b..2aa5d9e908 100644 --- a/cmake/external/onnxruntime_external_deps.cmake +++ b/cmake/external/onnxruntime_external_deps.cmake -@@ -422,14 +422,6 @@ if ((CPUINFO_SUPPORTED OR onnxruntime_USE_XNNPACK) AND NOT ANDROID) +@@ -403,15 +403,6 @@ if (CPUINFO_SUPPORTED) endif() if(onnxruntime_USE_CUDA) -- FetchContent_Declare( +- onnxruntime_fetchcontent_declare( - GSL - URL ${DEP_URL_microsoft_gsl} - URL_HASH SHA1=${DEP_SHA1_microsoft_gsl} - PATCH_COMMAND ${Patch_EXECUTABLE} --binary --ignore-whitespace -p1 < ${PROJECT_SOURCE_DIR}/patches/gsl/1064.patch +- EXCLUDE_FROM_ALL - FIND_PACKAGE_ARGS 4.0 NAMES Microsoft.GSL - ) -else() - FetchContent_Declare( + onnxruntime_fetchcontent_declare( GSL URL ${DEP_URL_microsoft_gsl}