opencv2: don't build unfree libraries by default

In opencv 2.x, unfree libraries are built by default.  The package
should therefore have been marked as unfree, but wasn't.

I've disabled the non-free libraries by default, and added an option
to enable them.  There are three programs in Nixpkgs that depend on
opencv2: mathematica, pfstools, and p2pvc.  pfstools requires the
non-free libraries if it's built with opencv support, so I've disabled
opencv by default there and added an option to enable it.  p2pvc links
fine, so presumably doesn't need the non-free libraries.  I can't test
mathematica, so I'm just going to leave it alone.
This commit is contained in:
Alyssa Ross 2021-09-27 13:57:14 +00:00
parent 0d19d263fe
commit d69583c6c2
4 changed files with 19 additions and 5 deletions

View file

@ -1059,6 +1059,16 @@ Superuser created successfully.
changelog</link>. changelog</link>.
</para> </para>
</listitem> </listitem>
<listitem>
<para>
<literal>opencv2</literal> no longer includes the non-free
libraries by default, and consequently
<literal>pfstools</literal> no longer includes OpenCV support
by default. Both packages now support an
<literal>enableUnfree</literal> option to re-enable this
functionality.
</para>
</listitem>
</itemizedlist> </itemizedlist>
</section> </section>
<section xml:id="sec-release-21.11-notable-changes"> <section xml:id="sec-release-21.11-notable-changes">

View file

@ -331,6 +331,8 @@ In addition to numerous new and upgraded packages, this release has the followin
respectively. As a result `services.datadog-agent` has had breaking changes to the respectively. As a result `services.datadog-agent` has had breaking changes to the
configuration file. For details, see the [upstream changelog](https://github.com/DataDog/datadog-agent/blob/main/CHANGELOG.rst). configuration file. For details, see the [upstream changelog](https://github.com/DataDog/datadog-agent/blob/main/CHANGELOG.rst).
- `opencv2` no longer includes the non-free libraries by default, and consequently `pfstools` no longer includes OpenCV support by default. Both packages now support an `enableUnfree` option to re-enable this functionality.
## Other Notable Changes {#sec-release-21.11-notable-changes} ## Other Notable Changes {#sec-release-21.11-notable-changes}

View file

@ -9,6 +9,7 @@
, enableFfmpeg ? false, ffmpeg , enableFfmpeg ? false, ffmpeg
, enableGStreamer ? false, gst_all_1 , enableGStreamer ? false, gst_all_1
, enableEigen ? true, eigen , enableEigen ? true, eigen
, enableUnfree ? false
, Cocoa, QTKit , Cocoa, QTKit
}: }:
@ -67,7 +68,7 @@ stdenv.mkDerivation rec {
(opencvFlag "PNG" enablePNG) (opencvFlag "PNG" enablePNG)
(opencvFlag "OPENEXR" enableEXR) (opencvFlag "OPENEXR" enableEXR)
(opencvFlag "GSTREAMER" enableGStreamer) (opencvFlag "GSTREAMER" enableGStreamer)
]; ] ++ lib.optional (!enableUnfree) "-DBUILD_opencv_nonfree=OFF";
hardeningDisable = [ "bindnow" "relro" ]; hardeningDisable = [ "bindnow" "relro" ];
@ -82,7 +83,7 @@ stdenv.mkDerivation rec {
meta = with lib; { meta = with lib; {
description = "Open Computer Vision Library with more than 500 algorithms"; description = "Open Computer Vision Library with more than 500 algorithms";
homepage = "https://opencv.org/"; homepage = "https://opencv.org/";
license = licenses.bsd3; license = if enableUnfree then licenses.unfree else licenses.bsd3;
maintainers = with maintainers; [ ]; maintainers = with maintainers; [ ];
platforms = platforms.linux; platforms = platforms.linux;
}; };

View file

@ -1,6 +1,7 @@
{ lib, stdenv, mkDerivation, fetchurl, cmake, pkg-config, darwin { lib, stdenv, mkDerivation, fetchurl, cmake, pkg-config, darwin
, openexr, zlib, imagemagick6, libGLU, libGL, freeglut, fftwFloat , openexr, zlib, imagemagick6, libGLU, libGL, freeglut, fftwFloat
, fftw, gsl, libexif, perl, opencv2, qtbase, netpbm , fftw, gsl, libexif, perl, qtbase, netpbm
, enableUnfree ? false, opencv2
}: }:
mkDerivation rec { mkDerivation rec {
@ -28,12 +29,12 @@ mkDerivation rec {
nativeBuildInputs = [ cmake pkg-config ]; nativeBuildInputs = [ cmake pkg-config ];
buildInputs = [ buildInputs = [
openexr zlib imagemagick6 fftwFloat openexr zlib imagemagick6 fftwFloat
fftw gsl libexif perl opencv2 qtbase netpbm fftw gsl libexif perl qtbase netpbm
] ++ (if stdenv.isDarwin then (with darwin.apple_sdk.frameworks; [ ] ++ (if stdenv.isDarwin then (with darwin.apple_sdk.frameworks; [
OpenGL GLUT OpenGL GLUT
]) else [ ]) else [
libGLU libGL freeglut libGLU libGL freeglut
]); ]) ++ lib.optional enableUnfree (opencv2.override { enableUnfree = true; });
patches = [ ./threads.patch ./pfstools.patch ./pfsalign.patch ]; patches = [ ./threads.patch ./pfstools.patch ./pfsalign.patch ];