diff --git a/pkgs/by-name/on/onnxruntime/musl-cstdint.patch b/pkgs/by-name/on/onnxruntime/musl-cstdint.patch new file mode 100644 index 000000000000..cf98d69fd88f --- /dev/null +++ b/pkgs/by-name/on/onnxruntime/musl-cstdint.patch @@ -0,0 +1,24 @@ +diff --git a/include/onnxruntime/core/framework/tensor_shape.h b/include/onnxruntime/core/framework/tensor_shape.h +index d4ee4a0e5e..c33bea9cf7 100644 +--- a/include/onnxruntime/core/framework/tensor_shape.h ++++ b/include/onnxruntime/core/framework/tensor_shape.h +@@ -8,6 +8,7 @@ + #include + #include + #include ++#include + + #include + #include "core/common/inlined_containers_fwd.h" +diff --git a/onnxruntime/test/perftest/strings_helper.h b/onnxruntime/test/perftest/strings_helper.h +index d6c6f6112a..8580c86db6 100644 +--- a/onnxruntime/test/perftest/strings_helper.h ++++ b/onnxruntime/test/perftest/strings_helper.h +@@ -7,6 +7,7 @@ + #include + #include + #include ++#include + + namespace onnxruntime { + namespace perftest { diff --git a/pkgs/by-name/on/onnxruntime/musl-execinfo.patch b/pkgs/by-name/on/onnxruntime/musl-execinfo.patch new file mode 100644 index 000000000000..3d6b4c014e4d --- /dev/null +++ b/pkgs/by-name/on/onnxruntime/musl-execinfo.patch @@ -0,0 +1,33 @@ +From 7bc56c886c8b9fa27842a14bbb964ffe8e576a9e Mon Sep 17 00:00:00 2001 +From: Jaeyoon Jung +Date: Tue, 12 Aug 2025 10:55:52 +0900 +Subject: [PATCH] Fix build with musl + +Added __GLIBC__ macro for 'execinfo.h' and related functions as they are +GLIBC specific and not available in other libc implementation like musl. +--- + onnxruntime/core/platform/posix/stacktrace.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/onnxruntime/core/platform/posix/stacktrace.cc b/onnxruntime/core/platform/posix/stacktrace.cc +index a34f6fd82ddd1..ab00f5fbb233e 100644 +--- a/onnxruntime/core/platform/posix/stacktrace.cc ++++ b/onnxruntime/core/platform/posix/stacktrace.cc +@@ -3,7 +3,7 @@ + + #include "core/common/common.h" + +-#if !defined(__ANDROID__) && !defined(__wasm__) && !defined(_OPSCHEMA_LIB_) && !defined(_AIX) ++#if !defined(__ANDROID__) && !defined(__wasm__) && !defined(_OPSCHEMA_LIB_) && !defined(_AIX) && defined(__GLIBC__) + #include + #endif + #include +@@ -13,7 +13,7 @@ namespace onnxruntime { + std::vector GetStackTrace() { + std::vector stack; + +-#if !defined(NDEBUG) && !defined(__ANDROID__) && !defined(__wasm__) && !defined(_OPSCHEMA_LIB_) ++#if !defined(NDEBUG) && !defined(__ANDROID__) && !defined(__wasm__) && !defined(_OPSCHEMA_LIB_) && defined(__GLIBC__) + constexpr int kCallstackLimit = 64; // Maximum depth of callstack + + void* array[kCallstackLimit]; diff --git a/pkgs/by-name/on/onnxruntime/package.nix b/pkgs/by-name/on/onnxruntime/package.nix index 0f4de22c3222..4b932dc5996b 100644 --- a/pkgs/by-name/on/onnxruntime/package.nix +++ b/pkgs/by-name/on/onnxruntime/package.nix @@ -5,6 +5,7 @@ fetchFromGitHub, applyPatches, fetchpatch, + fetchurl, abseil-cpp_202407, cmake, cpuinfo, @@ -151,6 +152,20 @@ effectiveStdenv.mkDerivation (finalAttrs: { url = "https://github.com/microsoft/onnxruntime/commit/8ebd0bf1cf02414584d15d7244b07fa97d65ba02.patch"; hash = "sha256-vX+kaFiNdmqWI91JELcLpoaVIHBb5EPbI7rCAMYAx04="; }) + + # Skip execinfo include on musl + # https://github.com/microsoft/onnxruntime/pull/25726 + ./musl-execinfo.patch + # Add missing include which is only needed on musl (is implied in other includes on glibc) + # https://github.com/microsoft/onnxruntime/pull/26969 + ./musl-cstdint.patch + + # Fix build of unit tests with musl libc + # https://github.com/microsoft/onnxruntime/issues/9155 + (fetchurl { + url = "https://gitlab.alpinelinux.org/alpine/aports/-/raw/462dfe0eb4b66948fe48de44545cc22bb64fdf9f/community/onnxruntime/0001-Remove-MATH_NO_EXCEPT-macro.patch"; + hash = "sha256-BdeGYevZExWWCuJ1lSw0Roy3h+9EbJgFF8qMwVxSn1A="; + }) ]; nativeBuildInputs = [ @@ -302,21 +317,26 @@ effectiveStdenv.mkDerivation (finalAttrs: { (lib.cmakeBool "onnxruntime_USE_COMPOSABLE_KERNEL_CK_TILE" false) ]; - env = lib.optionalAttrs rocmSupport { - MIOPEN_PATH = rocmPackages.miopen; - # HIP steps fail to find ROCm libs when not in HIPFLAGS, causing - # fatal error: 'rocrand/rocrand.h' file not found - HIPFLAGS = lib.concatMapStringsSep " " (pkg: "-I${lib.getInclude pkg}/include") [ - rocmPackages.hipblas - rocmPackages.hipcub - rocmPackages.hiprand - rocmPackages.hipsparse - rocmPackages.rocblas - rocmPackages.rocprim - rocmPackages.rocrand - rocmPackages.rocthrust - ]; - }; + env = + lib.optionalAttrs rocmSupport { + MIOPEN_PATH = rocmPackages.miopen; + # HIP steps fail to find ROCm libs when not in HIPFLAGS, causing + # fatal error: 'rocrand/rocrand.h' file not found + HIPFLAGS = lib.concatMapStringsSep " " (pkg: "-I${lib.getInclude pkg}/include") [ + rocmPackages.hipblas + rocmPackages.hipcub + rocmPackages.hiprand + rocmPackages.hipsparse + rocmPackages.rocblas + rocmPackages.rocprim + rocmPackages.rocrand + rocmPackages.rocthrust + ]; + } + // lib.optionalAttrs effectiveStdenv.hostPlatform.isMusl { + NIX_CFLAGS_COMPILE = "-DFLATBUFFERS_LOCALE_INDEPENDENT=0"; + GTEST_FILTER = "*:-ContribOpTest.StringNormalizer*"; + }; doCheck = !( @@ -336,6 +356,7 @@ effectiveStdenv.mkDerivation (finalAttrs: { hardeningEnable = lib.optionals (effectiveStdenv.hostPlatform.system == "loongarch64-linux") [ "nostrictaliasing" ]; + hardeningDisable = lib.optional effectiveStdenv.hostPlatform.isMusl "fortify"; postPatch = '' substituteInPlace cmake/libonnxruntime.pc.cmake.in \