diff options
author | Robin Gloster <mail@glob.in> | 2016-06-10 09:27:04 +0000 |
---|---|---|
committer | Robin Gloster <mail@glob.in> | 2016-06-10 09:27:04 +0000 |
commit | 8031cba2ab3146977141fc504bea2a1e03b5c126 (patch) | |
tree | 0cd68c0007851dfed7d7f8247754b5c4b356704e /pkgs/development/libraries/opencv | |
parent | 2a5e64b69c83592caf900cb0b7213235e96368de (diff) | |
parent | 656c48f141be5886c515a1a874a47472cbbac6bd (diff) | |
download | nixpkgs-8031cba2ab3146977141fc504bea2a1e03b5c126.tar nixpkgs-8031cba2ab3146977141fc504bea2a1e03b5c126.tar.gz nixpkgs-8031cba2ab3146977141fc504bea2a1e03b5c126.tar.bz2 nixpkgs-8031cba2ab3146977141fc504bea2a1e03b5c126.tar.lz nixpkgs-8031cba2ab3146977141fc504bea2a1e03b5c126.tar.xz nixpkgs-8031cba2ab3146977141fc504bea2a1e03b5c126.tar.zst nixpkgs-8031cba2ab3146977141fc504bea2a1e03b5c126.zip |
Merge remote-tracking branch 'upstream/master' into hardened-stdenv
Diffstat (limited to 'pkgs/development/libraries/opencv')
-rw-r--r-- | pkgs/development/libraries/opencv/3.x.nix | 91 | ||||
-rw-r--r-- | pkgs/development/libraries/opencv/default.nix | 62 |
2 files changed, 120 insertions, 33 deletions
diff --git a/pkgs/development/libraries/opencv/3.x.nix b/pkgs/development/libraries/opencv/3.x.nix index 4f0ed3cd0ea..9ca59c9c73a 100644 --- a/pkgs/development/libraries/opencv/3.x.nix +++ b/pkgs/development/libraries/opencv/3.x.nix @@ -1,56 +1,103 @@ -{ lib, stdenv, fetchurl, fetchzip, cmake, gtk, libjpeg, libpng, libtiff, jasper, ffmpeg -, fetchpatch, pkgconfig, gstreamer, xineLib, glib, python27, python27Packages, unzip +{ lib, stdenv, fetchurl, fetchFromGitHub, cmake, pkgconfig, unzip +, zlib , enableIpp ? false , enableContrib ? false -, enableBloat ? false }: +, enablePython ? false, pythonPackages +, enableGtk2 ? false, gtk2 +, enableGtk3 ? false, gtk3 +, enableJPEG ? true, libjpeg +, enablePNG ? true, libpng +, enableTIFF ? true, libtiff +, enableWebP ? true, libwebp +, enableEXR ? true, openexr, ilmbase +, enableJPEG2K ? true, jasper +, enableFfmpeg ? false, ffmpeg +, enableGStreamer ? false, gst_all_1 +, enableEigen ? false, eigen +}: let - v = "3.0.0"; + version = "3.1.0"; - contribSrc = fetchzip { - url = "https://github.com/Itseez/opencv_contrib/archive/3.0.0.tar.gz"; - sha256 = "1gx7f9v85hmzh37s0zaillg7bs6cy9prm3wl0jb5zc5zrf9d8bm8"; - name = "opencv-contrib-3.0.0-src"; + contribSrc = fetchFromGitHub { + owner = "Itseez"; + repo = "opencv_contrib"; + rev = version; + sha256 = "153yx62f34gl3zd6vgxv0fj3wccwmq78lnawlda1f6xhrclg9bax"; }; + opencvFlag = name: enabled: "-DWITH_${name}=${if enabled then "ON" else "OFF"}"; + in stdenv.mkDerivation rec { - name = "opencv-${v}"; + name = "opencv-${version}"; + inherit version; - src = fetchurl { - url = "https://github.com/Itseez/opencv/archive/${v}.zip"; - sha256 = "00dh7wvgkflz22liqd10fma8m3395lb3l3rgawnn5wlnz6i4w287"; + src = fetchFromGitHub { + owner = "Itseez"; + repo = "opencv"; + rev = version; + sha256 = "1l0w12czavgs0wzw1c594g358ilvfg2fn32cn8z7pv84zxj4g429"; }; postPatch = - let ippicv = fetchurl { - url = "http://sourceforge.net/projects/opencvlibrary/files/3rdparty/ippicv/${ippicvName}"; + let ippicvVersion = "20151201"; + ippicvPlatform = if stdenv.system == "x86_64-linux" || stdenv.system == "i686-linux" then "linux" + else throw "ICV is not available for this platform (or not yet supported by this package)"; + ippicvHash = if ippicvPlatform == "linux" then "808b791a6eac9ed78d32a7666804320e" + else throw "ippicvHash: impossible"; + + ippicvName = "ippicv_${ippicvPlatform}_${ippicvVersion}.tgz"; + ippicvArchive = "3rdparty/ippicv/downloads/linux-${ippicvHash}/${ippicvName}"; + ippicv = fetchurl { + url = "https://github.com/Itseez/opencv_3rdparty/raw/ippicv/master_${ippicvVersion}/ippicv/${ippicvName}"; md5 = ippicvHash; }; - ippicvName = "ippicv_linux_20141027.tgz"; - ippicvHash = "8b449a536a2157bcad08a2b9f266828b"; - ippicvArchive = "3rdparty/ippicv/downloads/linux-${ippicvHash}/${ippicvName}"; - in stdenv.lib.optionalString enableIpp + in lib.optionalString enableIpp '' mkdir -p $(dirname ${ippicvArchive}) ln -s ${ippicv} ${ippicvArchive} ''; buildInputs = - [ unzip libjpeg libpng libtiff ] - ++ lib.optionals enableBloat [ gtk glib jasper ffmpeg xineLib gstreamer python27 python27Packages.numpy ]; + [ zlib ] + ++ lib.optional enablePython pythonPackages.python + ++ lib.optional enableGtk2 gtk2 + ++ lib.optional enableGtk3 gtk3 + ++ lib.optional enableJPEG libjpeg + ++ lib.optional enablePNG libpng + ++ lib.optional enableTIFF libtiff + ++ lib.optional enableWebP libwebp + ++ lib.optionals enableEXR [ openexr ilmbase ] + ++ lib.optional enableJPEG2K jasper + ++ lib.optional enableFfmpeg ffmpeg + ++ lib.optionals enableGStreamer (with gst_all_1; [ gstreamer gst-plugins-base ]) + ++ lib.optional enableEigen eigen + ; - nativeBuildInputs = [ cmake pkgconfig ]; + propagatedBuildInputs = lib.optional enablePython pythonPackages.numpy; + + nativeBuildInputs = [ cmake pkgconfig unzip ]; + + NIX_CFLAGS_COMPILE = lib.optional enableEXR "-I${ilmbase}/include/OpenEXR"; cmakeFlags = [ "-DWITH_IPP=${if enableIpp then "ON" else "OFF"}" - ] ++ stdenv.lib.optionals enableContrib [ "-DOPENCV_EXTRA_MODULES_PATH=${contribSrc}/modules" ]; + (opencvFlag "TIFF" enableTIFF) + (opencvFlag "JASPER" enableJPEG2K) + (opencvFlag "WEBP" enableWebP) + (opencvFlag "JPEG" enableJPEG) + (opencvFlag "PNG" enablePNG) + (opencvFlag "OPENEXR" enableEXR) + ] ++ lib.optionals enableContrib [ "-DOPENCV_EXTRA_MODULES_PATH=${contribSrc}/modules" ]; enableParallelBuilding = true; hardeningDisable = [ "bindnow" "relro" ]; + passthru = lib.optionalAttrs enablePython { pythonPath = []; }; + meta = { description = "Open Computer Vision Library with more than 500 algorithms"; homepage = http://opencv.org/; diff --git a/pkgs/development/libraries/opencv/default.nix b/pkgs/development/libraries/opencv/default.nix index 4259e9d4d69..f792e17890c 100644 --- a/pkgs/development/libraries/opencv/default.nix +++ b/pkgs/development/libraries/opencv/default.nix @@ -1,27 +1,67 @@ -{ lib, stdenv, fetchurl, cmake, gtk, libjpeg, libpng, libtiff, jasper, ffmpeg -, fetchpatch, pkgconfig, gstreamer, xineLib, glib, python27, python27Packages, unzip -, enableBloat ? false }: +{ lib, stdenv, fetchFromGitHub, cmake, pkgconfig, unzip +, zlib +, enablePython ? false, pythonPackages +, enableGtk2 ? false, gtk2 +, enableJPEG ? true, libjpeg +, enablePNG ? true, libpng +, enableTIFF ? true, libtiff +, enableEXR ? true, openexr, ilmbase +, enableJPEG2K ? true, jasper +, enableFfmpeg ? false, ffmpeg +, enableGStreamer ? false, gst_all +, enableEigen ? false, eigen +}: -let v = "2.4.11"; in +let + opencvFlag = name: enabled: "-DWITH_${name}=${if enabled then "ON" else "OFF"}"; + +in stdenv.mkDerivation rec { - name = "opencv-${v}"; + name = "opencv-${version}"; + version = "2.4.13"; - src = fetchurl { - url = "mirror://sourceforge/opencvlibrary/opencv-${v}.zip"; - sha256 = "1shz5g7ahvbb41gprxzvavllf235qhx0fpkjd7iwa3gv83ym46dg"; + src = fetchFromGitHub { + owner = "Itseez"; + repo = "opencv"; + rev = version; + sha256 = "1k29rxlvrhgc5hadg2nc50wa3d2ls9ndp373257p756a0aividxh"; }; buildInputs = - [ unzip libjpeg libpng libtiff ] - ++ lib.optionals enableBloat [ gtk glib jasper ffmpeg xineLib gstreamer python27 python27Packages.numpy ]; + [ zlib ] + ++ lib.optional enablePython pythonPackages.python + ++ lib.optional enableGtk2 gtk2 + ++ lib.optional enableJPEG libjpeg + ++ lib.optional enablePNG libpng + ++ lib.optional enableTIFF libtiff + ++ lib.optionals enableEXR [ openexr ilmbase ] + ++ lib.optional enableJPEG2K jasper + ++ lib.optional enableFfmpeg ffmpeg + ++ lib.optionals enableGStreamer (with gst_all; [ gstreamer gst-plugins-base ]) + ++ lib.optional enableEigen eigen + ; + + propagatedBuildInputs = lib.optional enablePython pythonPackages.numpy; + + nativeBuildInputs = [ cmake pkgconfig unzip ]; - nativeBuildInputs = [ cmake pkgconfig ]; + NIX_CFLAGS_COMPILE = lib.optional enableEXR "-I${ilmbase}/include/OpenEXR"; + + cmakeFlags = [ + (opencvFlag "TIFF" enableTIFF) + (opencvFlag "JASPER" enableJPEG2K) + (opencvFlag "JPEG" enableJPEG) + (opencvFlag "PNG" enablePNG) + (opencvFlag "OPENEXR" enableEXR) + ]; enableParallelBuilding = true; hardeningDisable = [ "bindnow" "relro" ]; + passthru = lib.optionalAttrs enablePython { pythonPath = []; }; + meta = { description = "Open Computer Vision Library with more than 500 algorithms"; homepage = http://opencv.org/; |