> -----Original Message----- > From: openembedded-core@lists.openembedded.org > <openembedded-core@lists.openembedded.org> On Behalf Of Peter Kjellerstedt > Sent: den 24 oktober 2024 01:39 > To: Joshua Watt <jpewhac...@gmail.com>; > openembedded-core@lists.openembedded.org > Subject: Re: [OE-core][PATCH v2 2/4] lib: license: Move package license > skip to library > > > -----Original Message----- > > From: openembedded-core@lists.openembedded.org > > <openembedded-core@lists.openembedded.org> On Behalf Of Joshua Watt > > Sent: den 23 oktober 2024 23:15 > > To: openembedded-core@lists.openembedded.org > > Cc: Joshua Watt <jpewhac...@gmail.com> > > Subject: [OE-core][PATCH v2 2/4] lib: license: Move package license skip to > > library > > > > Moves the code that skips packages with incompatible licenses to the > > library code so that it can be called in other locations > > > > Signed-off-by: Joshua Watt <jpewhac...@gmail.com> > > --- > > meta/classes-global/base.bbclass | 35 ++++------------------------ > > meta/lib/oe/license.py | 39 ++++++++++++++++++++++++++++++++ > > 2 files changed, 43 insertions(+), 31 deletions(-) > > > > diff --git a/meta/classes-global/base.bbclass > > b/meta/classes-global/base.bbclass > > index 88b932fc3f0..5b8663f454d 100644 > > --- a/meta/classes-global/base.bbclass > > +++ b/meta/classes-global/base.bbclass > > @@ -573,37 +573,10 @@ python () { > > > > bad_licenses = (d.getVar('INCOMPATIBLE_LICENSE') or "").split()
Missed this in the first review pass: you can move bad_licenses down to where it is being used. > > > > - check_license = False if pn.startswith("nativesdk-") else True > > - for t in ["-native", "-cross-${TARGET_ARCH}", > > "-cross-initial-${TARGET_ARCH}", > > - "-crosssdk-${SDK_SYS}", "-crosssdk-initial-${SDK_SYS}", > > - "-cross-canadian-${TRANSLATED_TARGET_ARCH}"]: > > - if pn.endswith(d.expand(t)): > > - check_license = False > > - if pn.startswith("gcc-source-"): > > - check_license = False > > - > > - if check_license and bad_licenses: > > - bad_licenses = oe.license.expand_wildcard_licenses(d, > > bad_licenses) > > - > > - exceptions = (d.getVar("INCOMPATIBLE_LICENSE_EXCEPTIONS") or > > "").split() > > - > > - for lic_exception in exceptions: > > - if ":" in lic_exception: > > - lic_exception = lic_exception.split(":")[1] > > - if lic_exception in oe.license.obsolete_license_list(): > > - bb.fatal("Obsolete license %s used in > > INCOMPATIBLE_LICENSE_EXCEPTIONS" % lic_exception) > > - > > - pkgs = d.getVar('PACKAGES').split() > > - skipped_pkgs = {} > > - unskipped_pkgs = [] > > - for pkg in pkgs: > > - remaining_bad_licenses = > > oe.license.apply_pkg_license_exception(pkg, bad_licenses, exceptions) > > - > > - incompatible_lic = oe.license.incompatible_license(d, > > remaining_bad_licenses, pkg) > > - if incompatible_lic: > > - skipped_pkgs[pkg] = incompatible_lic > > - else: > > - unskipped_pkgs.append(pkg) > > + pkgs = d.getVar('PACKAGES').split() > > + if pkgs: > > + skipped_pkgs = > > oe.license.skip_incompatible_package_licenses(d, pkgs) > > + unskipped_pkgs = [p for p in pkgs if p not in skipped_pkgs] > > > > if unskipped_pkgs: > > for pkg in skipped_pkgs: > > diff --git a/meta/lib/oe/license.py b/meta/lib/oe/license.py > > index 7739697c401..866a876d7f0 100644 > > --- a/meta/lib/oe/license.py > > +++ b/meta/lib/oe/license.py > > @@ -422,3 +422,42 @@ def check_license_format(d): > > '%s: LICENSE value "%s" has an invalid separator "%s" > > that is not ' \ > > 'in the valid list of separators (%s)' % > > (pn, licenses, element, license_operator_chars), d) > > + > > +def skip_incompatible_package_licenses(d, pkgs): > > + if not pkgs: > > + return {} > > + > > + pn = d.getVar("PN") > > + bad_licenses = (d.getVar('INCOMPATIBLE_LICENSE') or "").split() > > + > > + check_license = False if pn.startswith("nativesdk-") else True > > + for t in ["-native", "-cross-${TARGET_ARCH}", > > "-cross-initial-${TARGET_ARCH}", > > + "-crosssdk-${SDK_SYS}", "-crosssdk-initial-${SDK_SYS}", > > + "-cross-canadian-${TRANSLATED_TARGET_ARCH}"]: > > + if pn.endswith(d.expand(t)): > > + check_license = False > > + if pn.startswith("gcc-source-"): > > + check_license = False > > + > > + if not check_license or not bad_licenses: > > + return {} > > For efficiency, it would be better to return early, i.e.: > > bad_licenses = (d.getVar('INCOMPATIBLE_LICENSE') or "").split() > if not bad_licenses: > return {} > > pn = d.getVar("PN") > if if pn.startswith("nativesdk-") or pn.startswith("gcc-source-"): > return {} > for t in ["-native", "-cross-${TARGET_ARCH}", > "-cross-initial-${TARGET_ARCH}", > "-crosssdk-${SDK_SYS}", "-crosssdk-initial-${SDK_SYS}", > "-cross-canadian-${TRANSLATED_TARGET_ARCH}"]: > if pn.endswith(d.expand(t)): > return {} > > > + > > + bad_licenses = expand_wildcard_licenses(d, bad_licenses) > > + > > + exceptions = (d.getVar("INCOMPATIBLE_LICENSE_EXCEPTIONS") or > > "").split() > > + > > + for lic_exception in exceptions: > > + if ":" in lic_exception: > > + lic_exception = lic_exception.split(":")[1] > > + if lic_exception in obsolete_license_list(): > > + bb.fatal("Obsolete license %s used in > > INCOMPATIBLE_LICENSE_EXCEPTIONS" % lic_exception) > > + > > + skipped_pkgs = {} > > + for pkg in pkgs: > > + remaining_bad_licenses = apply_pkg_license_exception(pkg, > > bad_licenses, exceptions) > > + > > + incompatible_lic = incompatible_license(d, remaining_bad_licenses, > > pkg) > > + if incompatible_lic: > > + skipped_pkgs[pkg] = incompatible_lic > > + > > + return skipped_pkgs > > -- > > 2.46.2 > > //Peter //Peter
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#206274): https://lists.openembedded.org/g/openembedded-core/message/206274 Mute This Topic: https://lists.openembedded.org/mt/109179696/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-