guix_mirror_bot pushed a commit to branch master
in repository guix.
commit a2dbf339f1a35c21da01d0ad2e724ed5b345ad20
Author: Danny Milosavljevic <[email protected]>
AuthorDate: Fri Feb 13 23:37:08 2026 +0100
gnu: onnxruntime: Fix integration into projects.
* gnu/packages/patches/onnxruntime-1.22.0-splittosequence-bool.patch: New
file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/machine-learning.scm (onnxruntime)[source]: Use patch.
[arguments]<#:configure-flags>: Enable onnxruntime_USE_FULL_PROTOBUF,
Protobuf_USE_STATIC_LIBS=ON.
[inputs]: Replace onnx by onnx-for-onnxruntime.
Replace protobuf by protobuf-static-for-onnxruntime.
Change-Id: I20d8172b9c4e81ce351cf40102be7db388387a0d
---
gnu/local.mk | 1 +
gnu/packages/machine-learning.scm | 20 +++++--
.../onnxruntime-1.22.0-splittosequence-bool.patch | 65 ++++++++++++++++++++++
3 files changed, 82 insertions(+), 4 deletions(-)
diff --git a/gnu/local.mk b/gnu/local.mk
index 77e2f39e13..0fbbdc4885 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2008,6 +2008,7 @@ dist_patch_DATA =
\
%D%/packages/patches/onnx-1.13.1-use-system-googletest.patch \
%D%/packages/patches/onnx-shared-libraries.patch \
%D%/packages/patches/onnx-skip-model-downloads.patch \
+ %D%/packages/patches/onnxruntime-1.22.0-splittosequence-bool.patch \
%D%/packages/patches/openbios-aarch64-riscv64-support.patch \
%D%/packages/patches/openboardview-use-system-imgui.patch \
%D%/packages/patches/openboardview-use-system-mpc.patch \
diff --git a/gnu/packages/machine-learning.scm
b/gnu/packages/machine-learning.scm
index 005fca18ab..74084019b6 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -2203,7 +2203,14 @@ with a single function call.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "0z2s79l4wdilssw9lmj319ypyyqi2y0dx0fpwr2yhq8bax3ci50n"))))
+ (base32 "0z2s79l4wdilssw9lmj319ypyyqi2y0dx0fpwr2yhq8bax3ci50n"))
+ (patches
+ (search-patches
+ ;; SplitToSequence operator was missing bool type support, despite
+ ;; the ONNX spec allowing it in models. Fixed upstream in 1.23+,
+ ;; but we cannot upgrade because ROCm support was removed in 1.23.
+ ;; <https://github.com/microsoft/onnxruntime/pull/24929>
+ "onnxruntime-1.22.0-splittosequence-bool.patch"))))
(build-system cmake-build-system)
(arguments
(list
@@ -2217,7 +2224,12 @@ with a single function call.")
"-Donnxruntime_BUILD_SHARED_LIB=ON"
"-Donnxruntime_ENABLE_LTO=ON"
"-Donnxruntime_ENABLE_PYTHON=ON"
- "-Donnxruntime_USE_FULL_PROTOBUF=OFF"
+ "-Donnxruntime_USE_FULL_PROTOBUF=ON"
+ ;; Link static protobuf, matching upstream's vcpkg approach.
+ ;; This keeps the protobuf descriptor pool inside
+ ;; onnxruntime_pybind11_state.so separate from the shared
+ ;; libprotobuf.so used by the regular onnx Python package.
+ "-DProtobuf_USE_STATIC_LIBS=ON"
;; XXX: Fixes build with gcc@14.
"-DCMAKE_CXX_FLAGS=-Wl,-z,noexecstack")
#:phases
@@ -2296,8 +2308,8 @@ with a single function call.")
flatbuffers-23.5
googletest
nlohmann-json
- onnx
- protobuf
+ onnx-for-onnxruntime
+ protobuf-static-for-onnxruntime
pybind11-2
re2-next
safeint
diff --git a/gnu/packages/patches/onnxruntime-1.22.0-splittosequence-bool.patch
b/gnu/packages/patches/onnxruntime-1.22.0-splittosequence-bool.patch
new file mode 100644
index 0000000000..373471f484
--- /dev/null
+++ b/gnu/packages/patches/onnxruntime-1.22.0-splittosequence-bool.patch
@@ -0,0 +1,65 @@
+From 3b18e8ac863f817cddf0a2fc1ff89aa05fe60557 Mon Sep 17 00:00:00 2001
+From: Mauricio Cortazar <[email protected]>
+Date: Mon, 2 Jun 2025 12:51:41 -0500
+Subject: [PATCH] Add support for bool type in SplitToSequence.
+
+Add support for `bool` type to address the below issue.
+This PR fixes <https://github.com/microsoft/onnxruntime/issues/12286>
+---
+ docs/OperatorKernels.md | 2 +-
+ .../core/providers/cpu/sequence/sequence_ops.cc | 2 +-
+ .../providers/cpu/sequence/sequence_ops_test.cc | 16 +++++++++++++++-
+ 3 files changed, 17 insertions(+), 3 deletions(-)
+
+diff --git a/docs/OperatorKernels.md b/docs/OperatorKernels.md
+index 8c1ab002bce67..fc7b1ed21575c 100644
+--- a/docs/OperatorKernels.md
++++ b/docs/OperatorKernels.md
+@@ -437,7 +437,7 @@ Do not modify directly.*
+ |||[13, 17]|**T** = tensor(bfloat16), tensor(bool), tensor(double),
tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64),
tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint64),
tensor(uint8)|
+ |||[11, 12]|**T** = tensor(bfloat16), tensor(bool), tensor(double),
tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64),
tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint64),
tensor(uint8)|
+ |||[2, 10]|**T** = tensor(bfloat16), tensor(bool), tensor(double),
tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64),
tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint64),
tensor(uint8)|
+-|SplitToSequence|*in* input:**T**<br> *in* split:**I**<br> *out*
output_sequence:**S**|11+|**I** = tensor(int32), tensor(int64)<br/> **S** =
seq(tensor(bfloat16)), seq(tensor(bool)), seq(tensor(double)),
seq(tensor(float)), seq(tensor(float16)), seq(tensor(int16)),
seq(tensor(int32)), seq(tensor(int64)), seq(tensor(int8)), seq(tensor(string)),
seq(tensor(uint16)), seq(tensor(uint32)), seq(tensor(uint64)),
seq(tensor(uint8))<br/> **T** = tensor(double), tensor(float), tensor(float16),
te [...]
++|SplitToSequence|*in* input:**T**<br> *in* split:**I**<br> *out*
output_sequence:**S**|11+|**I** = tensor(int32), tensor(int64)<br/> **S** =
seq(tensor(bfloat16)), seq(tensor(bool)), seq(tensor(double)),
seq(tensor(float)), seq(tensor(float16)), seq(tensor(int16)),
seq(tensor(int32)), seq(tensor(int64)), seq(tensor(int8)), seq(tensor(string)),
seq(tensor(uint16)), seq(tensor(uint32)), seq(tensor(uint64)),
seq(tensor(uint8))<br/> **T** = tensor(bool), tensor(double), tensor(float),
tenso [...]
+ |Sqrt|*in* X:**T**<br> *out* Y:**T**|13+|**T** = tensor(double),
tensor(float)|
+ |||[6, 12]|**T** = tensor(double), tensor(float)|
+ |Squeeze|*in* data:**T**<br> *in* axes:**tensor(int64)**<br> *out*
squeezed:**T**<br><br>or<br><br>*in* data:**T**<br> *out*
squeezed:**T**|23+|**T** = tensor(bfloat16), tensor(bool), tensor(double),
tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64),
tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint64),
tensor(uint8)|
+diff --git a/onnxruntime/core/providers/cpu/sequence/sequence_ops.cc
b/onnxruntime/core/providers/cpu/sequence/sequence_ops.cc
+index 7a27b04ece7cf..d2541cf3d35ce 100644
+--- a/onnxruntime/core/providers/cpu/sequence/sequence_ops.cc
++++ b/onnxruntime/core/providers/cpu/sequence/sequence_ops.cc
+@@ -339,7 +339,7 @@ ONNX_CPU_OPERATOR_KERNEL(
+ 11,
+ KernelDefBuilder()
+ .TypeConstraint("T",
+- BuildKernelDefConstraints<float, MLFloat16, double,
int32_t, int64_t, std::string>())
++ BuildKernelDefConstraints<float, MLFloat16, double,
int32_t, int64_t, bool, std::string>())
+ .TypeConstraint("S", DataTypeImpl::AllSequenceTensorTypes())
+ .TypeConstraint("I", BuildKernelDefConstraints<int32_t, int64_t>()),
+ SplitToSequence);
+diff --git a/onnxruntime/test/providers/cpu/sequence/sequence_ops_test.cc
b/onnxruntime/test/providers/cpu/sequence/sequence_ops_test.cc
+index c2d64b8e5ee4a..d819b0973adc2 100644
+--- a/onnxruntime/test/providers/cpu/sequence/sequence_ops_test.cc
++++ b/onnxruntime/test/providers/cpu/sequence/sequence_ops_test.cc
+@@ -536,5 +536,19 @@ TEST(SequenceOpsTest,
SplitToSequence_PositiveAxisDontKeepDims) {
+ test.AddSeqOutput("S2", output);
+ test.Run();
+ }
++
++TEST(SequenceOpsTest, SplitToSequence_BoolSplit) {
++ OpTester test("SplitToSequence", 11);
++ test.AddInput<bool>("input", {4, 2}, std::initializer_list<bool>({1, 1, 1,
1, 0, 0, 0, 0}));
++ int64_t axis = 0;
++ test.AddAttribute("axis", axis);
++ SeqTensors<bool> output;
++ output.AddTensor({1, 2}, {1, 1});
++ output.AddTensor({1, 2}, {1, 1});
++ output.AddTensor({1, 2}, {0, 0});
++ output.AddTensor({1, 2}, {0, 0});
++ test.AddSeqOutput("S2", output);
++ test.Run();
++}
+ } // namespace test
+-} // namespace onnxruntime
+\ No newline at end of file
++} // namespace onnxruntime