Subject: [PATCH v5] gnu: Add opencv-next

From: Andy Tai <[email-masked]>
Date: Wed, 15 Feb 2023 08:10:22 -0800

* gnu/packages/image-processing.scm (opencv-next): New variable
  as opencv (4.5.4) is depended on by aiscm which does not build
  with later opencv (4.6.0 and later) so make later opencv release
  as opencv-next, now at version 4.7.0
---
 gnu/packages/image-processing.scm | 79 +++++++++++++++++++++++++++++++
 1 file changed, 79 insertions(+)

diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm
index 70c820e76b..0482984e32 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -673,6 +673,85 @@ (define-public opencv
     (home-page "https://opencv.org/")
     (license license:bsd-3)))
 
+;; aiscm depends on opencv 4.5.4 so we cannot just update opencv to 4.7.0
+;; for now we place newer opencv as opencv-next
+(define-public opencv-next
+  (package
+    (inherit opencv)
+    (name "opencv-next")
+    (version "4.7.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/opencv/opencv")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0l45v41nns2jmn9nr9fb0yvhqzfjpxjxn75i1c02rsfy3r3lv22v"))
+              (modules '((guix build utils)))
+              (snippet '(begin
+                          ;; Remove external libraries. We have almost all available
+                          ;; in Guix:
+                          (with-directory-excursion "3rdparty"
+                            (for-each delete-file-recursively
+                                      '("carotene" "cpufeatures"
+                                        "ffmpeg"
+                                        "include"
+                                        "ippicv"
+                                        "ittnotify"
+                                        "libjasper"
+                                        "libjpeg"
+                                        "libjpeg-turbo"
+                                        "libpng"
+                                        "libtengine"
+                                        "libtiff"
+                                        "libwebp"
+                                        "openexr"
+                                        "openjpeg"
+                                        "openvx"
+                                        "protobuf"
+                                        ;; "quirc"
+                                        "tbb"
+                                        "zlib")))
+
+                          ;; Some jars found:
+                          (for-each delete-file
+                                    '("modules/java/test/pure_test/lib/junit-4.11.jar"
+                                      "samples/java/sbt/sbt/sbt-launch.jar"))))))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("xorg-server" ,xorg-server-for-tests) ;For running the tests
+                     ("opencv-extra" ,(origin
+                                        (method git-fetch)
+                                        (uri (git-reference (url
+                                                             "https://github.com/opencv/opencv_extra")
+                                                            (commit version)))
+                                        (file-name (git-file-name
+                                                    "opencv_extra" version))
+                                        (sha256 (base32
+                                                 "0bdg5kwwdimnl2zp4ry5cmfxr9xb7zk2ml59853d90llsqjis47a"))))
+                     ("opencv-contrib" ,(origin
+                                          (method git-fetch)
+                                          (uri (git-reference (url
+                                                               "https://github.com/opencv/opencv_contrib")
+                                                              (commit version)))
+                                          (file-name (git-file-name
+                                                      "opencv_contrib" version))
+                                          (sha256 (base32
+                                                   "0hbfn835kxh3hwmwvzgdglm2np1ri3z7nfnf60gf4x6ikp89mv4r"))))))
+
+    (arguments
+     (substitute-keyword-arguments (package-arguments opencv)
+       ((#:phases phases
+         '%standard-phases)
+        `(modify-phases ,phases
+           (add-after 'unpack 'disable-broken-tests-opencv-4.7-specific
+             (lambda _
+               (substitute* "modules/dnn/test/test_layers.cpp"
+                 (("(TEST_P\\(Test_Caffe_layers, )(Interp\\).*)"
+                   all pre post)
+                  (string-append pre "DISABLED_" post)))))))))))
+
 (define-public vips
   (package
     (name "vips")

base-commit: a97a102d21edc0c9624cf92c1fbc0c01b1067290
-- 
2.39.1