gnu: onnx: Change source to 'git-fetch'.
authorLudovic Courtès <ludo@gnu.org>
Fri, 30 Jul 2021 15:26:24 +0000 (17:26 +0200)
committerLudovic Courtès <ludo@gnu.org>
Fri, 30 Jul 2021 23:03:24 +0000 (01:03 +0200)
* gnu/packages/machine-learning.scm (onnx)[source]: Change to
'git-fetch'.  Add "onnx-skip-model-downloads.patch".
[arguments]: Add 'make-test-directory-writable' phase.
* gnu/packages/patches/onnx-skip-model-downloads.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.

gnu/local.mk
gnu/packages/machine-learning.scm
gnu/packages/patches/onnx-skip-model-downloads.patch [new file with mode: 0644]

index e6c03cb..450d957 100644 (file)
@@ -1514,6 +1514,7 @@ dist_patch_DATA =                                         \
   %D%/packages/patches/oneko-remove-nonfree-characters.patch   \
   %D%/packages/patches/onnx-use-system-googletest.patch        \
   %D%/packages/patches/onnx-shared-libraries.patch     \
+  %D%/packages/patches/onnx-skip-model-downloads.patch         \
   %D%/packages/patches/openbabel-fix-crash-on-nwchem-output.patch      \
   %D%/packages/patches/opencascade-oce-glibc-2.26.patch                \
   %D%/packages/patches/opencv-fix-build-of-grfmt_jpeg2000.cpp.patch    \
index 75faeb8..177d1aa 100644 (file)
@@ -585,16 +585,20 @@ in terms of new algorithms.")
   (package
     (name "onnx")
     (version "1.9.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "onnx" version))
-       (patches (search-patches "onnx-use-system-googletest.patch"
-                                "onnx-shared-libraries.patch"))
-       (sha256
-        (base32 "0yjv2axz2vc2ysniwislsp53fsb8f61y1warrr2ppn2d9ijml1d9"))
-       (modules '((guix build utils)))
-       (snippet '(delete-file-recursively "third_party"))))
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/onnx/onnx")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "1xnii361f68x0masxgfc4ai7hh3wlxxk56aznwf4m4yr6wqx47ml"))
+              (file-name (git-file-name name version))
+              (patches (search-patches "onnx-use-system-googletest.patch"
+                                       "onnx-shared-libraries.patch"
+                                       "onnx-skip-model-downloads.patch"))
+              (modules '((guix build utils)))
+              (snippet '(delete-file-recursively "third_party"))))
     (build-system python-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -625,6 +629,13 @@ in terms of new algorithms.")
                       ;; -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'
diff --git a/gnu/packages/patches/onnx-skip-model-downloads.patch b/gnu/packages/patches/onnx-skip-model-downloads.patch
new file mode 100644 (file)
index 0000000..4ab55b4
--- /dev/null
@@ -0,0 +1,16 @@
+A few tests require downloading models from URLs such as
+ <https://s3.amazonaws.com/download.onnx/models/opset_9/zfnet512.tar.gz>.
+Skip those.
+
+diff --git a/onnx/backend/test/runner/__init__.py b/onnx/backend/test/runner/__init__.py
+index 049ed57b..f236f1bf 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))
++            raise unittest.SkipTest('Skipping download')
+             urlretrieve(model_test.url, download_file.name)
+             print('Done')
+             with tarfile.open(download_file.name) as t: