This actually fails yocto-check-layer script for Yocto compliance checking, when a layer provides own licenses via LICENSE_PATH (in layer.conf - LICENSE_PATH += "${LAYERDIR}/licenses"):
Variable AVAILABLE_LICENSES value changed: ... Is there a new way to provide additional licenses from a layer or should the yocto-check-layer script be modified to accomodate (i.e. ignore) this change? -- Denys On Wed, Dec 11, 2019 at 05:48:13PM +0100, Peter Kjellerstedt wrote: > Previously, there was SRC_DISTRIBUTE_LICENSES, an undocumented > variable that contained a static list of licenses. It was used by > expand_wildcard_licenses() to expand any wildcards used in, e.g., > INCOMPATIBLE_LICENSE. However, since this static list of licenses has > not been kept up-to-date, many licenses were missing, with the result > that if one tried to use any of those licenses with a wildcard, no > licenses would be found, effectively ignoring that they should be > marked as incompatible. > > This introduces a new (documented) variable, AVAILABLE_LICENSES, that > is automatically updated to contain all licenses found in any > directories specified by ${COMMON_LICENSE_DIR} and ${LICENSE_PATH}, > and uses it instead of SRC_DISTRIBUTE_LICENSES when expanding > wildcards. > > Signed-off-by: Peter Kjellerstedt <peter.kjellerst...@axis.com> > --- > > PATCHv2: Correct spelling of 'available'. > > meta/classes/license.bbclass | 27 ++++++++++++++++--- > meta/conf/documentation.conf | 1 + > .../oeqa/selftest/cases/incompatible_lic.py | 6 ++--- > 3 files changed, 27 insertions(+), 7 deletions(-) > > diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass > index 648a4d7892..c388740003 100644 > --- a/meta/classes/license.bbclass > +++ b/meta/classes/license.bbclass > @@ -252,7 +252,7 @@ def canonical_license(d, license): > """ > Return the canonical (SPDX) form of the license if available (so GPLv3 > becomes GPL-3.0), for the license named 'X+', return canonical form of > - 'X' if availabel and the tailing '+' (so GPLv3+ becomes GPL-3.0+), > + 'X' if available and the tailing '+' (so GPLv3+ becomes GPL-3.0+), > or the passed license if there is no canonical form. > """ > lic = d.getVarFlag('SPDXLICENSEMAP', license) or "" > @@ -262,10 +262,29 @@ def canonical_license(d, license): > lic += '+' > return lic or license > > +def available_licenses(d): > + """ > + Return the available licenses by searching the directories specified by > + COMMON_LICENSE_DIR and LICENSE_PATH. > + """ > + lic_dirs = ((d.getVar('COMMON_LICENSE_DIR') or '') + ' ' + > + (d.getVar('LICENSE_PATH') or '')).split() > + > + licenses = [] > + for lic_dir in lic_dirs: > + licenses += os.listdir(lic_dir) > + > + licenses = sorted(licenses) > + return licenses > + > +# Only determine the list of all available licenses once. This assumes that > any > +# additions to LICENSE_PATH have been done before this file is parsed. > +AVAILABLE_LICENSES := "${@' '.join(available_licenses(d))}" > + > def expand_wildcard_licenses(d, wildcard_licenses): > """ > - Return actual spdx format license names if wildcard used. We expand > - wildcards from SPDXLICENSEMAP flags and SRC_DISTRIBUTE_LICENSES values. > + Return actual spdx format license names if wildcards are used. We expand > + wildcards from SPDXLICENSEMAP flags and AVAILABLE_LICENSES. > """ > import fnmatch > licenses = wildcard_licenses[:] > @@ -274,7 +293,7 @@ def expand_wildcard_licenses(d, wildcard_licenses): > spdxflags = fnmatch.filter(spdxmapkeys, wld_lic) > licenses += [d.getVarFlag('SPDXLICENSEMAP', flag) for flag in > spdxflags] > > - spdx_lics = (d.getVar('SRC_DISTRIBUTE_LICENSES', False) or '').split() > + spdx_lics = d.getVar('AVAILABLE_LICENSES').split() > for wld_lic in wildcard_licenses: > licenses += fnmatch.filter(spdx_lics, wld_lic) > > diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf > index fca36f3cf6..0b21d1f63e 100644 > --- a/meta/conf/documentation.conf > +++ b/meta/conf/documentation.conf > @@ -69,6 +69,7 @@ ASSUME_SHLIBS[doc] = "List of shlib:package[_version] > mappings. Useful for lib p > AUTHOR[doc] = "Email address used to contact the original author(s) in order > to send patches and forward bugs." > AUTO_SYSLINUXMENU[doc] = "Enables creating an automatic menu for the > syslinux bootloader." > AUTOREV[doc] = "When SRCREV is set to the value of this variable, it > specifies to use the latest source revision in the repository." > +AVAILABLE_LICENSES[doc] = "List of licenses found in the directories > specified by COMMON_LICENSE_DIR and LICENSE_PATH." > > #B > > diff --git a/meta/lib/oeqa/selftest/cases/incompatible_lic.py > b/meta/lib/oeqa/selftest/cases/incompatible_lic.py > index 904b5b4094..ad878571b5 100644 > --- a/meta/lib/oeqa/selftest/cases/incompatible_lic.py > +++ b/meta/lib/oeqa/selftest/cases/incompatible_lic.py > @@ -12,12 +12,12 @@ class IncompatibleLicenseTests(OESelftestTestCase): > if error_msg not in result.output: > raise AssertionError(result.output) > > - # Verify that a package with an SPDX license (from > SRC_DISTRIBUTE_LICENSES) > + # Verify that a package with an SPDX license (from AVAILABLE_LICENSES) > # cannot be built when INCOMPATIBLE_LICENSE contains this SPDX license > def test_incompatible_spdx_license(self): > self.lic_test('incompatible-license', 'GPL-3.0', 'GPL-3.0') > > - # Verify that a package with an SPDX license (from > SRC_DISTRIBUTE_LICENSES) > + # Verify that a package with an SPDX license (from AVAILABLE_LICENSES) > # cannot be built when INCOMPATIBLE_LICENSE contains an alias (in > # SPDXLICENSEMAP) of this SPDX license > def test_incompatible_alias_spdx_license(self): > @@ -35,7 +35,7 @@ class IncompatibleLicenseTests(OESelftestTestCase): > self.lic_test('incompatible-license-alias', 'GPLv3', 'GPLv3') > > # Verify that a package with a non-SPDX license (neither in > - # SRC_DISTRIBUTE_LICENSES nor in SPDXLICENSEMAP) cannot be built when > + # AVAILABLE_LICENSES nor in SPDXLICENSEMAP) cannot be built when > # INCOMPATIBLE_LICENSE contains this license > def test_incompatible_nonspdx_license(self): > self.lic_test('incompatible-nonspdx-license', 'FooLicense', > 'FooLicense') > -- > 2.21.0 > > -- > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-core
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#141680): https://lists.openembedded.org/g/openembedded-core/message/141680 Mute This Topic: https://lists.openembedded.org/mt/72389694/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-