summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Johnson <glenn-johnson@uiowa.edu>2022-01-31 21:24:03 -0600
committerGitHub <noreply@github.com>2022-01-31 21:24:03 -0600
commit21524f5149583dfb121d3e0947a4993f49604b43 (patch)
treea3f8f4a99402f039603e3fbe4a119bd35548e6e4
parent6e99f328b6db423ea0159d3f7375f2627ac5da67 (diff)
downloadspack-21524f5149583dfb121d3e0947a4993f49604b43.tar.gz
spack-21524f5149583dfb121d3e0947a4993f49604b43.tar.bz2
spack-21524f5149583dfb121d3e0947a4993f49604b43.tar.xz
spack-21524f5149583dfb121d3e0947a4993f49604b43.zip
opencv: add new version, variant, and patch (#27374)
* opencv: add new version, variant, and patch - added version 4.5.4 - added tesseract variant - added patch to not add system paths * Add leptonica depends and contrib conflicts * Add dependencies for 1394 support - new package: libraw1394 - add sdl dependency to libdc1394 - add conflict for openjpeg and jasper * Adjust dependencies and conflicts for opencv modules * rewrite of opencv - all prebuilt apps are now variants and can be installed - core is no longer a variant. It was always built anyway so it was not really a variant. - contrib is no longer a variant. All of the contrib modules are now available as variants. - components that can not be built with Spack are no longer variants. They are set to 'off' to prevent pulling from system. - handle the case where a module and a component have the same name - use `with when` framework - adjust dependencies and conflicts - new package: libraw1394 - have libdc1394 depend on libraw1394 - patch to find clp - patch to find onnx - patch for cvv to find Qt - format with black * Incorporate recommended changes - fix variants and dependencies on packages that depend on opencv - remove opencv-3.2 and patches - add some new patches to handle different versions - cntk needs further work - the openvslam package was markde deprecated as it is no longer an active project and the repository has no code * Remove gmake dependency. * Remove sdl support SDL is only used in an example case, but the examples are not built. * remove openvslam * Remove opencv+flann variant from 3dtk * Back out cfitsio constraint from py-astropy * remove opencv+flann variant from dlib * remove boost constraint from 3dtk * Remove non-opencv related bohrium changes * Adjustments for cntk - protobuf constraint at version 3.10 - need specific variants for opencv - improve patch * Deprecate CNTK package * variant tweaks - added appropriate conflicts for cublas - made cuda/cudev relationship explicit - moved openx to pending components as it needs an openvx package * fix isort style error * Use date version from kaldi rather than commit * Revert changes from a bad rebase * Add +flann to 3dtk and dlib * Use compression support with libtiff * remove `+datasets` from opencv dependency The py-torchgeo package does not need opencv+datasets. * fix typo zip --> zlib
-rw-r--r--var/spack/repos/builtin/packages/3dtk/package.py4
-rw-r--r--var/spack/repos/builtin/packages/bohrium/package.py9
-rw-r--r--var/spack/repos/builtin/packages/caffe/package.py4
-rw-r--r--var/spack/repos/builtin/packages/candle-benchmarks/package.py2
-rw-r--r--var/spack/repos/builtin/packages/dbow2/package.py2
-rw-r--r--var/spack/repos/builtin/packages/dlib/package.py5
-rw-r--r--var/spack/repos/builtin/packages/lbann/package.py2
-rw-r--r--var/spack/repos/builtin/packages/mivisionx/package.py2
-rw-r--r--var/spack/repos/builtin/packages/mxnet/package.py2
-rw-r--r--var/spack/repos/builtin/packages/opencv/cmake_no-system-paths.patch38
-rw-r--r--var/spack/repos/builtin/packages/opencv/opencv3.2_compiler_cmake.patch14
-rw-r--r--var/spack/repos/builtin/packages/opencv/opencv3.2_ffmpeg.patch107
-rw-r--r--var/spack/repos/builtin/packages/opencv/opencv3.2_fj.patch20
-rw-r--r--var/spack/repos/builtin/packages/opencv/opencv3.2_python3.7.patch22
-rw-r--r--var/spack/repos/builtin/packages/opencv/opencv3.2_regacyvtk.patch119
-rw-r--r--var/spack/repos/builtin/packages/opencv/opencv3.2_vtk.patch20
-rw-r--r--var/spack/repos/builtin/packages/opencv/opencv3.3_clp_cmake.patch14
-rw-r--r--var/spack/repos/builtin/packages/opencv/opencv3.3_cvv_cmake.patch9
-rw-r--r--var/spack/repos/builtin/packages/opencv/opencv3.4.12_clp_cmake.patch14
-rw-r--r--var/spack/repos/builtin/packages/opencv/opencv3.4.4_cvv_cmake.patch9
-rw-r--r--var/spack/repos/builtin/packages/opencv/opencv4.0.0_clp_cmake.patch14
-rw-r--r--var/spack/repos/builtin/packages/opencv/opencv4.1.1_clp_cmake.patch14
-rw-r--r--var/spack/repos/builtin/packages/opencv/package.py1350
-rw-r--r--var/spack/repos/builtin/packages/openvslam/package.py33
24 files changed, 1134 insertions, 695 deletions
diff --git a/var/spack/repos/builtin/packages/3dtk/package.py b/var/spack/repos/builtin/packages/3dtk/package.py
index a99241c083..9d52b83787 100644
--- a/var/spack/repos/builtin/packages/3dtk/package.py
+++ b/var/spack/repos/builtin/packages/3dtk/package.py
@@ -46,9 +46,7 @@ class _3dtk(CMakePackage):
depends_on('gl', when='+opengl')
depends_on('glew', when='+opengl')
depends_on('freeglut', when='+opengl')
- depends_on('opencv+calib3d+contrib+core+features2d+highgui+imgcodecs+imgproc+ml+videoio', when='+opencv')
- # Because concretizer is broken
- depends_on('opencv+flann', when='+opencv')
+ depends_on('opencv+aruco+calib3d+features2d+ffmpeg+highgui+imgcodecs+imgproc+ml+videoio+flann', when='+opencv')
depends_on('cuda', when='+cuda')
# TODO: add Spack packages for these instead of using vendored copies
diff --git a/var/spack/repos/builtin/packages/bohrium/package.py b/var/spack/repos/builtin/packages/bohrium/package.py
index 1ee0b2a7b4..f6dd89788b 100644
--- a/var/spack/repos/builtin/packages/bohrium/package.py
+++ b/var/spack/repos/builtin/packages/bohrium/package.py
@@ -68,8 +68,6 @@ class Bohrium(CMakePackage, CudaPackage):
conflicts('~node~proxy')
conflicts('~openmp~opencl~cuda')
- conflicts('+cbridge', when='~python')
-
#
# Dependencies
#
@@ -86,10 +84,9 @@ class Bohrium(CMakePackage, CudaPackage):
depends_on('blas', when="+blas")
# Make sure an appropriate opencv is used
- depends_on('opencv+imgproc', when="+opencv")
- depends_on('opencv+imgproc+cuda', when="+opencv+cuda")
- depends_on('opencv+imgproc+openmp', when="+opencv+openmp")
- depends_on('opencv+imgproc+openmp+cuda', when="+opencv+openmp+cuda")
+ depends_on('opencv@:3+imgproc', when="+opencv")
+ depends_on('opencv+cudev', when="+opencv+cuda")
+ depends_on('opencv+openmp', when="+opencv+openmp")
depends_on('python', type="build", when="~python")
depends_on('python', type=("build", "link", "test"), when="+python")
diff --git a/var/spack/repos/builtin/packages/caffe/package.py b/var/spack/repos/builtin/packages/caffe/package.py
index 4627f428d2..7953bff17b 100644
--- a/var/spack/repos/builtin/packages/caffe/package.py
+++ b/var/spack/repos/builtin/packages/caffe/package.py
@@ -37,13 +37,13 @@ class Caffe(CMakePackage, CudaPackage):
depends_on('boost +python', when='+python')
depends_on('cuda', when='+cuda')
depends_on('blas')
- depends_on('protobuf')
+ depends_on('protobuf@:3.17')
depends_on('glog')
depends_on('gflags')
depends_on('hdf5 +hl +cxx')
# Optional dependencies
- depends_on('opencv@3.2.0:3.4.12+core+highgui+imgproc+imgcodecs', when='+opencv')
+ depends_on('opencv@:3+highgui+imgproc+imgcodecs', when='+opencv')
depends_on('leveldb', when='+leveldb')
depends_on('lmdb', when='+lmdb')
depends_on('python@2.7:', when='+python')
diff --git a/var/spack/repos/builtin/packages/candle-benchmarks/package.py b/var/spack/repos/builtin/packages/candle-benchmarks/package.py
index 369abdeab3..3e1647884e 100644
--- a/var/spack/repos/builtin/packages/candle-benchmarks/package.py
+++ b/var/spack/repos/builtin/packages/candle-benchmarks/package.py
@@ -26,7 +26,7 @@ class CandleBenchmarks(Package):
depends_on('py-matplotlib +image@:2.2.3', type=('build', 'run'))
depends_on('py-tqdm', type=('build', 'run'))
depends_on('py-scikit-learn', type=('build', 'run'))
- depends_on('opencv@3.2.0: +core +highgui +imgproc +jpeg +png +tiff -dnn ~eigen ~gtk')
+ depends_on('opencv@3.2.0: +highgui +imgproc +jpeg +png +tiff ~dnn ~eigen ~gtk')
depends_on('py-mdanalysis', type=('build', 'run'))
depends_on('py-mpi4py', when='+mpi', type=('build', 'run'))
depends_on('py-h5py~mpi', when='~mpi', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/dbow2/package.py b/var/spack/repos/builtin/packages/dbow2/package.py
index adda1a4ffe..d0d89a14bd 100644
--- a/var/spack/repos/builtin/packages/dbow2/package.py
+++ b/var/spack/repos/builtin/packages/dbow2/package.py
@@ -16,7 +16,7 @@ class Dbow2(CMakePackage):
version('shinsumicco', git='https://github.com/shinsumicco/DBoW2.git', branch='master')
depends_on('cmake@3.0:', type='build')
- depends_on('opencv+calib3d+core+features2d+highgui+imgproc')
+ depends_on('opencv+calib3d+features2d+highgui+imgproc')
depends_on('boost')
depends_on('dlib')
depends_on('eigen', type='link')
diff --git a/var/spack/repos/builtin/packages/dlib/package.py b/var/spack/repos/builtin/packages/dlib/package.py
index 33a9ef4067..78b60a7034 100644
--- a/var/spack/repos/builtin/packages/dlib/package.py
+++ b/var/spack/repos/builtin/packages/dlib/package.py
@@ -15,7 +15,4 @@ class Dlib(CMakePackage):
version('master', branch='master')
depends_on('cmake@3.0:', type='build')
- depends_on('opencv+calib3d+core+features2d+highgui+imgproc+imgcodecs')
- # Because concretizer is broken...
- # TODO: remove when original concretizer is obsolete
- depends_on('opencv+flann')
+ depends_on('opencv+calib3d+features2d+highgui+imgproc+imgcodecs+flann')
diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py
index 5ec1afa539..86701ef939 100644
--- a/var/spack/repos/builtin/packages/lbann/package.py
+++ b/var/spack/repos/builtin/packages/lbann/package.py
@@ -189,7 +189,7 @@ class Lbann(CMakePackage, CudaPackage, ROCmPackage):
# LBANN wraps OpenCV calls in OpenMP parallel loops, build without OpenMP
# Additionally disable video related options, they incorrectly link in a
# bad OpenMP library when building with clang or Intel compilers
- depends_on('opencv@4.1.0: build_type=RelWithDebInfo +core +highgui '
+ depends_on('opencv@4.1.0: build_type=RelWithDebInfo +highgui '
'+imgcodecs +imgproc +jpeg +png +tiff +fast-math ~cuda',
when='+vision')
diff --git a/var/spack/repos/builtin/packages/mivisionx/package.py b/var/spack/repos/builtin/packages/mivisionx/package.py
index 369292144e..b284b0b1e8 100644
--- a/var/spack/repos/builtin/packages/mivisionx/package.py
+++ b/var/spack/repos/builtin/packages/mivisionx/package.py
@@ -65,7 +65,7 @@ class Mivisionx(CMakePackage):
depends_on('cmake@3.5:', type='build')
depends_on('ffmpeg@:4', type='build')
depends_on('protobuf@:3', type='build')
- depends_on('opencv@:3.4 +calib3d+core+features2d+highgui+imgcodecs+imgproc+video+videoio+flann+photo+objdetect', type='build')
+ depends_on('opencv@:3.4 +calib3d+features2d+highgui+imgcodecs+imgproc+video+videoio+flann+photo+objdetect', type='build')
depends_on('rocm-opencl@3.5.0', when='@1.7')
depends_on('rocm-cmake@3.5.0', type='build', when='@1.7')
depends_on('miopen-opencl@3.5.0', when='@1.7')
diff --git a/var/spack/repos/builtin/packages/mxnet/package.py b/var/spack/repos/builtin/packages/mxnet/package.py
index 826c587a32..e82aba74e2 100644
--- a/var/spack/repos/builtin/packages/mxnet/package.py
+++ b/var/spack/repos/builtin/packages/mxnet/package.py
@@ -63,7 +63,7 @@ class Mxnet(CMakePackage, CudaPackage):
depends_on('cuda@:11.3', when='@2.0.0: +cuda')
depends_on('cudnn', when='+cudnn')
depends_on('nccl', when='+nccl')
- depends_on('opencv+core+highgui+imgproc+imgcodecs', when='+opencv')
+ depends_on('opencv+highgui+imgproc+imgcodecs', when='+opencv')
depends_on('lapack', when='+lapack')
depends_on('onednn', when='+mkldnn')
diff --git a/var/spack/repos/builtin/packages/opencv/cmake_no-system-paths.patch b/var/spack/repos/builtin/packages/opencv/cmake_no-system-paths.patch
new file mode 100644
index 0000000000..25286749e6
--- /dev/null
+++ b/var/spack/repos/builtin/packages/opencv/cmake_no-system-paths.patch
@@ -0,0 +1,38 @@
+diff -ru a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt 2021-10-09 10:48:26.000000000 -0500
++++ b/CMakeLists.txt 2021-11-11 17:29:04.189734621 -0600
+@@ -161,34 +161,6 @@
+ include(cmake/OpenCVDetectCXXCompiler.cmake)
+ ocv_cmake_hook(POST_DETECT_COMPILER)
+
+-# Add these standard paths to the search paths for FIND_LIBRARY
+-# to find libraries from these locations first
+-if(UNIX AND NOT ANDROID)
+- if(X86_64 OR CMAKE_SIZEOF_VOID_P EQUAL 8)
+- if(EXISTS /lib64)
+- list(APPEND CMAKE_LIBRARY_PATH /lib64)
+- else()
+- list(APPEND CMAKE_LIBRARY_PATH /lib)
+- endif()
+- if(EXISTS /usr/lib64)
+- list(APPEND CMAKE_LIBRARY_PATH /usr/lib64)
+- else()
+- list(APPEND CMAKE_LIBRARY_PATH /usr/lib)
+- endif()
+- elseif(X86 OR CMAKE_SIZEOF_VOID_P EQUAL 4)
+- if(EXISTS /lib32)
+- list(APPEND CMAKE_LIBRARY_PATH /lib32)
+- else()
+- list(APPEND CMAKE_LIBRARY_PATH /lib)
+- endif()
+- if(EXISTS /usr/lib32)
+- list(APPEND CMAKE_LIBRARY_PATH /usr/lib32)
+- else()
+- list(APPEND CMAKE_LIBRARY_PATH /usr/lib)
+- endif()
+- endif()
+-endif()
+-
+ # Add these standard paths to the search paths for FIND_PATH
+ # to find include files from these locations first
+ if(MINGW)
diff --git a/var/spack/repos/builtin/packages/opencv/opencv3.2_compiler_cmake.patch b/var/spack/repos/builtin/packages/opencv/opencv3.2_compiler_cmake.patch
deleted file mode 100644
index 4fe312e9ab..0000000000
--- a/var/spack/repos/builtin/packages/opencv/opencv3.2_compiler_cmake.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- a/cmake/OpenCVCompilerOptions.cmake 2016-12-23 06:54:44.000000000 -0600
-+++ b/cmake/OpenCVCompilerOptions.cmake 2021-06-16 11:51:11.616354728 -0500
-@@ -18,9 +18,9 @@
- message(STATUS "Unable to compile program with enabled ccache, reverting...")
- set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${__OLD_RULE_LAUNCH_COMPILE}")
- endif()
-- else()
-- message(STATUS "Looking for ccache - not found")
- endif()
-+ else()
-+ message(STATUS "Looking for ccache - not found")
- endif()
- endif()
-
diff --git a/var/spack/repos/builtin/packages/opencv/opencv3.2_ffmpeg.patch b/var/spack/repos/builtin/packages/opencv/opencv3.2_ffmpeg.patch
deleted file mode 100644
index d7786308d8..0000000000
--- a/var/spack/repos/builtin/packages/opencv/opencv3.2_ffmpeg.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-commit b1d208891b9f6ae3968730b120a5d0dcbba679d0
-Author: Jonathan Viney <jonathan.viney@gmail.com>
-Date: Sun Nov 19 07:08:41 2017 +1300
-
- Merge pull request #10011 from jviney:master
-
- Fix build with FFmpeg master. Some deprecated APIs have been removed. (#10011)
-
- * Fix build with FFmpeg master.
-
- * ffmpeg: update AVFMT_RAWPICTURE support removal
-
-diff --git a/modules/videoio/src/cap_ffmpeg_impl.hpp b/modules/videoio/src/cap_ffmpeg_impl.hpp
-index 5f51e65134..46461483a7 100644
---- a/modules/videoio/src/cap_ffmpeg_impl.hpp
-+++ b/modules/videoio/src/cap_ffmpeg_impl.hpp
-@@ -149,6 +149,10 @@ extern "C" {
- #define AV_PIX_FMT_GRAY16BE PIX_FMT_GRAY16BE
- #endif
-
-+#ifndef PKT_FLAG_KEY
-+#define PKT_FLAG_KEY AV_PKT_FLAG_KEY
-+#endif
-+
- #if LIBAVUTIL_BUILD >= (LIBAVUTIL_VERSION_MICRO >= 100 \
- ? CALC_FFMPEG_VERSION(52, 38, 100) : CALC_FFMPEG_VERSION(52, 13, 0))
- #define USE_AV_FRAME_GET_BUFFER 1
-@@ -1570,7 +1574,11 @@ static AVStream *icv_add_video_stream_FFMPEG(AVFormatContext *oc,
- // some formats want stream headers to be seperate
- if(oc->oformat->flags & AVFMT_GLOBALHEADER)
- {
-+#if LIBAVCODEC_BUILD > CALC_FFMPEG_VERSION(56, 35, 0)
-+ c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
-+#else
- c->flags |= CODEC_FLAG_GLOBAL_HEADER;
-+#endif
- }
- #endif
-
-@@ -1598,23 +1606,24 @@ static int icv_av_write_frame_FFMPEG( AVFormatContext * oc, AVStream * video_st,
- #endif
- int ret = OPENCV_NO_FRAMES_WRITTEN_CODE;
-
-- if (oc->oformat->flags & AVFMT_RAWPICTURE) {
-+#if LIBAVFORMAT_BUILD < CALC_FFMPEG_VERSION(57, 0, 0)
-+ if (oc->oformat->flags & AVFMT_RAWPICTURE)
-+ {
- /* raw video case. The API will change slightly in the near
- futur for that */
- AVPacket pkt;
- av_init_packet(&pkt);
-
--#ifndef PKT_FLAG_KEY
--#define PKT_FLAG_KEY AV_PKT_FLAG_KEY
--#endif
--
- pkt.flags |= PKT_FLAG_KEY;
- pkt.stream_index= video_st->index;
- pkt.data= (uint8_t *)picture;
- pkt.size= sizeof(AVPicture);
-
- ret = av_write_frame(oc, &pkt);
-- } else {
-+ }
-+ else
-+#endif
-+ {
- /* encode the image */
- AVPacket pkt;
- av_init_packet(&pkt);
-@@ -1772,7 +1781,9 @@ void CvVideoWriter_FFMPEG::close()
- /* write the trailer, if any */
- if(ok && oc)
- {
-- if( (oc->oformat->flags & AVFMT_RAWPICTURE) == 0 )
-+#if LIBAVFORMAT_BUILD < CALC_FFMPEG_VERSION(57, 0, 0)
-+ if (!(oc->oformat->flags & AVFMT_RAWPICTURE))
-+#endif
- {
- for(;;)
- {
-@@ -2071,7 +2082,11 @@ bool CvVideoWriter_FFMPEG::open( const char * filename, int fourcc,
-
- outbuf = NULL;
-
-- if (!(oc->oformat->flags & AVFMT_RAWPICTURE)) {
-+
-+#if LIBAVFORMAT_BUILD < CALC_FFMPEG_VERSION(57, 0, 0)
-+ if (!(oc->oformat->flags & AVFMT_RAWPICTURE))
-+#endif
-+ {
- /* allocate output buffer */
- /* assume we will never get codec output with more than 4 bytes per pixel... */
- outbuf_size = width*height*4;
-@@ -2376,7 +2391,11 @@ AVStream* OutputMediaStream_FFMPEG::addVideoStream(AVFormatContext *oc, CV_CODEC
- // some formats want stream headers to be seperate
- if (oc->oformat->flags & AVFMT_GLOBALHEADER)
- {
-- c->flags |= CODEC_FLAG_GLOBAL_HEADER;
-+ #if LIBAVCODEC_BUILD > CALC_FFMPEG_VERSION(56, 35, 0)
-+ c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
-+ #else
-+ c->flags |= CODEC_FLAG_GLOBAL_HEADER;
-+ #endif
- }
- #endif
-
diff --git a/var/spack/repos/builtin/packages/opencv/opencv3.2_fj.patch b/var/spack/repos/builtin/packages/opencv/opencv3.2_fj.patch
deleted file mode 100644
index dae8af256b..0000000000
--- a/var/spack/repos/builtin/packages/opencv/opencv3.2_fj.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -ru opencv-3.2.0.org/modules/core/include/opencv2/core/hal/intrin_neon.hpp opencv-3.2.0/modules/core/include/opencv2/core/hal/intrin_neon.hpp
---- opencv-3.2.0.org/modules/core/include/opencv2/core/hal/intrin_neon.hpp 2016-12-23 21:54:44.000000000 +0900
-+++ opencv-3.2.0/modules/core/include/opencv2/core/hal/intrin_neon.hpp 2020-05-27 14:39:11.288700481 +0900
-@@ -282,10 +282,16 @@
- { return (int16x4_t)a; }
- template <typename T> static inline float16x4_t vreinterpret_f16_s16(T a)
- { return (float16x4_t)a; }
-+#ifdef vld1_f16
-+#undef vld1_f16
-+#endif
- template <typename T> static inline float16x4_t vld1_f16(const T* ptr)
- { return vreinterpret_f16_s16(vld1_s16((const short*)ptr)); }
-+#ifdef vst1_f16
-+#undef vst1_f16
-+#endif
- template <typename T> static inline void vst1_f16(T* ptr, float16x4_t a)
- { vst1_s16((short*)ptr, vreinterpret_s16_f16(a)); }
-
- struct v_float16x4
- {
diff --git a/var/spack/repos/builtin/packages/opencv/opencv3.2_python3.7.patch b/var/spack/repos/builtin/packages/opencv/opencv3.2_python3.7.patch
deleted file mode 100644
index d96011330d..0000000000
--- a/var/spack/repos/builtin/packages/opencv/opencv3.2_python3.7.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-commit 0c4328fbf3da0da57a91b2133578c5100370b867
-Author: ilovezfs <ilovezfs@icloud.com>
-Date: Tue Jul 3 06:31:39 2018 +0000
-
- Python 3.7 compatability
-
- The result of PyUnicode_AsUTF8() is now of type const char * rather of
- char *.
-
-diff --git a/modules/python/src2/cv2.cpp b/modules/python/src2/cv2.cpp
-index e16fcbacf2..5a6bf7ef62 100644
---- a/modules/python/src2/cv2.cpp
-+++ b/modules/python/src2/cv2.cpp
-@@ -916,7 +916,7 @@ bool pyopencv_to(PyObject* obj, String& value, const char* name)
- (void)name;
- if(!obj || obj == Py_None)
- return true;
-- char* str = PyString_AsString(obj);
-+ const char* str = PyString_AsString(obj);
- if(!str)
- return false;
- value = String(str);
diff --git a/var/spack/repos/builtin/packages/opencv/opencv3.2_regacyvtk.patch b/var/spack/repos/builtin/packages/opencv/opencv3.2_regacyvtk.patch
deleted file mode 100644
index f5341c62fa..0000000000
--- a/var/spack/repos/builtin/packages/opencv/opencv3.2_regacyvtk.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-commit 235889ddbb1aaa4f0dfaee730f42a8476c0e50f0
-Author: jasjuang <jasjuang@gmail.com>
-Date: Thu Dec 21 01:33:25 2017 -0800
-
- handle legacy VTK functions
-
-diff --git a/modules/viz/src/clouds.cpp b/modules/viz/src/clouds.cpp
-index 48d057d2a8..ab8fd43e40 100644
---- a/modules/viz/src/clouds.cpp
-+++ b/modules/viz/src/clouds.cpp
-@@ -77,7 +77,9 @@ cv::viz::WCloud::WCloud(cv::InputArray cloud, cv::InputArray colors, cv::InputAr
- vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
- VtkUtils::SetInputData(mapper, cloud_source->GetOutput());
- mapper->SetScalarModeToUsePointData();
-+#if VTK_MAJOR_VERSION < 8
- mapper->ImmediateModeRenderingOff();
-+#endif
- mapper->SetScalarRange(0, 255);
- mapper->ScalarVisibilityOn();
-
-@@ -117,7 +119,9 @@ cv::viz::WPaintedCloud::WPaintedCloud(InputArray cloud)
-
- vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
- VtkUtils::SetInputData(mapper, vtkPolyData::SafeDownCast(elevation->GetOutput()));
-+#if VTK_MAJOR_VERSION < 8
- mapper->ImmediateModeRenderingOff();
-+#endif
- mapper->ScalarVisibilityOn();
- mapper->SetColorModeToMapScalars();
-
-@@ -143,7 +147,9 @@ cv::viz::WPaintedCloud::WPaintedCloud(InputArray cloud, const Point3d& p1, const
-
- vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
- VtkUtils::SetInputData(mapper, vtkPolyData::SafeDownCast(elevation->GetOutput()));
-+#if VTK_MAJOR_VERSION < 8
- mapper->ImmediateModeRenderingOff();
-+#endif
- mapper->ScalarVisibilityOn();
- mapper->SetColorModeToMapScalars();
-
-@@ -182,7 +188,9 @@ cv::viz::WPaintedCloud::WPaintedCloud(InputArray cloud, const Point3d& p1, const
-
- vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
- VtkUtils::SetInputData(mapper, vtkPolyData::SafeDownCast(elevation->GetOutput()));
-+#if VTK_MAJOR_VERSION < 8
- mapper->ImmediateModeRenderingOff();
-+#endif
- mapper->ScalarVisibilityOn();
- mapper->SetColorModeToMapScalars();
- mapper->SetLookupTable(color_transfer);
-@@ -211,7 +219,9 @@ cv::viz::WCloudCollection::WCloudCollection()
- vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
- mapper->SetInputConnection(append_filter->GetOutputPort());
- mapper->SetScalarModeToUsePointData();
-+#if VTK_MAJOR_VERSION < 8
- mapper->ImmediateModeRenderingOff();
-+#endif
- mapper->SetScalarRange(0, 255);
- mapper->ScalarVisibilityOn();
-
-@@ -416,7 +426,9 @@ cv::viz::WMesh::WMesh(const Mesh &mesh)
-
- vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
- mapper->SetScalarModeToUsePointData();
-+#if VTK_MAJOR_VERSION < 8
- mapper->ImmediateModeRenderingOff();
-+#endif
- VtkUtils::SetInputData(mapper, polydata);
-
- vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
-@@ -468,7 +480,9 @@ cv::viz::WWidgetMerger::WWidgetMerger()
- vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
- mapper->SetInputConnection(append_filter->GetOutputPort());
- mapper->SetScalarModeToUsePointData();
-+#if VTK_MAJOR_VERSION < 8
- mapper->ImmediateModeRenderingOff();
-+#endif
- mapper->SetScalarRange(0, 255);
- mapper->ScalarVisibilityOn();
-
-diff --git a/modules/viz/src/widget.cpp b/modules/viz/src/widget.cpp
-index 0473c274bc..b324a4e26c 100644
---- a/modules/viz/src/widget.cpp
-+++ b/modules/viz/src/widget.cpp
-@@ -91,7 +91,9 @@ cv::viz::Widget cv::viz::Widget::fromPlyFile(const String &file_name)
-
- vtkSmartPointer<vtkDataSetMapper> mapper = vtkSmartPointer<vtkDataSetMapper>::New();
- mapper->SetInputConnection( reader->GetOutputPort() );
-+#if VTK_MAJOR_VERSION < 8
- mapper->ImmediateModeRenderingOff();
-+#endif
-
- vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
- actor->GetProperty()->SetInterpolationToFlat();
-@@ -113,7 +115,11 @@ void cv::viz::Widget::setRenderingProperty(int property, double value)
- case POINT_SIZE: actor->GetProperty()->SetPointSize(float(value)); break;
- case OPACITY: actor->GetProperty()->SetOpacity(value); break;
- case LINE_WIDTH: actor->GetProperty()->SetLineWidth(float(value)); break;
-+#if VTK_MAJOR_VERSION < 8
- case IMMEDIATE_RENDERING: actor->GetMapper()->SetImmediateModeRendering(int(value)); break;
-+#else
-+ case IMMEDIATE_RENDERING: std::cerr << "this property has no effect" << std::endl; break;
-+#endif
- case AMBIENT: actor->GetProperty()->SetAmbient(float(value)); break;
- case LIGHTING:
- {
-@@ -191,8 +197,11 @@ double cv::viz::Widget::getRenderingProperty(int property) const
- case POINT_SIZE: value = actor->GetProperty()->GetPointSize(); break;
- case OPACITY: value = actor->GetProperty()->GetOpacity(); break;
- case LINE_WIDTH: value = actor->GetProperty()->GetLineWidth(); break;
-+#if VTK_MAJOR_VERSION < 8
- case IMMEDIATE_RENDERING: value = actor->GetMapper()->GetImmediateModeRendering(); break;
--
-+#else
-+ case IMMEDIATE_RENDERING: std::cerr << "this property has no effect" << std::endl; break;
-+#endif
- case FONT_SIZE:
- {
- vtkTextActor* text_actor = vtkTextActor::SafeDownCast(actor);
diff --git a/var/spack/repos/builtin/packages/opencv/opencv3.2_vtk.patch b/var/spack/repos/builtin/packages/opencv/opencv3.2_vtk.patch
deleted file mode 100644
index e5eecd7092..0000000000
--- a/var/spack/repos/builtin/packages/opencv/opencv3.2_vtk.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-commit d810c73396ec7931addf3e7f75b17daf4e184bf4
-Author: Adam Rankin <adam.rankin@gmail.com>
-Date: Sun Mar 11 22:28:18 2018 -0400
-
- Update precomp.hpp
-
- Enabling build of visualization module when using VTK 9 (current HEAD of d5bbb9e99bbc6d11d2196c48bfd8f33508554551)
-
-diff --git a/modules/viz/src/precomp.hpp b/modules/viz/src/precomp.hpp
-index 369db191d3..dc5a5db1ea 100644
---- a/modules/viz/src/precomp.hpp
-+++ b/modules/viz/src/precomp.hpp
-@@ -104,6 +104,7 @@
- #include <vtkMath.h>
- #include <vtkExtractEdges.h>
- #include <vtkFrustumSource.h>
-+#include <vtkTexture.h>
- #include <vtkTextureMapToPlane.h>
- #include <vtkPolyDataNormals.h>
- #include <vtkAlgorithmOutput.h>
diff --git a/var/spack/repos/builtin/packages/opencv/opencv3.3_clp_cmake.patch b/var/spack/repos/builtin/packages/opencv/opencv3.3_clp_cmake.patch
new file mode 100644
index 0000000000..45af238e30
--- /dev/null
+++ b/var/spack/repos/builtin/packages/opencv/opencv3.3_clp_cmake.patch
@@ -0,0 +1,14 @@
+diff -ru a/cmake/OpenCVFindLibsPerf.cmake b/cmake/OpenCVFindLibsPerf.cmake
+--- a/cmake/OpenCVFindLibsPerf.cmake 2019-04-06 16:43:23.000000000 -0500
++++ b/cmake/OpenCVFindLibsPerf.cmake 2021-11-26 18:35:50.606453927 -0600
+@@ -62,9 +62,7 @@
+ PKG_CHECK_MODULES(CLP clp)
+ if(CLP_FOUND)
+ set(HAVE_CLP TRUE)
+- if(NOT ${CLP_INCLUDE_DIRS} STREQUAL "")
+- ocv_include_directories(${CLP_INCLUDE_DIRS})
+- endif()
++ ocv_include_directories(${CLP_INCLUDE_DIRS})
+ link_directories(${CLP_LIBRARY_DIRS})
+ set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${CLP_LIBRARIES})
+ endif()
diff --git a/var/spack/repos/builtin/packages/opencv/opencv3.3_cvv_cmake.patch b/var/spack/repos/builtin/packages/opencv/opencv3.3_cvv_cmake.patch
new file mode 100644
index 0000000000..a4d45005a4
--- /dev/null
+++ b/var/spack/repos/builtin/packages/opencv/opencv3.3_cvv_cmake.patch
@@ -0,0 +1,9 @@
+diff -ru a/opencv_contrib/modules/cvv/CMakeLists.txt b/opencv_contrib/modules/cvv/CMakeLists.txt
+--- a/opencv_contrib/modules/cvv/CMakeLists.txt 2021-11-26 18:39:03.000000000 -0600
++++ b/opencv_contrib/modules/cvv/CMakeLists.txt 2021-11-26 18:57:51.215905427 -0600
+@@ -1,4 +1,4 @@
+-if(NOT HAVE_QT5)
++if(NOT HAVE_QT)
+ ocv_module_disable(cvv)
+ return()
+ endif()
diff --git a/var/spack/repos/builtin/packages/opencv/opencv3.4.12_clp_cmake.patch b/var/spack/repos/builtin/packages/opencv/opencv3.4.12_clp_cmake.patch
new file mode 100644
index 0000000000..00f97b45b7
--- /dev/null
+++ b/var/spack/repos/builtin/packages/opencv/opencv3.4.12_clp_cmake.patch
@@ -0,0 +1,14 @@
+diff -ru a/cmake/OpenCVFindLibsPerf.cmake b/cmake/OpenCVFindLibsPerf.cmake
+--- a/cmake/OpenCVFindLibsPerf.cmake 2020-10-10 15:14:29.000000000 -0500
++++ b/cmake/OpenCVFindLibsPerf.cmake 2021-11-26 18:30:13.861053938 -0600
+@@ -120,9 +120,7 @@
+ ocv_check_modules(CLP clp)
+ if(CLP_FOUND)
+ set(HAVE_CLP TRUE)
+- if(NOT ${CLP_INCLUDE_DIRS} STREQUAL "")
+- ocv_include_directories(${CLP_INCLUDE_DIRS})
+- endif()
++ ocv_include_directories(${CLP_INCLUDE_DIRS})
+ list(APPEND OPENCV_LINKER_LIBS ${CLP_LIBRARIES})
+ endif()
+ endif()
diff --git a/var/spack/repos/builtin/packages/opencv/opencv3.4.4_cvv_cmake.patch b/var/spack/repos/builtin/packages/opencv/opencv3.4.4_cvv_cmake.patch
new file mode 100644
index 0000000000..794bab58a4
--- /dev/null
+++ b/var/spack/repos/builtin/packages/opencv/opencv3.4.4_cvv_cmake.patch
@@ -0,0 +1,9 @@
+diff -ru a/opencv_contrib/modules/cvv/CMakeLists.txt b/opencv_contrib/modules/cvv/CMakeLists.txt
+--- a/opencv_contrib/modules/cvv/CMakeLists.txt 2021-11-21 21:42:44.000000000 -0600
++++ b/opencv_contrib/modules/cvv/CMakeLists.txt 2021-11-22 12:57:40.359680713 -0600
+@@ -1,4 +1,4 @@
+-if(NOT HAVE_QT5 OR NOT HAVE_CXX11)
++if(NOT HAVE_QT OR NOT HAVE_CXX11)
+ ocv_module_disable(cvv)
+ return()
+ endif()
diff --git a/var/spack/repos/builtin/packages/opencv/opencv4.0.0_clp_cmake.patch b/var/spack/repos/builtin/packages/opencv/opencv4.0.0_clp_cmake.patch
new file mode 100644
index 0000000000..70f2f88a34
--- /dev/null
+++ b/var/spack/repos/builtin/packages/opencv/opencv4.0.0_clp_cmake.patch
@@ -0,0 +1,14 @@
+diff -ru a/cmake/OpenCVFindLibsPerf.cmake b/cmake/OpenCVFindLibsPerf.cmake
+--- a/cmake/OpenCVFindLibsPerf.cmake 2019-04-07 12:09:10.000000000 -0500
++++ b/cmake/OpenCVFindLibsPerf.cmake 2021-11-26 18:18:49.532203131 -0600
+@@ -62,9 +62,7 @@
+ PKG_CHECK_MODULES(CLP clp)
+ if(CLP_FOUND)
+ set(HAVE_CLP TRUE)
+- if(NOT ${CLP_INCLUDE_DIRS} STREQUAL "")
+- ocv_include_directories(${CLP_INCLUDE_DIRS})
+- endif()
++ ocv_include_directories(${CLP_INCLUDE_DIRS})
+ link_directories(${CLP_LIBRARY_DIRS})
+ set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${CLP_LIBRARIES})
+ endif()
diff --git a/var/spack/repos/builtin/packages/opencv/opencv4.1.1_clp_cmake.patch b/var/spack/repos/builtin/packages/opencv/opencv4.1.1_clp_cmake.patch
new file mode 100644
index 0000000000..d795d52873
--- /dev/null
+++ b/var/spack/repos/builtin/packages/opencv/opencv4.1.1_clp_cmake.patch
@@ -0,0 +1,14 @@
+diff -ru a/cmake/OpenCVFindLibsPerf.cmake b/cmake/OpenCVFindLibsPerf.cmake
+--- a/cmake/OpenCVFindLibsPerf.cmake 2021-10-09 10:48:26.000000000 -0500
++++ b/cmake/OpenCVFindLibsPerf.cmake 2021-11-19 19:10:47.895667720 -0600
+@@ -128,9 +128,7 @@
+ ocv_check_modules(CLP clp)
+ if(CLP_FOUND)
+ set(HAVE_CLP TRUE)
+- if(NOT ${CLP_INCLUDE_DIRS} STREQUAL "")
+- ocv_include_directories(${CLP_INCLUDE_DIRS})
+- endif()
++ ocv_include_directories(${CLP_INCLUDE_DIRS})
+ list(APPEND OPENCV_LINKER_LIBS ${CLP_LIBRARIES})
+ endif()
+ endif()
diff --git a/var/spack/repos/builtin/packages/opencv/package.py b/var/spack/repos/builtin/packages/opencv/package.py
index 966203caa5..9ae1492c71 100644
--- a/var/spack/repos/builtin/packages/opencv/package.py
+++ b/var/spack/repos/builtin/packages/opencv/package.py
@@ -2,399 +2,1069 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+
class Opencv(CMakePackage, CudaPackage):
"""OpenCV (Open Source Computer Vision Library) is an open source computer
vision and machine learning software library."""
- homepage = 'https://opencv.org/'
- url = 'https://github.com/opencv/opencv/archive/4.5.0.tar.gz'
- git = 'https://github.com/opencv/opencv.git'
-
- maintainers = ['bvanessen', 'adamjstewart']
-
- version('master', branch='master')
- version('4.5.2', sha256='ae258ed50aa039279c3d36afdea5c6ecf762515836b27871a8957c610d0424f8')
- version('4.5.1', sha256='e27fe5b168918ab60d58d7ace2bd82dd14a4d0bd1d3ae182952c2113f5637513')
- version('4.5.0', sha256='dde4bf8d6639a5d3fe34d5515eab4a15669ded609a1d622350c7ff20dace1907')
- version('4.2.0', sha256='9ccb2192d7e8c03c58fee07051364d94ed7599363f3b0dce1c5e6cc11c1bb0ec')
- version('4.1.2', sha256='385dd0a9c25e67ef0dd60e022d2a2d7b17e2f36819cf3cb46aa8cdff5c5282c9')
- version('4.1.1', sha256='5de5d96bdfb9dad6e6061d70f47a0a91cee96bb35afb9afb9ecb3d43e243d217')
- version('4.1.0', sha256='8f6e4ab393d81d72caae6e78bd0fd6956117ec9f006fba55fcdb88caf62989b7')
- version('4.0.1', sha256='7b86a0ee804244e0c407321f895b15e4a7162e9c5c0d2efc85f1cadec4011af4')
- version('4.0.0', sha256='3787b3cc7b21bba1441819cb00c636911a846c0392ddf6211d398040a1e4886c')
- version('3.4.12', sha256='c8919dfb5ead6be67534bf794cb0925534311f1cd5c6680f8164ad1813c88d13')
- version('3.4.6', sha256='e7d311ff97f376b8ee85112e2b536dbf4bdf1233673500175ed7cf21a0089f6d')
- version('3.4.5', sha256='0c57d9dd6d30cbffe68a09b03f4bebe773ee44dc8ff5cd6eaeb7f4d5ef3b428e')
- version('3.4.4', sha256='a35b00a71d77b484f73ec485c65fe56c7a6fa48acd5ce55c197aef2e13c78746')
- version('3.4.3', sha256='4eef85759d5450b183459ff216b4c0fa43e87a4f6aa92c8af649f89336f002ec')
- version('3.4.1', sha256='f1b87684d75496a1054405ae3ee0b6573acaf3dad39eaf4f1d66fdd7e03dc852')
- version('3.4.0', sha256='678cc3d2d1b3464b512b084a8cca1fad7de207c7abdf2caa1fed636c13e916da')
- version('3.3.1', sha256='5dca3bb0d661af311e25a72b04a7e4c22c47c1aa86eb73e70063cd378a2aa6ee')
- version('3.3.0', sha256='8bb312b9d9fd17336dc1f8b3ac82f021ca50e2034afc866098866176d985adc6')
- version('3.2.0', sha256='9541efbf68f298f45914b4e837490647f4d5e472b4c0c04414a787d116a702b2', deprecated=True)
- version('3.1.0', sha256='f3b160b9213dd17aa15ddd45f6fb06017fe205359dbd1f7219aad59c98899f15', deprecated=True)
- version('2.4.13.2', sha256='4b00c110e6c54943cbbb7cf0d35c5bc148133ab2095ee4aaa0ac0a4f67c58080', deprecated=True)
- version('2.4.13.1', sha256='0d5ce5e0973e3a745f927d1ee097aaf909aae59f787be6d27a03d639e2d96bd7', deprecated=True)
- version('2.4.13', sha256='94ebcca61c30034d5fb16feab8ec12c8a868f5162d20a9f0396f0f5f6d8bbbff', deprecated=True)
- version('2.4.12.3', sha256='a4cbcd2d470860b0cf1f8faf504619c18a8ac38fd414c5a88ed3e94c963aa750', deprecated=True)
- version('2.4.12.2', sha256='150a165eb14a5ea74fb94dcc16ac7d668a6ff20a4449df2570734a2abaab9c0e', deprecated=True)
- version('2.4.12.1', sha256='c1564771f79304a2597ae4f74f44032021e3a46657e4a117060c08f5ed05ad83', deprecated=True)
+ homepage = "https://opencv.org/"
+ url = "https://github.com/opencv/opencv/archive/4.5.0.tar.gz"
+ git = "https://github.com/opencv/opencv.git"
+
+ maintainers = ["bvanessen", "adamjstewart", "glennpj"]
+
+ version("master", branch="master")
+ version(
+ "4.5.4",
+ sha256="c20bb83dd790fc69df9f105477e24267706715a9d3c705ca1e7f613c7b3bad3d",
+ )
+ version(
+ "4.5.2",
+ sha256="ae258ed50aa039279c3d36afdea5c6ecf762515836b27871a8957c610d0424f8",
+ )
+ version(
+ "4.5.1",
+ sha256="e27fe5b168918ab60d58d7ace2bd82dd14a4d0bd1d3ae182952c2113f5637513",
+ )
+ version(
+ "4.5.0",
+ sha256="dde4bf8d6639a5d3fe34d5515eab4a15669ded609a1d622350c7ff20dace1907",
+ )
+ version(
+ "4.2.0",
+ sha256="9ccb2192d7e8c03c58fee07051364d94ed7599363f3b0dce1c5e6cc11c1bb0ec",
+ )
+ version(
+ "4.1.2",
+ sha256="385dd0a9c25e67ef0dd60e022d2a2d7b17e2f36819cf3cb46aa8cdff5c5282c9",
+ )
+ version(
+ "4.1.1",
+ sha256="5de5d96bdfb9dad6e6061d70f47a0a91cee96bb35afb9afb9ecb3d43e243d217",
+ )
+ version(
+ "4.1.0",
+ sha256="8f6e4ab393d81d72caae6e78bd0fd6956117ec9f006fba55fcdb88caf62989b7",
+ )
+ version(
+ "4.0.1",
+ sha256="7b86a0ee804244e0c407321f895b15e4a7162e9c5c0d2efc85f1cadec4011af4",
+ )
+ version(
+ "4.0.0",
+ sha256="3787b3cc7b21bba1441819cb00c636911a846c0392ddf6211d398040a1e4886c",
+ )
+ version(
+ "3.4.12",
+ sha256="c8919dfb5ead6be67534bf794cb0925534311f1cd5c6680f8164ad1813c88d13",
+ )
+ version(
+ "3.4.6",
+ sha256="e7d311ff97f376b8ee85112e2b536dbf4bdf1233673500175ed7cf21a0089f6d",
+ )
+ version(
+ "3.4.5",
+ sha256="0c57d9dd6d30cbffe68a09b03f4bebe773ee44dc8ff5cd6eaeb7f4d5ef3b428e",
+ )
+ version(
+ "3.4.4",
+ sha256="a35b00a71d77b484f73ec485c65fe56c7a6fa48acd5ce55c197aef2e13c78746",
+ )
+ version(
+ "3.4.3",
+ sha256="4eef85759d5450b183459ff216b4c0fa43e87a4f6aa92c8af649f89336f002ec",
+ )
+ version(
+ "3.4.1",
+ sha256="f1b87684d75496a1054405ae3ee0b6573acaf3dad39eaf4f1d66fdd7e03dc852",
+ )
+ version(
+ "3.4.0",
+ sha256="678cc3d2d1b3464b512b084a8cca1fad7de207c7abdf2caa1fed636c13e916da",
+ )
+ version(
+ "3.3.1",
+ sha256="5dca3bb0d661af311e25a72b04a7e4c22c47c1aa86eb73e70063cd378a2aa6ee",
+ )
+ version(
+ "3.3.0",
+ sha256="8bb312b9d9fd17336dc1f8b3ac82f021ca50e2034afc866098866176d985adc6",
+ )
+
+ contrib_vers = [
+ "3.3.0",
+ "3.3.1",
+ "3.4.0",
+ "3.4.1",
+ "3.4.3",
+ "3.4.4",
+ "3.4.5",
+ "3.4.6",
+ "3.4.12",
+ "4.0.0",
+ "4.0.1",
+ "4.1.0",
+ "4.1.1",
+ "4.1.2",
+ "4.2.0",
+ "4.5.0",
+ "4.5.1",
+ "4.5.2",
+ "4.5.4",
+ ]
+ for cv in contrib_vers:
+ resource(
+ name="contrib",
+ git="https://github.com/opencv/opencv_contrib.git",
+ tag="{0}".format(cv),
+ when="@{0}".format(cv),
+ )
+
+ # Patch to fix conflict between CUDA and OpenCV (reproduced with 3.3.0
+ # and 3.4.1) header file that have the same name. Problem is fixed in
+ # the current development branch of OpenCV. See #8461 for more information.
+ patch("dnn_cuda.patch", when="@3.3.0:3.4.1+cuda+dnn")
+
+ patch("opencv3.2_cmake.patch", when="@3.2:3.4.1")
+
+ # do not prepend system paths
+ patch("cmake_no-system-paths.patch")
+
+ patch("opencv4.1.1_clp_cmake.patch", when="@4.1.1:")
+ patch("opencv4.0.0_clp_cmake.patch", when="@4.0.0:4.1.0")
+ patch("opencv3.4.12_clp_cmake.patch", when="@3.4.12")
+ patch("opencv3.3_clp_cmake.patch", when="@:3.4.6")
+
+ patch("opencv3.4.4_cvv_cmake.patch", when="@3.4.4:")
+ patch("opencv3.3_cvv_cmake.patch", when="@:3.4.3")
+
+ # OpenCV prebuilt apps (variants)
+ # Defined in `apps/*/CMakeLists.txt` using
+ # `ocv_add_application(...)`
+ apps = [
+ "annotation",
+ "createsamples",
+ "interactive-calibration",
+ "model-diagnostics",
+ "traincascade",
+ "version",
+ "visualisation",
+ ]
+
+ # app variants
+ for app in apps:
+ variant(app, default=False, description="Install {0} app".format(app))
+
+ # app conflicts
+ with when("+annotation"):
+ conflicts("~highgui")
+ conflicts("~imgcodecs")
+ conflicts("~imgproc")
+ conflicts("~videoio")
+
+ with when("+createsamples"):
+ conflicts("~calib3d")
+ conflicts("~features2d")
+ conflicts("~highgui")
+ conflicts("~imgcodecs")
+ conflicts("~imgproc")
+ conflicts("~objdetect")
+ conflicts("~videoio")
+
+ with when("+interactive-calibration"):
+ conflicts("~calib3d")
+ conflicts("~features2d")
+ conflicts("~highgui")
+ conflicts("~imgproc")
+ conflicts("~videoio")
+
+ with when("+model-diagnostics"):
+ conflicts("~dnn")
+
+ with when("+traincascade"):
+ conflicts("~calib3d")
+ conflicts("~features2d")
+ conflicts("~highgui")
+ conflicts("~imgcodecs")
+ conflicts("~imgproc")
+ conflicts("~objdetect")
+
+ with when("+visualisation"):
+ conflicts("~highgui")
+ conflicts("~imgcodecs")
+ conflicts("~imgproc")
+ conflicts("~videoio")
# OpenCV modules (variants)
# Defined in `modules/*/CMakeLists.txt` using
# `ocv_add_module(...)` and `ocv_define_module(...)`
modules = [
- 'apps', 'calib3d', 'core', 'dnn', 'features2d', 'flann', 'gapi', 'highgui',
- 'imgcodecs', 'imgproc', 'java', 'java_bindings_generator', 'js',
- 'js_bindings_generator', 'ml', 'objc', 'objc_bindings_generator', 'objdetect',
- 'photo', 'python2', 'python3', 'python_bindings_generator', 'python_tests',
- 'stitching', 'ts', 'video', 'videoio', 'world'
+ "calib3d",
+ "dnn",
+ "features2d",
+ "flann",
+ "gapi",
+ "highgui",
+ "imgcodecs",
+ "imgproc",
+ "java",
+ "java_bindings_generator",
+ "ml",
+ "objc",
+ "objc_bindings_generator",
+ "objdetect",
+ "photo",
+ "python2",
+ "python3",
+ "python_bindings_generator",
+ "python_tests",
+ "stitching",
+ "ts",
+ "video",
+ "videoio",
+ "world",
]
+ # These need additional spack packages
+ # js needs Emscripten
+ modules_pending = [
+ "js",
+ "js_bindings_generator",
+ ]
+
+ # module variants
for mod in modules:
# At least one of these modules must be enabled to build OpenCV
- variant(mod, default=mod == 'core',
- description='Include opencv_{0} module'.format(mod))
+ variant(mod, default=False, description="Include opencv_{0} module".format(mod))
+
+ # module conflicts and dependencies
+ with when("+calib3d"):
+ conflicts("~features2d")
+ conflicts("~flann")
+ conflicts("~imgproc")
+
+ with when("+dnn"):
+ conflicts("~imgproc")
+ conflicts("~protobuf")
+
+ with when("+features2d"):
+ conflicts("~imgproc")
+
+ with when("+gapi"):
+ conflicts("~ade")
+ conflicts("~imgproc")
+
+ with when("+highgui"):
+ conflicts("~imgcodecs")
+ conflicts("~imgproc")
+
+ with when("+imgcodecs"):
+ conflicts("~imgproc")
+
+ with when("+java"):
+ conflicts("~imgproc")
+ conflicts("~java_bindings_generator")
+ conflicts("~python2~python3")
+
+ with when("+java_bindings_generator"):
+ depends_on("java")
+ depends_on("ant")
+
+ with when("+objc"):
+ conflicts("~imgproc")
+ conflicts("~objc_bindings_generator")
+
+ with when("+objc_bindings_generator"):
+ conflicts("~imgproc")
+
+ with when("+objdetect"):
+ conflicts("~calib3d")
+ conflicts("~dnn")
+ conflicts("~imgproc")
+
+ with when("+photo"):
+ conflicts("~imgproc")
+
+ with when("+python2"):
+ conflicts("+python3")
+ conflicts("~python_bindings_generator")
+ depends_on("python@2.7:2.8", type=("build", "link", "run"))
+ depends_on("py-setuptools", type="build")
+ depends_on("py-numpy", type=("build", "run"))
+ extends("python", when="+python2")
+
+ with when("+python3"):
+ conflicts("+python2")
+ conflicts("~python_bindings_generator")
+ depends_on("python@3.2:", type=("build", "link", "run"))
+ depends_on("py-setuptools", type="build")
+ depends_on("py-numpy", type=("build", "run"))
+ extends("python", when="+python3")
+
+ with when("+stitching"):
+ conflicts("~calib3d")
+ conflicts("~features2d")
+ conflicts("~flann")
+ conflicts("~imgproc")
+
+ with when("+ts"):
+ conflicts("~highgui")
+ conflicts("~imgcodecs")
+ conflicts("~imgproc")
+ conflicts("~videoio")
+
+ with when("+video"):
+ conflicts("~imgproc")
+
+ with when("+videoio"):
+ conflicts("~ffmpeg")
+ conflicts("~imgcodecs")
+ conflicts("~imgproc")
+
+ # OpenCV contrib modules (variants)
+ contrib_modules = [
+ "alphamat",
+ "aruco",
+ "barcode",
+ "bgsegm",
+ "bioinspired",
+ "ccalib",
+ "cudaarithm",
+ "cudabgsegm",
+ "cudacodec",
+ "cudafeatures2d",
+ "cudafilters",
+ "cudaimgproc",
+ "cudalegacy",
+ "cudaobjdetect",
+ "cudaoptflow",
+ "cudastereo",
+ "cudawarping",
+ "cudev",
+ "cvv",
+ "datasets",
+ "dnn_objdetect",
+ "dnn_superres",
+ "dpm",
+ "face",
+ "freetype",
+ "fuzzy",
+ "hdf",
+ "hfs",
+ "img_hash",
+ "intensity_transform",
+ "line_descriptor",
+ "matlab",
+ "mcc",
+ "optflow",
+ "phase_unwrapping",
+ "plot",
+ "quality",
+ "rapid",
+ "reg",
+ "rgbd",
+ "saliency",
+ "sfm",
+ "shape",
+ "stereo",
+ "structured_light",
+ "superres",
+ "surface_matching",
+ "text",
+ "tracking",
+ "videostab",
+ "viz",
+ "wechat_qrcode",
+ "xfeatures2d",
+ "ximgproc",
+ "xobjdetect",
+ "xphoto",
+ ]
+
+ contrib_modules_pending = [
+ "julia", # need a way to manage the installation prefix
+ "ovis", # need ogre
+ ]
+ for mod in contrib_modules:
+ variant(
+ mod,
+ default=False,
+ description="Include opencv_{0} contrib module".format(mod),
+ )
+
+ # contrib module conflicts and dependencies
+ with when("+alphamat"):
+ conflicts("~eigen")
+ conflicts("~imgproc")
+
+ with when("+aruco"):
+ conflicts("~calib3d")
+ conflicts("~imgproc")
+
+ with when("+barcode"):
+ conflicts("~dnn")
+ conflicts("~imgproc")
+
+ with when("+bgsegm"):
+ conflicts("~calib3d")
+ conflicts("~imgproc")
+ conflicts("~video")
+
+ with when("+ccalib"):
+ conflicts("~calib3d")
+ conflicts("~features2d")
+ conflicts("~highgui")
+ conflicts("~imgproc")
+
+ with when("+cublas"):
+ conflicts("~cuda")
+ conflicts("~cudev")
+
+ with when("+cuda"):
+ conflicts("~cudev")
+
+ with when("+cudaarithm"):
+ conflicts("~cuda")
+ conflicts("~cublas")
+ conflicts("~cudev")
+ conflicts("~cufft")
+
+ with when("+cudabgsegm"):
+ conflicts("~cuda")
+ conflicts("~cudev")
+ conflicts("~video")
+
+ with when("+cudacodec"):
+ conflicts("~cudev")
+ conflicts("~videoio")
+
+ with when("+cudafeatures2d"):
+ conflicts("~cuda")
+ conflicts("~cudafilters")
+ conflicts("~cudawarping")
+ conflicts("~cudev")
+ conflicts("~features2d")
+
+ with when("+cudafilters"):
+ conflicts("~cuda")
+ conflicts("~cudaarithm")
+ conflicts("~cudev")
+ conflicts("~imgproc")
+
+ with when("+cudaimgproc"):
+ conflicts("~cuda")
+ conflicts("~cudev")
+ conflicts("~imgproc")
+
+ with when("+cudalegacy"):
+ conflicts("~cuda")
+ conflicts("~cudev")
+ conflicts("~video")
+
+ with when("+cudaobjdetect"):
+ conflicts("~cuda")
+ conflicts("~cudaarithm")
+ conflicts("~cudawarping")
+ conflicts("~cudev")
+ conflicts("~objdetect")
+
+ with when("+cudaoptflow"):
+ conflicts("~cuda")
+ conflicts("~cudaarithm")
+ conflicts("~cudaimgproc")
+ conflicts("~cudawarping")
+ conflicts("~cudev")
+ conflicts("~optflow")
+ conflicts("~video")
+
+ with when("+cudastereo"):
+ conflicts("~calib3d")
+ conflicts("~cuda")
+ conflicts("~cudev")
+
+ with when("+cudawarping"):
+ conflicts("~cuda")
+ conflicts("~cudev")
+ conflicts("~imgproc")
+
+ with when("+cudev"):
+ conflicts("~cuda")
+
+ with when("+cvv"):
+ conflicts("~features2d")
+ conflicts("~imgproc")
+ conflicts("~qt")
+
+ with when("+datasets"):
+ conflicts("~flann")
+ conflicts("~imgcodecs")
+ conflicts("~ml")
+
+ with when("+dnn_objdetect"):
+ conflicts("~dnn")
+ conflicts("~imgproc")
+
+ with when("+dnn_superres"):
+ conflicts("~dnn")
+ conflicts("~imgproc")
+
+ with when("+dpm"):
+ conflicts("~imgproc")
+ conflicts("~objdetect")
+
+ with when("+face"):
+ conflicts("~calib3d")
+ conflicts("~imgproc")
+ conflicts("~objdetect")
+ conflicts("~photo")
+
+ with when("+fuzzy"):
+ conflicts("~imgproc")
+
+ with when("+freetype"):
+ conflicts("~imgproc")
+ depends_on("freetype")
+ depends_on("harfbuzz")
+
+ with when("+hdf"):
+ depends_on("hdf5")
+
+ with when("+hfs"):
+ with when("+cuda"):
+ conflicts("~cudev")
+ conflicts("~imgproc")
+
+ with when("+img_hash"):
+ conflicts("~imgproc")
+
+ with when("+intensity_transform"):
+ conflicts("~imgproc")
+
+ with when("+line_descriptor"):
+ conflicts("~imgproc")
+
+ with when("+matlab"):
+ conflicts("~python2~python3")
+ depends_on("matlab")
+ depends_on("py-jinja2")
+
+ with when("+mcc"):
+ conflicts("~calib3d")
+ conflicts("~dnn")
+ conflicts("~imgproc")
+
+ with when("+optflow"):
+ conflicts("~calib3d")
+ conflicts("~flann")
+ conflicts("~imgcodecs")
+ conflicts("~imgproc")
+ conflicts("~video")
+ conflicts("~ximgproc")
+
+ with when("+phase_unwrapping"):
+ conflicts("~imgproc")
+
+ with when("+plot"):
+ conflicts("~imgproc")
+
+ with when("+quality"):
+ conflicts("~imgproc")
+ conflicts("~ml")
+
+ with when("+rapid"):
+ conflicts("~calib3d")
+ conflicts("~imgproc")
+
+ with when("+reg"):
+ conflicts("~imgproc")
+
+ with when("+rgbd"):
+ conflicts("~calib3d")
+ conflicts("~eigen")
+ conflicts("~imgproc")
+
+ with when("+saliency"):
+ conflicts("%intel")
+ conflicts("~features2d")
+ conflicts("~imgproc")
+
+ with when("+sfm"):
+ conflicts("~calib3d")
+ conflicts("~eigen")
+ conflicts("~features2d")
+ conflicts("~imgcodecs")
+ conflicts("~xfeatures2d")
+ depends_on("ceres-solver")
+ depends_on("gflags")
+ depends_on("glog")
+
+ with when("+shape"):
+ conflicts("~calib3d")
+ conflicts("~imgproc")
+
+ with when("+stereo"):
+ conflicts("~calib3d")
+ conflicts("~features2d")
+ conflicts("~imgproc")
+ conflicts("~tracking")
+
+ with when("+structured_light"):
+ conflicts("~calib3d")
+ conflicts("~imgproc")
+ conflicts("~phase_unwrapping")
+
+ with when("+superres"):
+ with when("+cuda"):
+ conflicts("~cudev")
+ conflicts("~imgproc")
+ conflicts("~optflow")
+ conflicts("~video")
+
+ with when("+surface_matching"):
+ conflicts("~flann")
+
+ with when("+text"):
+ conflicts("~dnn")
+ conflicts("~features2d")
+ conflicts("~imgproc")
+ conflicts("~ml")
+
+ with when("+tracking"):
+ conflicts("~imgproc")
+ conflicts("~plot")
+ conflicts("~video")
+
+ with when("+videostab"):
+ with when("+cuda"):
+ conflicts("~cudev")
+ conflicts("~calib3d")
+ conflicts("~features2d")
+ conflicts("~imgproc")
+ conflicts("~photo")
+ conflicts("~video")
+
+ with when("+viz"):
+ conflicts("~vtk")
+
+ with when("+wechat_qrcode"):
+ conflicts("~dnn")
+ conflicts("~imgproc")
+ depends_on("libiconv")
+
+ with when("+xfeatures2d"):
+ with when("+cuda"):
+ conflicts("~cudev")
+ conflicts("~calib3d")
+ conflicts("~features2d")
+ conflicts("~imgproc")
+
+ with when("+ximgproc"):
+ conflicts("~calib3d")
+ conflicts("~imgcodecs")
+ conflicts("~imgproc")
+ conflicts("~video")
+
+ with when("+xobjdetect"):
+ conflicts("~imgcodecs")
+ conflicts("~imgproc")
+ conflicts("~objdetect")
+
+ with when("+xphoto"):
+ conflicts("~imgproc")
+ conflicts("~photo")
# Optional 3rd party components (variants)
# Defined in `CMakeLists.txt` and `modules/gapi/cmake/init.cmake`
# using `OCV_OPTION(WITH_* ...)`
components = [
- '1394', 'ade', 'android_mediandk', 'android_native_camera', 'aravis',
- 'avfoundation', 'cap_ios', 'carotene', 'clp', 'cpufeatures', 'cublas', 'cuda',
- 'cudnn', 'cufft', 'directx', 'dshow', 'eigen', 'ffmpeg', 'freetype', 'gdal',
- 'gdcm', 'gphoto2', 'gstreamer', 'gtk', 'gtk_2_x', 'halide', 'hpx',
- 'imgcodec_hdr', 'imgcode_pfm', 'imgcodec_pxm', 'imgcodec_sunraster',
- 'inf_engine', 'ipp', 'itt', 'jasper', 'jpeg', 'lapack', 'librealsense', 'mfx',
- 'msmf', 'msmf_dxva', 'ngraph', 'nvcuvid', 'onnx', 'opencl', 'openclamdblas',
- 'openclamdfft', 'opencl_d3d11_nv', 'opencl_svm', 'openexr', 'opengl',
- 'openjpeg', 'openmp', 'openni', 'openni2', 'openvx', 'plaidml', 'png',
- 'protobuf', 'pthreads_pf', 'pvapi', 'qt', 'quirc', 'tbb', 'tengine', 'tiff',
- 'ueye', 'v4l', 'va', 'va_intel', 'vtk', 'vulcan', 'webp', 'win32ui', 'ximea',
- 'xine'
+ "1394",
+ "ade",
+ "android_mediandk",
+ "android_native_camera",
+ "avfoundation",
+ "cap_ios",
+ "carotene",
+ "clp",
+ "cpufeatures",
+ "cublas",
+ "cuda",
+ "cudnn",
+ "cufft",
+ "directx",
+ "dshow",
+ "eigen",
+ "ffmpeg",
+ "gdal",
+ "gtk",
+ "hpx",
+ "imgcodec_hdr",
+ "imgcodec_pfm",
+ "imgcodec_pxm",
+ "imgcodec_sunraster",
+ "ipp",
+ "itt",
+ "jasper",
+ "jpeg",
+ "lapack",
+ "msmf",
+ "msmf_dxva",
+ "onnx",
+ "opencl",
+ "opencl_d3d11_nv",
+ "openexr",
+ "opengl",
+ "openjpeg",
+ "openmp",
+ "plaidml",
+ "png",
+ "protobuf",
+ "pthreads_pf",
+ "qt",
+ "quirc",
+ "tbb",
+ "tengine",
+ "tesseract",
+ "tiff",
+ "v4l",
+ "vtk",
+ "vulcan",
+ "webp",
+ "win32ui",
]
+ # These likely need additional spack packages
+ components_pending = [
+ "aravis",
+ "gdcm",
+ "gphoto2",
+ "gstreamer",
+ "gtk_2_x", # deprecated in spack
+ "halide",
+ "inf_engine",
+ "librealsense",
+ "mfx",
+ "ngraph",
+ "nvcuvid", # disabled, details: https://github.com/opencv/opencv/issues/14850
+ "opencl_svm",
+ "openclamdblas",
+ "openclamdfft",
+ "openni",
+ "openni2",
+ "openvx",
+ "pvapi",
+ "ueye",
+ "va",
+ "va_intel",
+ "ximea",
+ "xine",
+ ]
+
+ # components and modules with the same name
+ # used in `def cmake_args(self)`
+ component_and_module = ["freetype", "julia", "matlab"]
+
for component in components:
- variant(component, default=False,
- description='Include {0} support'.format(component))
+ variant(
+ component,
+ default=False,
+ description="Include {0} support".format(component),
+ )
# Other (variants)
- variant('shared', default=True,
- description='Enables the build of shared libraries')
- variant('powerpc', default=False, description='Enable PowerPC for GCC')
- variant('fast-math', default=False,
- description='Enable -ffast-math (not recommended for GCC 4.6.x)')
- variant('nonfree', default=False, description='Enable non-free algorithms')
-
- variant('contrib', default=False, description='Adds in code from opencv_contrib.')
- contrib_vers = [
- '3.1.0', '3.2.0', '3.3.0', '3.3.1', '3.4.0', '3.4.1', '3.4.3', '3.4.4',
- '3.4.5', '3.4.6', '3.4.12', '4.0.0', '4.0.1', '4.1.0', '4.1.1',
- '4.1.2', '4.2.0', '4.5.0', '4.5.1', '4.5.2'
- ]
- for cv in contrib_vers:
- resource(name="contrib",
- git='https://github.com/opencv/opencv_contrib.git',
- tag="{0}".format(cv),
- when='@{0}+contrib'.format(cv))
+ variant("shared", default=True, description="Enables the build of shared libraries")
+ variant("powerpc", default=False, description="Enable PowerPC for GCC")
+ variant(
+ "fast-math",
+ default=False,
+ description="Enable -ffast-math (not recommended for GCC 4.6.x)",
+ )
+ variant("nonfree", default=False, description="Enable non-free algorithms")
# Required (dependencies)
- depends_on('cmake@3.5.1:', type='build')
- depends_on('python@2.7:2.8,3.2:', type='build')
- depends_on('zlib@1.2.3:')
-
- # OpenCV modules (dependencies)
- depends_on('java', when='+java_bindings_generator')
- depends_on('ant', when='+java_bindings_generator', type='build')
- extends('python', when='+python2')
- depends_on('python@2.7:2.8', when='+python2', type=('build', 'link', 'run'))
- depends_on('py-setuptools', when='+python2', type='build')
- depends_on('py-numpy', when='+python2', type=('build', 'run'))
- extends('python', when='+python3')
- depends_on('python@3.2:', when='+python3', type=('build', 'link', 'run'))
- depends_on('py-setuptools', when='+python3', type='build')
- depends_on('py-numpy', when='+python3', type=('build', 'run'))
- depends_on('ffmpeg', when='+videoio')
- depends_on('mpi', when='+videoio')
+ depends_on("cmake@3.5.1:", type="build")
+ depends_on("python@2.7:2.8,3.2:", type="build")
+ depends_on("java", type="build")
+ depends_on("zlib@1.2.3:")
# Optional 3rd party components (dependencies)
- depends_on('clp', when='+clp')
- depends_on('cuda@6.5:', when='+cuda')
- depends_on('cuda@:10.2', when='@4.0:4.2+cuda')
- depends_on('cuda@:9.0', when='@3.3.1:3.4+cuda')
- depends_on('cuda@:8', when='@:3.3.0+cuda')
- depends_on('cudnn', when='+cudnn')
- depends_on('cudnn@:7.6', when='@4.0:4.2+cudnn')
- depends_on('cudnn@:7.3', when='@3.3.1:3.4+cudnn')
- depends_on('cudnn@:6', when='@:3.3.0+cudnn')
- depends_on('eigen', when='+eigen')
- depends_on('ffmpeg', when='+ffmpeg')
- depends_on('freetype', when='+freetype')
- depends_on('gdal', when='+gdal')
- depends_on('gtkplus', when='+gtk')
- depends_on('gtkplus@:2', when='+gtk_2_x')
- depends_on('hpx', when='+hpx')
- depends_on('ipp', when='+ipp')
- depends_on('jasper', when='+jasper')
- depends_on('jpeg', when='+jpeg')
- depends_on('lapack', when='+lapack')
- depends_on('onnx', when='+onnx')
- depends_on('opencl', when='+opencl')
- depends_on('openexr', when='+openexr')
- depends_on('gl', when='+opengl')
- depends_on('openjpeg@2:', when='+openjpeg')
- depends_on('libpng', when='+png')
- depends_on('protobuf@3.5.0:', when='@3.4.1: +protobuf')
- depends_on('protobuf@3.1.0', when='@3.3.0:3.4.0 +protobuf')
- depends_on('qt', when='+qt')
- depends_on('tbb', when='+tbb')
- depends_on('libtiff', when='+tiff')
- depends_on('vtk', when='+vtk')
- depends_on('libwebp', when='+webp')
-
- # Other (dependencies)
- depends_on('hdf5', when='+contrib')
-
- # OpenCV modules (conflicts)
- # Defined in `apps/*/CMakeLists.txt` using `ocv_add_application(...)`
- # Different apps require different modules, but no way to control which apps
- # are installed. If +apps is requested, make sure all apps can be built.
- conflicts('+apps', when='~calib3d')
- conflicts('+apps', when='~core')
- conflicts('+apps', when='~dnn')
- conflicts('+apps', when='~features2d')
- conflicts('+apps', when='~highgui')
- conflicts('+apps', when='~imgcodecs')
- conflicts('+apps', when='~imgproc')
- conflicts('+apps', when='~objdetect')
- conflicts('+apps', when='~videoio')
- # Defined in `modules/*/CMakeLists.txt` using
- # `ocv_add_module(...)` and `ocv_define_module(...)`
- # If these required dependencies aren't found, CMake will silently
- # disable the requested module
- conflicts('+calib3d', when='~features2d')
- conflicts('+calib3d', when='~flann')
- conflicts('+calib3d', when='~imgproc')
- conflicts('+dnn', when='~core')
- conflicts('+dnn', when='~imgproc')
- conflicts('+features2d', when='~imgproc')
- conflicts('+flann', when='~core')
- conflicts('+gapi', when='~imgproc')
- conflicts('+highgui', when='~imgcodecs')
- conflicts('+highgui', when='~imgproc')
- conflicts('+imgcodecs', when='~imgproc')
- conflicts('+imgproc', when='~core')
- conflicts('+java', when='~core')
- conflicts('+java', when='~imgproc')
- conflicts('+java', when='~java_bindings_generator')
- conflicts('+js', when='~js_bindings_generator')
- conflicts('+ml', when='~core')
- conflicts('+objc', when='~core')
- conflicts('+objc', when='~imgproc')
- conflicts('+objc', when='~objc_bindings_generator')
- conflicts('+objc_bindings_generator', when='~core')
- conflicts('+objc_bindings_generator', when='~imgproc')
- conflicts('+objdetect', when='~calib3d')
- conflicts('+objdetect', when='~core')
- conflicts('+objdetect', when='~imgproc')
- conflicts('+photo', when='~imgproc')
- conflicts('+python2', when='~python_bindings_generator')
- conflicts('+python2', when='+python3')
- conflicts('+python3', when='~python_bindings_generator')
- conflicts('+python3', when='+python2')
- conflicts('+stitching', when='~calib3d')
- conflicts('+stitching', when='~features2d')
- conflicts('+stitching', when='~flann')
- conflicts('+stitching', when='~imgproc')
- conflicts('+ts', when='~core')
- conflicts('+ts', when='~highgui')
- conflicts('+ts', when='~imgcodecs')
- conflicts('+ts', when='~imgproc')
- conflicts('+ts', when='~videoio')
- conflicts('+video', when='~imgproc')
- conflicts('+videoio', when='~imgcodecs')
- conflicts('+videoio', when='~imgproc')
- conflicts('+world', when='~core')
+ depends_on("clp", when="+clp")
+ depends_on("cuda@6.5:", when="+cuda")
+ depends_on("cuda@:10.2", when="@4.0:4.2+cuda")
+ depends_on("cuda@:9.0", when="@3.3.1:3.4+cuda")
+ depends_on("cuda@:8", when="@:3.3.0+cuda")
+ depends_on("cudnn", when="+cudnn")
+ depends_on("cudnn@:7.6", when="@4.0:4.2+cudnn")
+ depends_on("cudnn@:7.3", when="@3.3.1:3.4+cudnn")
+ depends_on("cudnn@:6", when="@:3.3.0+cudnn")
+ depends_on("eigen", when="+eigen")
+ depends_on("ffmpeg+avresample", when="+ffmpeg")
+ depends_on("gdal", when="+gdal")
+ depends_on("gtkplus", when="+gtk")
+ depends_on("hpx", when="+hpx")
+ depends_on("ipp", when="+ipp")
+ depends_on("jasper", when="+jasper")
+ depends_on("jpeg", when="+jpeg")
+ depends_on("lapack", when="+lapack")
+ depends_on("onnx", when="+onnx")
+ depends_on("opencl", when="+opencl")
+ depends_on("openexr", when="+openexr")
+ depends_on("gl", when="+opengl")
+ depends_on("openjpeg@2:", when="+openjpeg")
+ depends_on("libpng", when="+png")
+ depends_on("protobuf@3.5.0:", when="@3.4.1: +protobuf")
+ depends_on("protobuf@3.1.0", when="@3.3.0:3.4.0 +protobuf")
+ depends_on("qt@5:", when="+qt")
+ depends_on("qt@5:+opengl", when="+qt+opengl")
+ depends_on("tbb", when="+tbb")
+ depends_on("libtiff+jpeg+libdeflate+lzma+zlib", when="+tiff")
+ depends_on("vtk", when="+vtk")
+ depends_on("libwebp", when="+webp")
+ depends_on("tesseract", when="+tesseract")
+ depends_on("leptonica", when="+tesseract")
+ depends_on("libdc1394", when="+1394")
# Optional 3rd party components (conflicts)
# Defined in `CMakeLists.txt` and `modules/gapi/cmake/init.cmake`
# using `OCV_OPTION(WITH_* ...)`
- conflicts('+ade', when='~gapi')
- conflicts('+android_mediandk', when='platform=darwin', msg='Android only')
- conflicts('+android_mediandk', when='platform=linux', msg='Android only')
- conflicts('+android_mediandk', when='platform=cray', msg='Android only')
- conflicts('+android_native_camera', when='platform=darwin', msg='Android only')
- conflicts('+android_native_camera', when='platform=linux', msg='Android only')
- conflicts('+android_native_camera', when='platform=cray', msg='Android only')
- conflicts('+avfoundation', when='platform=linux', msg='iOS/macOS only')
- conflicts('+avfoundation', when='platform=cray', msg='iOS/macOS only')
- conflicts('+cap_ios', when='platform=darwin', msg='iOS only')
- conflicts('+cap_ios', when='platform=linux', msg='iOS only')
- conflicts('+cap_ios', when='platform=cray', msg='iOS only')
- conflicts('+carotene', when='target=x86:', msg='ARM/AARCH64 only')
- conflicts('+carotene', when='target=x86_64:', msg='ARM/AARCH64 only')
- conflicts('+cpufeatures', when='platform=darwin', msg='Android only')
- conflicts('+cpufeatures', when='platform=linux', msg='Android only')
- conflicts('+cpufeatures', when='platform=cray', msg='Android only')
- conflicts('+cublas', when='~cuda')
- conflicts('+cudnn', when='~cuda')
- conflicts('+cufft', when='~cuda')
- conflicts('+directx', when='platform=darwin', msg='Windows only')
- conflicts('+directx', when='platform=linux', msg='Windows only')
- conflicts('+directx', when='platform=cray', msg='Windows only')
- conflicts('+dshow', when='platform=darwin', msg='Windows only')
- conflicts('+dshow', when='platform=linux', msg='Windows only')
- conflicts('+dshow', when='platform=cray', msg='Windows only')
- conflicts('+freetype', when='~gapi')
- conflicts('+gtk', when='platform=darwin', msg='Linux only')
- conflicts('+gtk_2_x', when='platform=darwin', msg='Linux only')
- conflicts('+ipp', when='target=aarch64:', msg='x86 or x86_64 only')
- conflicts('+msmf', when='platform=darwin', msg='Windows only')
- conflicts('+msmf', when='platform=linux', msg='Windows only')
- conflicts('+msmf', when='platform=cray', msg='Windows only')
- conflicts('+msmf_dxva', when='platform=darwin', msg='Windows only')
- conflicts('+msmf_dxva', when='platform=linux', msg='Windows only')
- conflicts('+msmf_dxva', when='platform=cray', msg='Windows only')
- conflicts('+nvcuvid', when='~cuda')
- conflicts('+opencl_d3d11_nv', when='platform=darwin', msg='Windows only')
- conflicts('+opencl_d3d11_nv', when='platform=linux', msg='Windows only')
- conflicts('+opencl_d3d11_nv', when='platform=cray', msg='Windows only')
- conflicts('+plaidml', when='~gapi')
- conflicts('+tengine', when='platform=darwin', msg='Linux only')
- conflicts('+tengine', when='target=x86:', msg='ARM/AARCH64 only')
- conflicts('+tengine', when='target=x86_64:', msg='ARM/AARCH64 only')
- conflicts('+ueye', when='platform=darwin', msg='Linux only')
- conflicts('+v4l', when='platform=darwin', msg='Linux only')
- conflicts('+va', when='platform=darwin', msg='Linux only')
- conflicts('+va_intel', when='platform=darwin', msg='Linux only')
- conflicts('+win32ui', when='platform=darwin', msg='Windows only')
- conflicts('+win32ui', when='platform=linux', msg='Windows only')
- conflicts('+win32ui', when='platform=cray', msg='Windows only')
- conflicts('+xine', when='platform=darwin', msg='Linux only')
-
- # Other (conflicts)
- conflicts('+cuda', when='~contrib', msg='cuda support requires +contrib')
-
- # Patch to fix conflict between CUDA and OpenCV (reproduced with 3.3.0
- # and 3.4.1) header file that have the same name. Problem is fixed in
- # the current development branch of OpenCV. See #8461 for more information.
- patch('dnn_cuda.patch', when='@3.3.0:3.4.1+cuda+dnn')
-
- patch('opencv3.2_cmake.patch', when='@3.2:3.4.1')
- patch('opencv3.2_compiler_cmake.patch', when='@3.2')
- patch('opencv3.2_vtk.patch', when='@3.2+vtk')
- patch('opencv3.2_regacyvtk.patch', when='@3.2+vtk')
- patch('opencv3.2_ffmpeg.patch', when='@3.2+videoio')
- patch('opencv3.2_python3.7.patch', when='@3.2+python3')
- patch('opencv3.2_fj.patch', when='@3.2 %fj')
+ conflicts("+android_mediandk", when="platform=darwin", msg="Android only")
+ conflicts("+android_mediandk", when="platform=linux", msg="Android only")
+ conflicts("+android_mediandk", when="platform=cray", msg="Android only")
+ conflicts("+android_native_camera", when="platform=darwin", msg="Android only")
+ conflicts("+android_native_camera", when="platform=linux", msg="Android only")
+ conflicts("+android_native_camera", when="platform=cray", msg="Android only")
+ conflicts("+avfoundation", when="platform=linux", msg="iOS/macOS only")
+ conflicts("+avfoundation", when="platform=cray", msg="iOS/macOS only")
+ conflicts("+cap_ios", when="platform=darwin", msg="iOS only")
+ conflicts("+cap_ios", when="platform=linux", msg="iOS only")
+ conflicts("+cap_ios", when="platform=cray", msg="iOS only")
+ conflicts("+carotene", when="target=x86:", msg="ARM/AARCH64 only")
+ conflicts("+carotene", when="target=x86_64:", msg="ARM/AARCH64 only")
+ conflicts("+cpufeatures", when="platform=darwin", msg="Android only")
+ conflicts("+cpufeatures", when="platform=linux", msg="Android only")
+ conflicts("+cpufeatures", when="platform=cray", msg="Android only")
+ conflicts("+cublas", when="~cuda")
+ conflicts("+cudnn", when="~cuda")
+ conflicts("+cufft", when="~cuda")
+ conflicts("+directx", when="platform=darwin", msg="Windows only")
+ conflicts("+directx", when="platform=linux", msg="Windows only")
+ conflicts("+directx", when="platform=cray", msg="Windows only")
+ conflicts("+dshow", when="platform=darwin", msg="Windows only")
+ conflicts("+dshow", when="platform=linux", msg="Windows only")
+ conflicts("+dshow", when="platform=cray", msg="Windows only")
+ conflicts("+gtk", when="platform=darwin", msg="Linux only")
+ conflicts("+ipp", when="target=aarch64:", msg="x86 or x86_64 only")
+ conflicts("+jasper", when="+openjpeg")
+ conflicts("+msmf", when="platform=darwin", msg="Windows only")
+ conflicts("+msmf", when="platform=linux", msg="Windows only")
+ conflicts("+msmf", when="platform=cray", msg="Windows only")
+ conflicts("+msmf_dxva", when="platform=darwin", msg="Windows only")
+ conflicts("+msmf_dxva", when="platform=linux", msg="Windows only")
+ conflicts("+msmf_dxva", when="platform=cray", msg="Windows only")
+ conflicts("+opencl_d3d11_nv", when="platform=darwin", msg="Windows only")
+ conflicts("+opencl_d3d11_nv", when="platform=linux", msg="Windows only")
+ conflicts("+opencl_d3d11_nv", when="platform=cray", msg="Windows only")
+ conflicts("+opengl", when="~qt")
+ conflicts("+tengine", when="platform=darwin", msg="Linux only")
+ conflicts("+tengine", when="target=x86:", msg="ARM/AARCH64 only")
+ conflicts("+tengine", when="target=x86_64:", msg="ARM/AARCH64 only")
+ conflicts("+v4l", when="platform=darwin", msg="Linux only")
+ conflicts("+win32ui", when="platform=darwin", msg="Windows only")
+ conflicts("+win32ui", when="platform=linux", msg="Windows only")
+ conflicts("+win32ui", when="platform=cray", msg="Windows only")
def cmake_args(self):
spec = self.spec
- args = []
+ args = [
+ self.define(
+ "OPENCV_EXTRA_MODULES_PATH",
+ join_path(self.stage.source_path, "opencv_contrib/modules"),
+ ),
+ self.define("BUILD_opencv_core", "on"),
+ ]
+
+ # OpenCV pre-built apps
+ apps_list = []
+ for app in self.apps:
+ if "+{0}".format(app) in spec:
+ apps_list.append(app)
+ if apps_list:
+ args.append(self.define("BUILD_opencv_apps", "on"))
+ args.append(self.define("OPENCV_INSTALL_APPS_LIST", ",".join(apps_list)))
+ else:
+ args.append(self.define("BUILD_opencv_apps", "off"))
# OpenCV modules
for mod in self.modules:
- args.append(self.define_from_variant('BUILD_opencv_' + mod, mod))
+ args.append(self.define_from_variant("BUILD_opencv_" + mod, mod))
+ if mod in self.component_and_module:
+ args.append(self.define_from_variant("WITH_" + mod.upper(), mod))
+
+ for mod in self.modules_pending:
+ args.append(self.define("BUILD_opencv_" + mod, "off"))
+ if mod in self.component_and_module:
+ args.append(self.define("WITH_" + mod.upper(), "off"))
+
+ # OpenCV contrib modules
+ for mod in self.contrib_modules:
+ args.append(self.define_from_variant("BUILD_opencv_" + mod, mod))
+ if mod in self.component_and_module:
+ args.append(self.define_from_variant("WITH_" + mod.upper(), mod))
+
+ for mod in self.contrib_modules_pending:
+ args.append(self.define("BUILD_opencv_" + mod, "off"))
+ if mod in self.component_and_module:
+ args.append(self.define("WITH_" + mod.upper(), "off"))
# Optional 3rd party components
for component in self.components:
- args.append(self.define_from_variant(
- 'WITH_' + component.upper(), component))
+ args.append(
+ self.define_from_variant("WITH_" + component.upper(), component)
+ )
+ for component in self.components_pending:
+ args.append(self.define("WITH_" + component.upper(), "off"))
# Other
- args.extend([
- self.define('ENABLE_CONFIG_VERIFICATION', True),
- self.define_from_variant('BUILD_SHARED_LIBS', 'shared'),
- self.define('ENABLE_PRECOMPILED_HEADERS', False),
- self.define_from_variant('WITH_LAPACK', 'lapack'),
- self.define_from_variant('ENABLE_POWERPC', 'powerpc'),
- self.define_from_variant('ENABLE_FAST_MATH', 'fast-math'),
- self.define_from_variant('OPENCV_ENABLE_NONFREE', 'nonfree'),
- ])
-
- if '+contrib' in spec:
- args.append(self.define('OPENCV_EXTRA_MODULES_PATH', join_path(
- self.stage.source_path, 'opencv_contrib/modules')))
-
- if '+cuda' in spec:
- if spec.variants['cuda_arch'].value[0] != 'none':
- cuda_arch = spec.variants['cuda_arch'].value
- args.append(self.define('CUDA_ARCH_BIN', ' '.join(cuda_arch)))
+ args.extend(
+ [
+ self.define("ENABLE_CONFIG_VERIFICATION", True),
+ self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
+ self.define("ENABLE_PRECOMPILED_HEADERS", False),
+ self.define_from_variant("WITH_LAPACK", "lapack"),
+ self.define_from_variant("ENABLE_POWERPC", "powerpc"),
+ self.define_from_variant("ENABLE_FAST_MATH", "fast-math"),
+ self.define_from_variant("OPENCV_ENABLE_NONFREE", "nonfree"),
+ ]
+ )
+
+ if "+cuda" in spec:
+ if spec.variants["cuda_arch"].value[0] != "none":
+ cuda_arch = spec.variants["cuda_arch"].value
+ args.append(self.define("CUDA_ARCH_BIN", " ".join(cuda_arch)))
# TODO: this CMake flag is deprecated
- if spec.target.family == 'ppc64le':
- args.append(self.define('ENABLE_VSX', True))
+ if spec.target.family == "ppc64le":
+ args.append(self.define("ENABLE_VSX", True))
# Media I/O
- zlib = spec['zlib']
- args.extend([
- self.define('BUILD_ZLIB', False),
- self.define('ZLIB_LIBRARY', zlib.libs[0]),
- self.define('ZLIB_INCLUDE_DIR', zlib.headers.directories[0]),
- ])
-
- if '+png' in spec:
- libpng = spec['libpng']
- args.extend([
- self.define('BUILD_PNG', False),
- self.define('PNG_LIBRARY', libpng.libs[0]),
- self.define('PNG_INCLUDE_DIR', libpng.headers.directories[0])
- ])
-
- if '+jpeg' in spec:
- libjpeg = spec['jpeg']
- args.extend([
- self.define('BUILD_JPEG', False),
- self.define('JPEG_LIBRARY', libjpeg.libs[0]),
- self.define('JPEG_INCLUDE_DIR', libjpeg.headers.directories[0])
- ])
-
- if '+tiff' in spec:
- libtiff = spec['libtiff']
- args.extend([
- self.define('BUILD_TIFF', False),
- self.define('TIFF_LIBRARY', libtiff.libs[0]),
- self.define('TIFF_INCLUDE_DIR', libtiff.headers.directories[0])
- ])
-
- if '+jasper' in spec:
- jasper = spec['jasper']
- args.extend([
- self.define('BUILD_JASPER', False),
- self.define('JASPER_LIBRARY', jasper.libs[0]),
- self.define('JASPER_INCLUDE_DIR', jasper.headers.directories[0])
- ])
+ zlib = spec["zlib"]
+ args.extend(
+ [
+ self.define("BUILD_ZLIB", False),
+ self.define("ZLIB_LIBRARY", zlib.libs[0]),
+ self.define("ZLIB_INCLUDE_DIR", zlib.headers.directories[0]),
+ ]
+ )
+
+ if "+png" in spec:
+ libpng = spec["libpng"]
+ args.extend(
+ [
+ self.define("BUILD_PNG", False),
+ self.define("PNG_LIBRARY", libpng.libs[0]),
+ self.define("PNG_INCLUDE_DIR", libpng.headers.directories[0]),
+ ]
+ )
+
+ if "+jpeg" in spec:
+ libjpeg = spec["jpeg"]
+ args.extend(
+ [
+ self.define("BUILD_JPEG", False),
+ self.define("JPEG_LIBRARY", libjpeg.libs[0]),
+ self.define("JPEG_INCLUDE_DIR", libjpeg.headers.directories[0]),
+ ]
+ )
+
+ if "+tiff" in spec:
+ libtiff = spec["libtiff"]
+ args.extend(
+ [
+ self.define("BUILD_TIFF", False),
+ self.define("TIFF_LIBRARY", libtiff.libs[0]),
+ self.define("TIFF_INCLUDE_DIR", libtiff.headers.directories[0]),
+ ]
+ )
+
+ if "+jasper" in spec:
+ jasper = spec["jasper"]
+ args.extend(
+ [
+ self.define("BUILD_JASPER", False),
+ self.define("JASPER_LIBRARY", jasper.libs[0]),
+ self.define("JASPER_INCLUDE_DIR", jasper.headers.directories[0]),
+ ]
+ )
+
+ if "+clp" in spec:
+ clp = spec["clp"]
+ args.extend(
+ [
+ self.define("BUILD_CLP", False),
+ self.define("CLP_LIBRARIES", clp.prefix.lib),
+ self.define("CLP_INCLUDE_DIR", clp.headers.directories[0]),
+ ]
+ )
+
+ if "+onnx" in spec:
+ onnx = spec["onnx"]
+ args.extend(
+ [
+ self.define("BUILD_ONNX", False),
+ self.define("ORT_LIB", onnx.libs[0]),
+ self.define("ORT_INCLUDE", onnx.headers.directories[0]),
+ ]
+ )
+
+ if "+tesseract" in spec:
+ tesseract = spec["tesseract"]
+ leptonica = spec["leptonica"]
+ args.extend(
+ [
+ self.define("Lept_LIBRARY", leptonica.libs[0]),
+ self.define("Tesseract_LIBRARY", tesseract.libs[0]),
+ self.define(
+ "Tesseract_INCLUDE_DIR", tesseract.headers.directories[0]
+ ),
+ ]
+ )
# Python
- python_exe = spec['python'].command.path
- python_lib = spec['python'].libs[0]
- python_include_dir = spec['python'].headers.directories[0]
-
- if '+python2' in spec:
- args.extend([
- self.define('PYTHON2_EXECUTABLE', python_exe),
- self.define('PYTHON2_LIBRARY', python_lib),
- self.define('PYTHON2_INCLUDE_DIR', python_include_dir),
- self.define('PYTHON3_EXECUTABLE', '')
- ])
- elif '+python3' in spec:
- args.extend([
- self.define('PYTHON3_EXECUTABLE', python_exe),
- self.define('PYTHON3_LIBRARY', python_lib),
- self.define('PYTHON3_INCLUDE_DIR', python_include_dir),
- self.define('PYTHON2_EXECUTABLE', '')
- ])
+ python_exe = spec["python"].command.path
+ python_lib = spec["python"].libs[0]
+ python_include_dir = spec["python"].headers.directories[0]
+
+ if "+python2" in spec:
+ args.extend(
+ [
+ self.define("PYTHON2_EXECUTABLE", python_exe),
+ self.define("PYTHON2_LIBRARY", python_lib),
+ self.define("PYTHON2_INCLUDE_DIR", python_include_dir),
+ self.define("PYTHON3_EXECUTABLE", ""),
+ ]
+ )
+ elif "+python3" in spec:
+ args.extend(
+ [
+ self.define("PYTHON3_EXECUTABLE", python_exe),
+ self.define("PYTHON3_LIBRARY", python_lib),
+ self.define("PYTHON3_INCLUDE_DIR", python_include_dir),
+ self.define("PYTHON2_EXECUTABLE", ""),
+ ]
+ )
else:
- args.extend([
- self.define('PYTHON2_EXECUTABLE', ''),
- self.define('PYTHON3_EXECUTABLE', ''),
- ])
+ args.extend(
+ [
+ self.define("PYTHON2_EXECUTABLE", ""),
+ self.define("PYTHON3_EXECUTABLE", ""),
+ ]
+ )
return args
@property
def libs(self):
- shared = '+shared' in self.spec
+ shared = "+shared" in self.spec
return find_libraries(
- 'libopencv_*', root=self.prefix, shared=shared, recursive=True
+ "libopencv_*", root=self.prefix, shared=shared, recursive=True
)
diff --git a/var/spack/repos/builtin/packages/openvslam/package.py b/var/spack/repos/builtin/packages/openvslam/package.py
deleted file mode 100644
index e9cc01c771..0000000000
--- a/var/spack/repos/builtin/packages/openvslam/package.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-
-class Openvslam(CMakePackage):
- """OpenVSLAM is a monocular, stereo, and RGBD visual SLAM system."""
-
- homepage = "https://openvslam.readthedocs.io/"
- git = "https://github.com/xdspacelab/openvslam.git"
-
- version('master', branch='master')
-
- # https://openvslam.readthedocs.io/en/master/installation.html
- depends_on('cmake@3.1:', type='build')
- depends_on('eigen@3.3.0:')
- depends_on('g2o')
- depends_on('dbow2@shinsumicco')
- depends_on('yaml-cpp@0.6.0:')
- depends_on('opencv@3.3.1:+core+imgcodecs+videoio+features2d+calib3d+highgui')
- depends_on('pangolin')
-
- patch('https://github.com/xdspacelab/openvslam/commit/eeb58880443700fd79688d9646fd633c42fa60eb.patch',
- sha256='131159b0042300614d039ceb3538defe4d302b59dc748b02287fc8ff895e6bbd')
-
- @run_after('install')
- def post_install(self):
- # https://github.com/xdspacelab/openvslam/issues/501
- mkdir(self.prefix.bin)
- with working_dir(self.build_directory):
- install('run_*', self.prefix.bin)
- install(join_path('lib*', 'libpangolin_viewer.*'), self.prefix.lib)