> -----Original Message-----
> From: openembedded-core@lists.openembedded.org <openembedded-
> c...@lists.openembedded.org> On Behalf Of Meh Mbeh Ida Delphine
> Sent: den 17 februari 2021 05:01
> To: openembedded-core@lists.openembedded.org
> Subject: [OE-core] [poky-contrib][RFC PATCH 4/5] license.bbclass: Add
> functions to split and canonicalise license strings
> 
> These functions that will later be used in package.bbclass simply make the
> source and recipe licenses in the same format so that they can easily be
> compared and the ouput warnings filtered accordingly.
> split_spdx_lic() splits the license strings and returns a set of the
> canonicalised licenses.
> rem_false_lics() does two things:
> - Converts '-or-later' licenses to their canonicalised form
> - Gets rid of "WITH Linux-syscall-note" from license string if specified
> in local.conf
> 
> Signed-off-by: Ida Delphine <idad...@gmail.com>
> ---
>  meta/classes/license.bbclass | 27 +++++++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
> 
> diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
> index dc91118340..576464cb26 100644
> --- a/meta/classes/license.bbclass
> +++ b/meta/classes/license.bbclass
> @@ -435,3 +435,30 @@ python do_populate_lic_setscene () {
>      sstate_setscene(d)
>  }
>  addtask do_populate_lic_setscene
> +
> +
> +def split_spdx_lic(d, licensestr):
> +    """
> +    Split the license strings and returns a set of the
> +    canonicalised licenses.
> +    """
> +    import oe.license
> +    split_lic = oe.license.list_licenses(licensestr)
> +    spdx_lic = set([canonical_license(d, l) for l in split_lic])
> +    return spdx_lic
> +
> +def rem_false_lics(d, pkglic):
> +    pkglicsperpkg = set([])
> +    for l in pkglic:
> +        if l.endswith('-or-later'):
> +            # Converts '-or-later' licenses to their canonicalised form
> +            lic_ = l.replace('-or-later', '+')

Given that licenses such as "GPL-2.0+" are deprecated by SPDX, shouldn't we 
instead introduce the canonical "GPL-2.0-only" and "GPL-2.0-or-later"?
And then add mappings for, e.g., "GPL-2.0" to "GPL-2.0-only" and "GPL-2.0+" 
to "GPL-2.0-or-later".

> +            pkglicsperpkg.add(lic_)
> +        elif l.endswith(' WITH Linux-syscall-note'):
> +        # Gets rid of "WITH Linux-syscall-note from license sring"
> +            if d.getVar("LICENSE_WITH_LINUX_SYS") == "1":
> +                lic_ = l.replace(' WITH Linux-syscall-note', '')

Looking at https://spdx.org/licenses/exceptions-index.html, there is a long 
list of predefined exceptions and "Linux-syscall-note" is just one of them. 
We probably want a more generic solution for how to handle exceptions.

> +                pkglicsperpkg.add(lic_)
> +        else:
> +            pkglicsperpkg.add(l)
> +    return pkglicsperpkg
> \ No newline at end of file
> --
> 2.25.1

//Peter

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#148239): 
https://lists.openembedded.org/g/openembedded-core/message/148239
Mute This Topic: https://lists.openembedded.org/mt/80697040/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to