Re: [PATCH] gstreamer1.0: update licences of all modules


Jose Quaresma
 

Hi Peter,

It's not as simple as I was thinking, I'll need more time.

Jose

Peter Kjellerstedt <peter.kjellerstedt@...> escreveu no dia quinta, 17/02/2022 à(s) 14:34:

> -----Original Message-----
> From: Jose Quaresma <quaresma.jose@...>
> Sent: den 17 februari 2022 00:28
> To: openembedded-core@...
> Cc: Peter Kjellerstedt <peter.kjellerstedt@...>; Jose Quaresma <quaresma.jose@...>
> Subject: [PATCH] gstreamer1.0: update licences of all modules
>
> Since all gstreamer modules uses LGPLv2.1 with exceptions
> for some plugins in bad and ugly modules that has GPLv2+.
>
> For the GPLv2+ this patch set the licence only for each plugin
> that is affected by this licence. The commercial LICENSE_FLAGS
> is enabled if any of the previous plugins is builded.
>
> Signed-off-by: Jose Quaresma <quaresma.jose@...>
> Cc: Peter Kjellerstedt <peter.kjellerstedt@...>
> ---
>  .../gstreamer/gst-devtools_1.20.0.bb                   |  2 +-
>  .../gstreamer/gstreamer1.0-libav_1.20.0.bb             |  2 +-
>  .../gstreamer/gstreamer1.0-omx_1.20.0.bb               |  2 +-
>  .../gstreamer/gstreamer1.0-plugins-bad_1.20.0.bb       |  7 ++++++-
>  .../gstreamer/gstreamer1.0-plugins-base_1.20.0.bb      |  2 +-
>  .../gstreamer/gstreamer1.0-plugins-good_1.20.0.bb      |  2 +-
>  .../gstreamer/gstreamer1.0-plugins-ugly_1.20.0.bb      | 10 ++++++++--
>  .../gstreamer/gstreamer1.0-python_1.20.0.bb            |  2 +-
>  .../gstreamer/gstreamer1.0-rtsp-server_1.20.0.bb       |  2 +-
>  .../gstreamer/gstreamer1.0-vaapi_1.20.0.bb             |  2 +-
>  .../gstreamer/gstreamer1.0_1.20.0.bb                   |  2 +-
>  11 files changed, 23 insertions(+), 12 deletions(-)

[cut]

> diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.20.0.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.20.0.bb
> index 915d4ec744..22288373ac 100644
> --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.20.0.bb
> +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.20.0.bb
> @@ -15,7 +15,7 @@ SRC_URI[sha256sum] =
> "015b8d4d9a395ebf444d40876867a2034dd3304b3ad48bc3a0dd0c1ee7
>
>  S = "${WORKDIR}/gst-plugins-bad-${PV}"
>
> -LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+"
> +LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later"
>  LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
>
>  DEPENDS += "gstreamer1.0-plugins-base"
> @@ -98,6 +98,11 @@ PACKAGECONFIG[faad]            = "-Dfaad=enabled,-Dfaad=disabled,faad2"
>  PACKAGECONFIG[resindvd]        = "-Dresindvd=enabled,- Dresindvd=disabled,libdvdread libdvdnav"
>  PACKAGECONFIG[x265]            = "-Dx265=enabled,-Dx265=disabled,x265"
>
> +LICENSE_FLAGS = "${@bb.utils.contains("PACKAGECONFIG", "gpl", "commercial", "", d)}"

There shouldn't be any commercial limitations in these plugins. If there
were, then they would be in -ugly instead.

> +LICENSE:${PN}-faad = "GPL-2.0-or-later"
> +LICENSE:${PN}-resindvd = "GPL-2.0-or-later"
> +LICENSE:${PN}-x265 = "GPL-2.0-or-later"

This is unfortunately not enough. It is actually more the opposite of
what is needed. You need to set the license for all the other plugins
that are only affected by LGPL-2.1-or-later since the default for a
package is ${LICENSE} if no ${LICENSE:<package>} is defined.

It is likely that you can do something creative in
split_gstreamer10_packages() and set the default license there for the
plugin packages to "LGPL-2.1-or-later" and then the overrides above
would be enough. You probably want to do something like this to avoid
having to update the lists of plugin packages every time the recipes
are updated to new versions as plugins have a tendency to come and go.

> +
>  EXTRA_OEMESON += " \
>      -Ddoc=disabled \
>      -Daes=enabled \

[cut]

> diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.20.0.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.20.0.bb
> index 8128104319..6442fd4504 100644
> --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.20.0.bb
> +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.20.0.bb
> @@ -7,8 +7,7 @@ BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/issues
>  LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
>
> file://tests/check/elements/xingmux.c;beginline=1;endline=21;md5=4c771b8af188724855cb99cadd390068"
>
> -LICENSE = "GPLv2+ & LGPLv2.1+ & LGPLv2+"
> -LICENSE_FLAGS = "commercial"
> +LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later"
>
>  SRC_URI = " \
>              https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \
> @@ -37,6 +36,13 @@ PACKAGECONFIG[dvdread]  = "-Ddvdread=enabled,-Ddvdread=disabled,libdvdread"
>  PACKAGECONFIG[mpeg2dec] = "-Dmpeg2dec=enabled,-Dmpeg2dec=disabled,mpeg2dec"
>  PACKAGECONFIG[x264]     = "-Dx264=enabled,-Dx264=disabled,x264"
>
> +LICENSE_FLAGS = "${@bb.utils.contains("PACKAGECONFIG", "gpl", "commercial", "", d)}"

I do not think making this conditional is correct. AFAIK the commercial
flag is used in this recipe due to, e.g., patent limitations and not
necessarily the actual code and its license. It affects all plugins in
-ugly (it is the reason they are there in the first place and not in,
e.g., -good or -bad).

> +LICENSE:${PN}-cdio = "GPL-2.0-or-later"
> +LICENSE:${PN}-a52dec = "GPL-2.0-or-later"
> +LICENSE:${PN}-dvdread = "GPL-2.0-or-later"
> +LICENSE:${PN}-mpeg2dec = "GPL-2.0-or-later"
> +LICENSE:${PN}-x264 = "GPL-2.0-or-later"

The same applies here as in -bad.

> +
>  EXTRA_OEMESON += " \
>      -Ddoc=disabled \
>      -Dsidplay=disabled \

//Peter


--
Best regards,

José Quaresma

Join openembedded-core@lists.openembedded.org to automatically receive all group messages.