[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
04/13: gnu: python-onnx: Install libonnx.so and libonnx_proto.so.
From: |
guix-commits |
Subject: |
04/13: gnu: python-onnx: Install libonnx.so and libonnx_proto.so. |
Date: |
Fri, 30 Jul 2021 19:04:26 -0400 (EDT) |
civodul pushed a commit to branch master
in repository guix.
commit 2b55f914c3198f9b07399d10502fbdb22b7d6e47
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Fri Jul 30 17:04:40 2021 +0200
gnu: python-onnx: Install libonnx.so and libonnx_proto.so.
* gnu/packages/patches/python-onnx-shared-libraries.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/machine-learning.scm (python-onnx)[source]: Use it.
[arguments]: New field.
---
gnu/local.mk | 1 +
gnu/packages/machine-learning.scm | 39 +++++++++++++++++++++-
.../patches/python-onnx-shared-libraries.patch | 24 +++++++++++++
3 files changed, 63 insertions(+), 1 deletion(-)
diff --git a/gnu/local.mk b/gnu/local.mk
index 472b030..798560c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1634,6 +1634,7 @@ dist_patch_DATA =
\
%D%/packages/patches/python-mox3-python3.6-compat.patch \
%D%/packages/patches/python-testtools.patch \
%D%/packages/patches/python-onnx-use-system-googletest.patch \
+ %D%/packages/patches/python-onnx-shared-libraries.patch \
%D%/packages/patches/python-packaging-test-arch.patch \
%D%/packages/patches/python2-parameterized-docstring-test.patch \
%D%/packages/patches/python-paste-remove-timing-test.patch \
diff --git a/gnu/packages/machine-learning.scm
b/gnu/packages/machine-learning.scm
index 268ec9b..1cea919 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -589,12 +589,49 @@ in terms of new algorithms.")
(origin
(method url-fetch)
(uri (pypi-uri "onnx" version))
- (patches (search-patches "python-onnx-use-system-googletest.patch"))
+ (patches (search-patches "python-onnx-use-system-googletest.patch"
+ "python-onnx-shared-libraries.patch"))
(sha256
(base32 "0yjv2axz2vc2ysniwislsp53fsb8f61y1warrr2ppn2d9ijml1d9"))
(modules '((guix build utils)))
(snippet '(delete-file-recursively "third_party"))))
(build-system python-build-system)
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (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-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
`(("cmake" ,cmake)
("googletest" ,googletest)
diff --git a/gnu/packages/patches/python-onnx-shared-libraries.patch
b/gnu/packages/patches/python-onnx-shared-libraries.patch
new file mode 100644
index 0000000..00583b3
--- /dev/null
+++ b/gnu/packages/patches/python-onnx-shared-libraries.patch
@@ -0,0 +1,24 @@
+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'.
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index cede3073..52f846ed 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -475,11 +475,10 @@ if(BUILD_ONNX_PYTHON)
+ PRIVATE $<TARGET_OBJECTS:onnx>)
+ else()
+ # Assume everything else is like gcc
+- target_link_libraries(onnx_cpp2py_export
+- PRIVATE "-Wl,--whole-archive" $<TARGET_FILE:onnx>
+- "-Wl,--no-whole-archive")
++ target_link_libraries(onnx_cpp2py_export PRIVATE onnx)
+ set_target_properties(onnx_cpp2py_export
+- PROPERTIES LINK_FLAGS "-Wl,--exclude-libs,ALL")
++ PROPERTIES LINK_FLAGS
++ "-Wl,-rpath=${CMAKE_INSTALL_PREFIX}/lib")
+ endif()
+
+ target_link_libraries(onnx_cpp2py_export PRIVATE onnx)
- branch master updated (721e380 -> db2c7e7), guix-commits, 2021/07/30
- 01/13: gnu: python-onnx: Update to 1.9.0., guix-commits, 2021/07/30
- 02/13: gnu: python-onnx: Move comment to the patch header., guix-commits, 2021/07/30
- 03/13: gnu: python-onnx: Delete bundled software., guix-commits, 2021/07/30
- 04/13: gnu: python-onnx: Install libonnx.so and libonnx_proto.so.,
guix-commits <=
- 05/13: gnu: python-onnx: Rename to "onnx"., guix-commits, 2021/07/30
- 06/13: gnu: onnx: Change source to 'git-fetch'., guix-commits, 2021/07/30
- 07/13: gnu: python-yubikey-manager: Fix libykpers reference., guix-commits, 2021/07/30
- 10/13: gnu: Add libmobi., guix-commits, 2021/07/30
- 11/13: gnu: racket: Update to 8.2., guix-commits, 2021/07/30
- 13/13: gnu: racket-minimal: Bootstrap from C., guix-commits, 2021/07/30
- 09/13: gnu: guile-dbd-sqlite3: Replace 'url-fetch' by 'git-fetch'., guix-commits, 2021/07/30
- 08/13: gnu: guile-dbi: Replace 'url-fetch' by 'git-fetch'., guix-commits, 2021/07/30
- 12/13: gnu: racket: Unbundle racket-minimal., guix-commits, 2021/07/30