mirror of
https://git.yoctoproject.org/poky
synced 2026-06-01 13:09:50 +00:00
license.bbclass: canonicalise licenses when dealing with INCOMPATIBLE_LICENSE
If INCOMPATIBLE_LICENSE=GPL-3.0 but the recipe sets LICENSE=GPLv3, the current code won't trigger because they're different strings. Fix this by attempting to canonicalise every license name to a SPDX name, so both names in this example become GPL-3.0. [ YOCTO #5622 ] (From OE-Core rev: 8998e13fc95f11d15c34fb09d8451a9d4b69f2f1) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
a9710bcfef
commit
ba197e6ff3
@@ -540,6 +540,8 @@ python () {
|
|||||||
check_license = False
|
check_license = False
|
||||||
|
|
||||||
if check_license and bad_licenses:
|
if check_license and bad_licenses:
|
||||||
|
bad_licenses = map(lambda l: canonical_license(d, l), bad_licenses)
|
||||||
|
|
||||||
whitelist = []
|
whitelist = []
|
||||||
for lic in bad_licenses:
|
for lic in bad_licenses:
|
||||||
for w in ["HOSTTOOLS_WHITELIST_", "LGPLv2_WHITELIST_", "WHITELIST_"]:
|
for w in ["HOSTTOOLS_WHITELIST_", "LGPLv2_WHITELIST_", "WHITELIST_"]:
|
||||||
|
|||||||
@@ -264,10 +264,18 @@ def return_spdx(d, license):
|
|||||||
"""
|
"""
|
||||||
return d.getVarFlag('SPDXLICENSEMAP', license, True)
|
return d.getVarFlag('SPDXLICENSEMAP', license, True)
|
||||||
|
|
||||||
|
def canonical_license(d, license):
|
||||||
|
"""
|
||||||
|
Return the canonical (SPDX) form of the license if available (so GPLv3
|
||||||
|
becomes GPL-3.0), or the passed license if there is no canonical form.
|
||||||
|
"""
|
||||||
|
return d.getVarFlag('SPDXLICENSEMAP', license, True) or license
|
||||||
|
|
||||||
def incompatible_license(d, dont_want_licenses, package=None):
|
def incompatible_license(d, dont_want_licenses, package=None):
|
||||||
"""
|
"""
|
||||||
This function checks if a recipe has only incompatible licenses. It also take into consideration 'or'
|
This function checks if a recipe has only incompatible licenses. It also
|
||||||
operand.
|
take into consideration 'or' operand. dont_want_licenses should be passed
|
||||||
|
as canonical (SPDX) names.
|
||||||
"""
|
"""
|
||||||
import re
|
import re
|
||||||
import oe.license
|
import oe.license
|
||||||
@@ -298,7 +306,7 @@ def incompatible_license(d, dont_want_licenses, package=None):
|
|||||||
licenses = oe.license.flattened_licenses(license, choose_lic_set)
|
licenses = oe.license.flattened_licenses(license, choose_lic_set)
|
||||||
except oe.license.LicenseError as exc:
|
except oe.license.LicenseError as exc:
|
||||||
bb.fatal('%s: %s' % (d.getVar('P', True), exc))
|
bb.fatal('%s: %s' % (d.getVar('P', True), exc))
|
||||||
return any(not license_ok(l) for l in licenses)
|
return any(not license_ok(canonical_license(d, l)) for l in licenses)
|
||||||
|
|
||||||
def check_license_flags(d):
|
def check_license_flags(d):
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user