···
···
34
-
, enableOpenblas ? true
, enableCuda ? (config.cudaSupport or false) && stdenv.hostPlatform.isx86_64
···
···
sha256 = "sha256-meya0J3RdOIeMM46e/6IOVwrKn3t/c0rhwP2WQaybkE=";
98
+
testDataSrc = fetchFromGitHub {
100
+
repo = "opencv_extra";
102
+
sha256 = "sha256-6hAdJdaUgtRGQanQKuY/q6fcXWXFZ3K/oLbGxvksry0=";
# Contrib must be built in order to enable Tesseract support:
buildContrib = enableContrib || enableTesseract || enableOvis;
···
url = "https://github.com/opencv/ade/archive/${name}";
174
-
sha256 = "04n9na2bph706bdxnnqfcbga4cyj8kd9s9ni7qyvnpj5v98jwvlm";
183
+
sha256 = "sha256-TjLRbFbC7MDY9PxIy560ryviBI58cbQwqgc7A7uOHkg=";
176
-
name = "v0.1.1f.zip";
177
-
md5 = "b624b995ec9c439cbc2e9e6ee940d3a2";
185
+
name = "v0.1.2a.zip";
186
+
md5 = "fa4b3e25167319cb0fa9432ef8281945";
···
opencvFlag = name: enabled: "-DWITH_${name}=${printEnabled enabled}";
220
+
runAccuracyTests = true;
221
+
runPerformanceTests = false;
printEnabled = enabled: if enabled then "ON" else "OFF";
223
+
withOpenblas = (enableBlas && blas.provider.pname == "openblas");
224
+
#multithreaded openblas conflicts with opencv multithreading, which manifest itself in hung tests
225
+
#https://github.com/xianyi/OpenBLAS/wiki/Faq/4bded95e8dc8aadc70ce65267d1093ca7bdefc4c#multi-threaded
226
+
openblas_ = blas.provider.override { singleThreaded = true; };
postUnpack = lib.optionalString buildContrib ''
cp --no-preserve=mode -r "${contribSrc}/modules" "$NIX_BUILD_TOP/source/opencv_contrib"
···
++ lib.optional enableFfmpeg ffmpeg
++ lib.optionals (enableFfmpeg && stdenv.isDarwin)
[ VideoDecodeAcceleration bzip2 ]
266
-
++ lib.optionals enableGStreamer (with gst_all_1; [ gstreamer gst-plugins-base ])
286
+
++ lib.optionals enableGStreamer (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good ])
++ lib.optional enableOvis ogre
++ lib.optional enableGPhoto2 libgphoto2
++ lib.optional enableDC1394 libdc1394
++ lib.optional enableEigen eigen
271
-
++ lib.optional enableOpenblas openblas
291
+
++ lib.optional enableBlas blas.provider
# There is seemingly no compile-time flag for Tesseract. It's
# simply enabled automatically if contrib is built, and it detects
···
NIX_CFLAGS_COMPILE = lib.optionalString enableEXR "-I${ilmbase.dev}/include/OpenEXR";
# Configure can't find the library without this.
293
-
OpenBLAS_HOME = lib.optionalString enableOpenblas openblas;
313
+
OpenBLAS_HOME = lib.optionalString withOpenblas openblas_.dev;
314
+
OpenBLAS = lib.optionalString withOpenblas openblas_;
"-DOPENCV_GENERATE_PKGCONFIG=ON"
···
"-DProtobuf_PROTOC_EXECUTABLE=${lib.getExe buildPackages.protobuf}"
"-DPROTOBUF_UPDATE_FILES=ON"
"-DOPENCV_ENABLE_NONFREE=${printEnabled enableUnfree}"
302
-
"-DBUILD_TESTS=OFF"
303
-
"-DBUILD_PERF_TESTS=OFF"
323
+
"-DBUILD_TESTS=${printEnabled runAccuracyTests}"
324
+
"-DBUILD_PERF_TESTS=${printEnabled runPerformanceTests}"
325
+
"-DCMAKE_SKIP_BUILD_RPATH=ON"
"-DBUILD_DOCS=${printEnabled enableDocs}"
# "OpenCV disables pkg-config to avoid using of host libraries. Consider using PKG_CONFIG_LIBDIR to specify target SYSROOT"
# but we have proper separation of build and host libs :), fixes cross
···
360
+
lib.optionalString (runAccuracyTests || runPerformanceTests) ''
361
+
mkdir $package_tests
362
+
cp -R $src/samples $package_tests/
364
+
+ lib.optionalString runAccuracyTests "mv ./bin/*test* $package_tests/ \n"
365
+
+ lib.optionalString runPerformanceTests "mv ./bin/*perf* $package_tests/";
# By default $out/lib/pkgconfig/opencv4.pc looks something like this:
# prefix=/nix/store/g0wnfyjjh4rikkvp22cpkh41naa43i4i-opencv-4.0.0
···
inherit (gst_all_1) gst-plugins-bad;
373
-
} // lib.optionalAttrs (!enablePython) { pythonEnabled = pythonPackages.opencv4; };
403
+
// lib.optionalAttrs (!stdenv.isDarwin) { inherit qimgv; }
404
+
// lib.optionalAttrs (!enablePython) { pythonEnabled = pythonPackages.opencv4; }
405
+
// lib.optionalAttrs (stdenv.buildPlatform != "x86_64-darwin") {
406
+
opencv4-tests = callPackage ./tests.nix {
407
+
inherit enableGStreamer enableGtk2 enableGtk3 runAccuracyTests runPerformanceTests testDataSrc;
} // lib.optionalAttrs enablePython { pythonPath = [ ]; };
description = "Open Computer Vision Library with more than 500 algorithms";
homepage = "https://opencv.org/";
license = with licenses; if enableUnfree then unfree else bsd3;
380
-
maintainers = with maintainers; [ mdaiter basvandijk ];
417
+
maintainers = with maintainers; [ basvandijk ];
platforms = with platforms; linux ++ darwin;