mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 13:28:12 -05:00
gnu: onnx: Update to 1.16.2.
* 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>
This commit is contained in:
parent
852c75a125
commit
595cc594b6
5 changed files with 94 additions and 131 deletions
|
@ -1821,7 +1821,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 \
|
||||
|
|
|
@ -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"))
|
||||
(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"
|
||||
(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"))
|
||||
|
||||
"-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 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"))))))
|
||||
;; 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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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}
|
Loading…
Reference in a new issue