From: David Elsing <david.elsing@posteo.net>
To: 72471@debbugs.gnu.org
Cc: David Elsing <david.elsing@posteo.net>, Andy Tai <atai@atai.org>
Subject: [bug#72471] [PATCH 16/24] gnu: onnx: Update to 1.16.2.
Date: Sun, 4 Aug 2024 22:15:54 +0000 [thread overview]
Message-ID: <20240804221635.3805-16-david.elsing@posteo.net> (raw)
In-Reply-To: <20240804220847.15842-1-david.elsing@posteo.net>
* gnu/packages/machine-learning.scm (onnx): Update to 1.16.2.
[source]: Remove patch.
[build-system]: Move to pyproject-build-system.
[arguments]<#:tests?>: Disable for systems where python-nbval is not
supported.
<#:phases>: Remove 'relax-requirements' phase. Pass "-DONNX_BUILD_TESTS" to
CMake depending on tests?.
[native-inputs]: Add python-fb-re2 and python-parameterized-next. Remove
python-nbval on unsupported systems.
* gnu/packages/patches/onnx-shared-libraries.patch: Adjust patch.
* gnu/packages/patches/onnx-skip-model-downloads.patch: Adjust patch.
* gnu/packages/patches/onnx-use-system-googletest.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Remove it.
Co-authored-by: Andy Tai <atai@atai.org>
---
gnu/local.mk | 1 -
gnu/packages/machine-learning.scm | 139 ++++++++++--------
.../patches/onnx-shared-libraries.patch | 18 ++-
.../patches/onnx-skip-model-downloads.patch | 16 +-
.../patches/onnx-use-system-googletest.patch | 57 -------
5 files changed, 97 insertions(+), 134 deletions(-)
delete mode 100644 gnu/packages/patches/onnx-use-system-googletest.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index fd8262de55..61fb2f4816 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1792,7 +1792,6 @@ dist_patch_DATA = \
%D%/packages/patches/onionshare-cli-async-mode.patch \
%D%/packages/patches/online-judge-tools.patch \
%D%/packages/patches/onnx-optimizer-system-library.patch \
- %D%/packages/patches/onnx-use-system-googletest.patch \
%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 \
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index b1b11b5410..fff7a8c24a 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -28,6 +28,7 @@
;;; Copyright © 2024 Timothee Mathieu <timothee.mathieu@inria.fr>
;;; Copyright © 2024 Spencer King <spencer.king@geneoscopy.com>
;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
+;;; Copyright © 2024 Andy Tai <atai@atai.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1331,7 +1332,7 @@ (define (delete-ifdefs file)
(define-public onnx
(package
(name "onnx")
- (version "1.12.0")
+ (version "1.16.2")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -1339,70 +1340,88 @@ (define-public onnx
(commit (string-append "v" version))))
(sha256
(base32
- "1g9f1hviksbn7gi6fnd0dsm7nf0w3yia0mjj33d9mggklrl0db6x"))
+ "0f5h204ksfz4ir3qq38ckxja1jfhf1vn5xzwrj83vkkbfjq6fv16"))
(file-name (git-file-name name version))
- (patches (search-patches "onnx-use-system-googletest.patch"
- "onnx-shared-libraries.patch"
- "onnx-skip-model-downloads.patch"))
+ (patches (search-patches
+ "onnx-shared-libraries.patch"
+ "onnx-skip-model-downloads.patch"))
(modules '((guix build utils)))
(snippet '(delete-file-recursively "third_party"))))
- (build-system python-build-system)
+ (build-system pyproject-build-system)
(arguments
- '(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'relax-requirements
- (lambda _
- ;; Does this difference really matter?
- (substitute* "requirements.txt"
- (("3.20.1") "3.20.2"))))
- (add-before 'build 'pass-cmake-arguments
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Pass options to the CMake-based build process.
- (define out
- (assoc-ref outputs "out"))
-
- (define args
- ;; Copy arguments from 'cmake-build-system', plus ask
- ;; for shared libraries.
- (list "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
- (string-append "-DCMAKE_INSTALL_PREFIX=" out)
- "-DCMAKE_INSTALL_LIBDIR=lib"
- "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE"
- (string-append "-DCMAKE_INSTALL_RPATH=" out
- "/lib")
- "-DCMAKE_VERBOSE_MAKEFILE=ON"
-
- "-DBUILD_SHARED_LIBS=ON"))
-
- ;; This environment variable is honored by 'setup.py',
- ;; which passes it down to 'cmake'.
- (setenv "CMAKE_ARGS" (string-join args))
-
- ;; This one is honored by 'setup.py' and passed to 'make
- ;; -j'.
- (setenv "MAX_JOBS"
- (number->string (parallel-job-count)))))
- (add-before 'check 'make-test-directory-writable
- (lambda _
- ;; Make things writable for tests.
- (setenv "HOME" (getcwd))
- (for-each make-file-writable
- (find-files "onnx/examples" "."
- #:directories? #t))))
- (add-after 'install 'install-from-cmake
- (lambda _
- ;; Run "make install" in the build tree 'setup.py'
- ;; created for CMake so that libonnx.so,
- ;; libonnx_proto.so, etc. are installed.
- (invoke "make" "install"
- "-C" ".setuptools-cmake-build"))))))
+ (list
+ ;; python-nbval depends transitively on Rust.
+ #:tests?
+ (->bool (member (or (%current-target-system)
+ (%current-system))
+ (package-transitive-supported-systems python-nbval)))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'build 'pass-cmake-arguments
+ (lambda* (#:key outputs tests? #:allow-other-keys)
+ ;; For derived package use
+ (substitute* "CMakeLists.txt"
+ (("set\\(ONNX_ROOT.*")
+ (string-append "set(ONNX_ROOT "#$(package-source this-package) ")\n"))
+ (("\\$\\{ROOT_DIR\\}(/tools.*)" _ rest)
+ (string-append "${PROJECT_SOURCE_DIR}" rest)))
+ ;; Pass options to the CMake-based build process.
+ (define out
+ (assoc-ref outputs "out"))
+
+ (define args
+ ;; Copy arguments from 'cmake-build-system', plus ask
+ ;; for shared libraries.
+ (list "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
+ (string-append "-DCMAKE_INSTALL_PREFIX=" out)
+ "-DCMAKE_INSTALL_LIBDIR=lib"
+ "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE"
+ (string-append "-DCMAKE_INSTALL_RPATH=" out
+ "/lib")
+ "-DCMAKE_VERBOSE_MAKEFILE=ON"
+ (string-append "-DONNX_BUILD_TESTS="
+ (if tests? "ON" "OFF"))
+ "-DBUILD_SHARED_LIBS=ON"
+ "-DONNX_USE_PROTOBUF_SHARED_LIBS=ON"))
+
+ ;; This environment variable is honored by 'setup.py',
+ ;; which passes it down to 'cmake'.
+ (setenv "CMAKE_ARGS" (string-join args))
+
+ ;; This one is honored by 'setup.py' and passed to 'make
+ ;; -j'.
+ (setenv "MAX_JOBS"
+ (number->string (parallel-job-count)))))
+ (add-before 'check 'make-test-directory-writable
+ (lambda _
+ ;; Make things writable for tests.
+ (setenv "HOME" (getcwd))
+ (for-each make-file-writable
+ (find-files "onnx/examples" "."
+ #:directories? #t))))
+ (add-after 'install 'install-from-cmake
+ (lambda _
+ ;; Run "make install" in the build tree 'setup.py'
+ ;; created for CMake so that libonnx.so,
+ ;; libonnx_proto.so, etc. are installed.
+ (invoke "make" "install"
+ "-C" ".setuptools-cmake-build"))))))
(native-inputs
- (list cmake
- googletest
- pybind11
- python-coverage
- python-nbval
- python-pytest
- python-pytest-runner))
+ (append
+ (list cmake-minimal
+ googletest
+ pybind11
+ python-coverage
+ python-fb-re2
+ python-parameterized-next
+ python-pytest
+ python-pytest-runner)
+ (filter
+ (lambda (pkg)
+ (member (or (%current-target-system)
+ (%current-system))
+ (package-transitive-supported-systems pkg)))
+ (list python-nbval))))
(inputs
(list protobuf))
(propagated-inputs
diff --git a/gnu/packages/patches/onnx-shared-libraries.patch b/gnu/packages/patches/onnx-shared-libraries.patch
index 00583b35da..5a3fd658d0 100644
--- a/gnu/packages/patches/onnx-shared-libraries.patch
+++ b/gnu/packages/patches/onnx-shared-libraries.patch
@@ -1,13 +1,12 @@
-These linker options for the 'onnx_cpp2py_export.cpython-38-*-gnu.so'
-(or similar) extension are meant to be used when building 'libonn.a',
-a static archive. This patch adapts the link flags to linking with
-'libonnx.so'.
+These linker options for the 'onnx_cpp2py_export.cpython-310-*-gnu.so' (or
+similar) extension are meant to be used when building 'libonn.a', a static
+archive. This patch adapts the link flags to linking with 'libonnx.so'.
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index cede3073..52f846ed 100644
+index b666eec4..1525b219 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -475,11 +475,10 @@ if(BUILD_ONNX_PYTHON)
+@@ -585,16 +585,15 @@ if(BUILD_ONNX_PYTHON)
PRIVATE $<TARGET_OBJECTS:onnx>)
else()
# Assume everything else is like gcc
@@ -15,10 +14,15 @@ index cede3073..52f846ed 100644
- PRIVATE "-Wl,--whole-archive" $<TARGET_FILE:onnx>
- "-Wl,--no-whole-archive")
+ target_link_libraries(onnx_cpp2py_export PRIVATE onnx)
+ # Prevent "undefined symbol: _ZNSt10filesystem7__cxx114path14_M_split_cmptsEv"
+ # (std::filesystem::__cxx11::path::_M_split_cmpts()) on gcc 8
+ if (CMAKE_CXX_STANDARD EQUAL 17 AND CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0)
+ target_link_libraries(onnx_cpp2py_export PRIVATE "-lstdc++fs")
+ endif()
set_target_properties(onnx_cpp2py_export
- PROPERTIES LINK_FLAGS "-Wl,--exclude-libs,ALL")
+ PROPERTIES LINK_FLAGS
-+ "-Wl,-rpath=${CMAKE_INSTALL_PREFIX}/lib")
++ "-Wl,-rpath=${CMAKE_INSTALL_PREFIX}/lib")
endif()
target_link_libraries(onnx_cpp2py_export PRIVATE onnx)
diff --git a/gnu/packages/patches/onnx-skip-model-downloads.patch b/gnu/packages/patches/onnx-skip-model-downloads.patch
index 4ab55b4ceb..55925a3ebf 100644
--- a/gnu/packages/patches/onnx-skip-model-downloads.patch
+++ b/gnu/packages/patches/onnx-skip-model-downloads.patch
@@ -1,16 +1,14 @@
-A few tests require downloading models from URLs such as
- <https://s3.amazonaws.com/download.onnx/models/opset_9/zfnet512.tar.gz>.
-Skip those.
+A few tests require downloading models. Skip those.
diff --git a/onnx/backend/test/runner/__init__.py b/onnx/backend/test/runner/__init__.py
-index 049ed57b..f236f1bf 100644
+index 5b60e7c0..838c7ba5 100644
--- a/onnx/backend/test/runner/__init__.py
+++ b/onnx/backend/test/runner/__init__.py
-@@ -202,6 +202,7 @@ class Runner(object):
- print('Start downloading model {} from {}'.format(
- model_test.model_name,
- model_test.url))
+@@ -236,6 +236,7 @@ class Runner:
+ print(
+ f"Start downloading model {model_test.model_name} from {model_test.url}"
+ )
+ raise unittest.SkipTest('Skipping download')
urlretrieve(model_test.url, download_file.name)
- print('Done')
+ print("Done")
with tarfile.open(download_file.name) as t:
diff --git a/gnu/packages/patches/onnx-use-system-googletest.patch b/gnu/packages/patches/onnx-use-system-googletest.patch
deleted file mode 100644
index 5dfcbc6dc3..0000000000
--- a/gnu/packages/patches/onnx-use-system-googletest.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-ONNX will build googletest from a Git checkout. Patch CMake to use our
-googletest package and enable tests by default.
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 0aa9fda2..a573170c 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -22,7 +22,7 @@ option(BUILD_ONNX_PYTHON "Build Python binaries" OFF)
- option(ONNX_GEN_PB_TYPE_STUBS "Generate protobuf python type stubs" ON)
- option(ONNX_WERROR "Build with Werror" OFF)
- option(ONNX_COVERAGE "Build with coverage instrumentation" OFF)
--option(ONNX_BUILD_TESTS "Build ONNX C++ APIs Tests" OFF)
-+option(ONNX_BUILD_TESTS "Build ONNX C++ APIs Tests" ON)
- option(ONNX_USE_LITE_PROTO "Use lite protobuf instead of full." OFF)
- option(ONNXIFI_ENABLE_EXT "Enable onnxifi extensions." OFF)
- if(NOT DEFINED ONNX_ML)
-@@ -82,8 +82,10 @@ if(CMAKE_SYSTEM_NAME STREQUAL "AIX")
- endif()
-
- if(ONNX_BUILD_TESTS)
-- list(APPEND CMAKE_MODULE_PATH ${ONNX_ROOT}/cmake/external)
-- include(googletest)
-+ find_package(GTest REQUIRED)
-+ if(NOT GTest_FOUND)
-+ message(FATAL_ERROR "cannot find googletest")
-+ endif()
- endif()
-
- if((ONNX_USE_LITE_PROTO AND TARGET protobuf::libprotobuf-lite) OR ((NOT ONNX_USE_LITE_PROTO) AND TARGET protobuf::libprotobuf))
-diff --git a/cmake/unittest.cmake b/cmake/unittest.cmake
-index e29a93ff..ae146390 100644
---- a/cmake/unittest.cmake
-+++ b/cmake/unittest.cmake
-@@ -6,8 +6,8 @@ include(${ONNX_ROOT}/cmake/Utils.cmake)
-
- find_package(Threads)
-
--set(${UT_NAME}_libs ${googletest_STATIC_LIBRARIES})
--set(${ONNXIFI_TEST_DRIVER}_libs ${googletest_STATIC_LIBRARIES})
-+set(${UT_NAME}_libs ${GTEST_LIBRARIES})
-+set(${ONNXIFI_TEST_DRIVER}_libs ${GTEST_LIBRARIES})
-
- list(APPEND ${UT_NAME}_libs onnx)
- list(APPEND ${UT_NAME}_libs onnx_proto)
-@@ -31,10 +31,10 @@ function(AddTest)
- list(REMOVE_DUPLICATES _UT_SOURCES)
-
- add_executable(${_UT_TARGET} ${_UT_SOURCES})
-- add_dependencies(${_UT_TARGET} onnx onnx_proto googletest)
-+ add_dependencies(${_UT_TARGET} onnx onnx_proto)
-
- target_include_directories(${_UT_TARGET}
-- PUBLIC ${googletest_INCLUDE_DIRS}
-+ PUBLIC ${GTEST_INCLUDE_DIRS}
- ${ONNX_INCLUDE_DIRS}
- ${PROTOBUF_INCLUDE_DIRS}
- ${ONNX_ROOT}
--
2.45.1
next prev parent reply other threads:[~2024-08-04 22:18 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-04 21:53 [bug#72471] [PATCH 00/24] Update PyTorch and dependencies David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 01/24] gnu: asmjit: Update to commit 062e69c David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 02/24] gnu: Remove python-typing-extensions-4.10 David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 03/24] gnu: python-optree: Update to 0.11.0 David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 04/24] gnu: flatbuffers-next: Update to 24.3.25 David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 05/24] gnu: pthreadpool: Update to commit 560c60d David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 06/24] gnu: cpuinfo: Update to commit 05332fd David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 07/24] gnu: nnpack: Depend on python-peachpy only for x86_64 David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 08/24] gnu: oneapi-dnnl: Update to 3.5.3 David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 09/24] gnu: fbgemm: Update to 0.7.0 David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 10/24] gnu: xnnpack: Update to commit 08f1489 David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 11/24] gnu: Add xnnpack-for-r-torch David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 12/24] gnu: python-nbval: Update to 0.11.0 David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 13/24] gnu: Add python-parameterized-next David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 14/24] gnu: Remove onnx-optimizer-for-torch2 David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 15/24] gnu: Remove onnx-for-torch2 David Elsing
2024-08-04 22:15 ` David Elsing [this message]
2024-08-04 22:15 ` [bug#72471] [PATCH 17/24] gnu: onnx-optimizer: Update to 0.3.19 David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 18/24] gnu: gloo: Update to commit 81925d1 David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 19/24] gnu: cpp-httplib: Update to 0.16.0 David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 20/24] gnu: python-pytorch: Update to 2.4.0 David Elsing
2024-08-04 22:15 ` [bug#72471] [PATCH 21/24] gnu: python-torchvision: Update to 0.19.0 David Elsing
2024-08-04 22:16 ` [bug#72471] [PATCH 22/24] gnu: python-lightning-utilities: Update to 0.11.6 David Elsing
2024-08-04 22:16 ` [bug#72471] [PATCH 23/24] gnu: python-torchmetrics: Update to 1.4.1 David Elsing
2024-08-04 22:16 ` [bug#72471] [PATCH 24/24] gnu: python-pytorch-lightning: Update to commit 2064887 David Elsing
2024-09-06 9:54 ` bug#72471: [PATCH 00/24] Update PyTorch and dependencies Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240804221635.3805-16-david.elsing@posteo.net \
--to=david.elsing@posteo.net \
--cc=72471@debbugs.gnu.org \
--cc=atai@atai.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.