Patchwork [RFC,v4] libav: set LICENSE according to PACKAGECONFIG options

login
register
mail settings
Submitter Matthieu CRAPET
Date July 17, 2014, 2:44 p.m.
Message ID <1405608287-10401-1-git-send-email-Matthieu.Crapet@ingenico.com>
Download mbox | patch
Permalink /patch/75949/
State New
Headers show

Comments

Matthieu CRAPET - July 17, 2014, 2:44 p.m.
Experienced users can change license with 'gpl' and 'lic3' PACKAGECONFIG switches.

fix: drop unwanted --enable-libtheora & --enable-libvorbis in EXTRA_OECONF

Reported-by: Andreas Oberritter <obi@opendreambox.org>
Signed-off-by: Matthieu Crapet <Matthieu.Crapet@ingenico.com>
---
 meta/recipes-multimedia/libav/libav.inc | 35 +++++++++++++++++++++++++--------
 1 file changed, 27 insertions(+), 8 deletions(-)
Matthieu CRAPET - July 17, 2014, 2:50 p.m.
Hi,

One more note. I've tested with 0.8.11 & 9.13 on OE-Core current git (master).
The only weak point is the use of python anonymous function which is called twice each time, is there a better solution ?

Regards,
Matt

Patch

diff --git a/meta/recipes-multimedia/libav/libav.inc b/meta/recipes-multimedia/libav/libav.inc
index 1d617a2..de9770b 100644
--- a/meta/recipes-multimedia/libav/libav.inc
+++ b/meta/recipes-multimedia/libav/libav.inc
@@ -7,7 +7,7 @@  DESCRIPTION = "Libav is a friendly and community-driven effort to provide its us
 HOMEPAGE = "http://libav.org/"
 SECTION = "libs"
 
-LICENSE = "GPLv2+"
+LICENSE = "LGPLv2.1+"
 LICENSE_FLAGS = "commercial"
 
 # Provides ffmpeg compat, see http://libav.org/about.html
@@ -29,7 +29,7 @@  BUILD_OPTIMIZATION = "${FULL_OPTIMIZATION}"
 EXTRA_FFCONF_armv7a = "--cpu=cortex-a8"
 EXTRA_FFCONF ?= ""
 
-PACKAGECONFIG ??= "bzip2 x264 theora ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+PACKAGECONFIG ??= "bzip2 gpl x264 theora ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
 PACKAGECONFIG[bzip2] = "--enable-bzlib,--disable-bzlib,bzip2"
 PACKAGECONFIG[faac] = "--enable-libfaac,--disable-libfaac,faac"
 PACKAGECONFIG[gsm] = "--enable-libgsm,--disable-libgsm,libgsm"
@@ -44,14 +44,35 @@  PACKAGECONFIG[vpx] = "--enable-libvpx,--disable-libvpx,libvpx"
 PACKAGECONFIG[x11] = "--enable-x11grab,--disable-x11grab,virtual/libx11 libxfixes libxext xproto virtual/libsdl"
 PACKAGECONFIG[x264] = "--enable-libx264,--disable-libx264,x264"
 
-# Check codecs that require --enable-nonfree
-USE_NONFREE = "${@bb.utils.contains_any('PACKAGECONFIG', [ 'faac', 'openssl' ], 'yes', '', d)}"
+# Licenses flags: allow to switch licence LGPL/GPL and v2/v3
+PACKAGECONFIG[gpl] = "--enable-gpl,--disable-gpl"
+PACKAGECONFIG[lic3] = "--enable-version3,--disable-version3"
+
+# Check codecs and license coherency
+python () {
+	pkgconfig = (d.getVar('PACKAGECONFIG', True) or "").split()
+	nonfree = [ 'faac', 'openssl' ]
+	gpl = [ 'x11', 'x264' ]
+	
+	if 'gpl' in pkgconfig:
+		if 'lic3' in pkgconfig:
+			d.setVar('LICENSE', 'GPLv3+')
+		else:
+			d.setVar('LICENSE', 'GPLv2+')
+	elif set(pkgconfig) & set(gpl):
+		raise bb.parse.SkipPackage("incompatible license, please add 'gpl' in PACKAGECONFIG")
+	elif 'lic3' in pkgconfig:
+		d.setVar('LICENSE', 'LGPLv3+')
+	
+	if set(pkgconfig) & set(nonfree):
+		d.setVar('LICENSE', 'Proprietary')
+		bb.note("Change LICENSE to 'Proprietary'")
+}
 
 EXTRA_OECONF = " \
     --enable-shared \
     --enable-pthreads \
-    --enable-gpl \
-    ${@bb.utils.contains('USE_NONFREE', 'yes', '--enable-nonfree', '', d)} \
+    ${@bb.utils.contains('LICENSE', 'Proprietary', '--enable-nonfree', '', d)} \
     --enable-avfilter \
     \
     --cross-prefix=${TARGET_PREFIX} \
@@ -60,8 +81,6 @@  EXTRA_OECONF = " \
     --enable-avserver \
     --enable-avplay \
     --ld="${CCLD}" \
-    --enable-libtheora  \
-    --enable-libvorbis \
     --arch=${TARGET_ARCH} \
     --target-os="linux" \
     --enable-cross-compile \