unofficial mirror of guix-patches@gnu.org 
 help / color / Atom feed
From: Vinicius Monego <monego@posteo.net>
To: 42650@debbugs.gnu.org
Cc: Vinicius Monego <monego@posteo.net>
Subject: [bug#42650] [PATCH 2/2] gnu: Add python-onnx.
Date: Sat,  1 Aug 2020 11:43:21 -0300
Message-ID: <20200801144321.60595-2-monego@posteo.net> (raw)
In-Reply-To: <20200801144321.60595-1-monego@posteo.net>

* gnu/packages/machine-learning.scm (python-onnx): New variable.
---
 gnu/packages/machine-learning.scm             | 43 +++++++++++++++
 .../python-onnx-use-system-googletest.patch   | 54 +++++++++++++++++++
 2 files changed, 97 insertions(+)
 create mode 100644 gnu/packages/patches/python-onnx-use-system-googletest.patch

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 18a4ac9ef2..4ec3ed05c7 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Konrad Hinsen <konrad.hinsen@fastmail.net>
 ;;; Copyright © 2020 Edouard Klein <edk@beaver-labs.com>
+;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -53,6 +54,7 @@
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cmake)
   #:use-module (gnu packages cran)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages dejagnu)
@@ -70,6 +72,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-science)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
@@ -576,6 +579,46 @@ tools.  This enables both rapid prototyping of data pipelines and extensibility
 in terms of new algorithms.")
     (license license:gpl3+)))
 
+(define-public python-onnx
+  (package
+    (name "python-onnx")
+    (version "1.7.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "onnx" version))
+       ;; ONNX will build googletest from a git checkout.  Patch CMake
+       ;; to use googletest from Guix and enable tests by default.
+       (patches (search-patches "python-onnx-use-system-googletest.patch"))
+       (sha256
+        (base32 "0j6rgfbhsw3a8id8pyg18y93k68lbjbj1kq6qia36h69f6pvlyjy"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("cmake" ,cmake)
+       ("googletest" ,googletest)
+       ("pybind11" ,pybind11)
+       ("python-coverage" ,python-coverage)
+       ("python-nbval" ,python-nbval)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-runner" ,python-pytest-runner)))
+    (inputs
+     `(("protobuf" ,protobuf)))
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)
+       ("python-protobuf" ,python-protobuf)
+       ("python-six" ,python-six)
+       ("python-tabulate" ,python-tabulate)
+       ("python-typing-extensions"
+        ,python-typing-extensions)))
+    (home-page "https://onnx.ai/")
+    (synopsis "Open Neural Network Exchange")
+    (description
+     "Open Neural Network Exchange (ONNX) provides an open source format for
+AI models, both deep learning and traditional ML.  It defines an extensible
+computation graph model, as well as definitions of built-in operators and
+standard data types.")
+    (license license:expat)))
+
 (define-public rxcpp
   (package
     (name "rxcpp")
diff --git a/gnu/packages/patches/python-onnx-use-system-googletest.patch b/gnu/packages/patches/python-onnx-use-system-googletest.patch
new file mode 100644
index 0000000000..33d2fa12de
--- /dev/null
+++ b/gnu/packages/patches/python-onnx-use-system-googletest.patch
@@ -0,0 +1,54 @@
+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.20.1





  reply index

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-01 14:43 [bug#42650] [PATCH 1/2] gnu: python-protobuf: Update to 3.12.4 Vinicius Monego
2020-08-01 14:43 ` Vinicius Monego [this message]
2020-08-03  7:05   ` bug#42650: [PATCH 2/2] gnu: Add python-onnx Mathieu Othacehe
2020-08-03 12:32     ` [bug#42650] " Vinicius Monego

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

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200801144321.60595-2-monego@posteo.net \
    --to=monego@posteo.net \
    --cc=42650@debbugs.gnu.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

unofficial mirror of guix-patches@gnu.org 

Archives are clonable:
	git clone --mirror https://yhetil.org/guix-patches/1 guix-patches/git/1.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 guix-patches guix-patches/ https://yhetil.org/guix-patches \
		guix-patches@gnu.org
	public-inbox-index guix-patches

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://news.yhetil.org/yhetil.gnu.guix.patches


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git