On Wed, 2022-04-13 at 16:00 +0000, Christopher Larson wrote:
> This function returns True if any of the specified packages are skipped due to
> incompatible license.
>
> License exceptions are obeyed. The user may specify the package's license for
> cross-recipe checks.
>
> This allows for additions to packagegroups only for non-incompatible builds.
> For
> example:
>
> RDEPENDS_${PN} += "${@'dbench' if not any_incompatible(d, 'dbench',
> 'GPL-3.0-only') else ''}"
>
> Signed-off-by: Christopher Larson <[email protected]>
> ---
> meta/classes/license.bbclass | 38 +++++++++++++++++++
> .../packagegroups/packagegroup-base.bb | 2 +
> 2 files changed, 40 insertions(+)
>
> v2 changes: fixed string packages logic, corrected reference to
> apply_pkg_license_exception, and avoided use of ${@} in the function docstring
> to avoid bitbake expanding it and recursing.
>
> diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
> index 0c637e966e..41993b7227 100644
> --- a/meta/classes/license.bbclass
> +++ b/meta/classes/license.bbclass
> @@ -320,6 +320,44 @@ def incompatible_license(d, dont_want_licenses,
> package=None):
>
> return incompatible_pkg_license(d, dont_want_licenses, license)
>
> +def any_incompatible(d, packages, licensestring=None):
> + """Return True if any of the packages are skipped due to incompatible
> license.
> +
> + License exceptions are obeyed. The user may specify the package's license
> + for cross-recipe checks.
> +
> + This allows for additions to packagegroups only for non-incompatible
> builds.
> +
> + For example: 'dbench' if not any_incompatible(d, 'dbench',
> 'GPL-3.0-only') else ''
> + """
> + import oe.license
> +
> + if isinstance(packages, str):
> + packages = packages.split()
> +
> + bad_licenses = (d.getVar("INCOMPATIBLE_LICENSE") or "").split()
> + if not bad_licenses:
> + return False
> + bad_licenses = expand_wildcard_licenses(d, bad_licenses)
> +
> + if licensestring is None:
> + licensestring = d.getVar("LICENSE:%s" % package) if package else None
> + if not licensestring:
> + licensestring = d.getVar("LICENSE")
> +
> + exceptions = (d.getVar("INCOMPATIBLE_LICENSE_EXCEPTIONS") or "").split()
> + for pkg in packages:
> + remaining_bad_licenses = oe.license.apply_pkg_license_exception(
> + pkg, bad_licenses, exceptions
> + )
> +
> + incompatible_lic = incompatible_pkg_license(
> + d, remaining_bad_licenses, licensestring
> + )
> + if incompatible_lic:
> + return True
> + return False
> +
> def check_license_flags(d):
> """
> This function checks if a recipe has any LICENSE_FLAGS that
> diff --git a/meta/recipes-core/packagegroups/packagegroup-base.bb
> b/meta/recipes-core/packagegroups/packagegroup-base.bb
> index 7489ef61b0..1c97d03c21 100644
> --- a/meta/recipes-core/packagegroups/packagegroup-base.bb
> +++ b/meta/recipes-core/packagegroups/packagegroup-base.bb
> @@ -14,6 +14,8 @@ PACKAGES = ' \
> packagegroup-distro-base \
> packagegroup-machine-base \
> \
> + ${@"dbench" if not any_incompatible(d, "dbench", "GPL-3.0-only")
> else ""} \
> + \
> ${@bb.utils.contains("MACHINE_FEATURES", "acpi",
> "packagegroup-base-acpi", "",d)} \
> ${@bb.utils.contains("MACHINE_FEATURES", "alsa",
> "packagegroup-base-alsa", "", d)} \
> ${@bb.utils.contains("MACHINE_FEATURES", "apm",
> "packagegroup-base-apm", "", d)} \
I suspect you didn't mean to include this piece since dbench isn't in core?
Cheers,
Richard
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#164351):
https://lists.openembedded.org/g/openembedded-core/message/164351
Mute This Topic: https://lists.openembedded.org/mt/90443891/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-