[OE-core] [PATCH 1/2] base.bbclass: extend PACKAGECONFIG for conflict package configs

Kang Kai Kai.Kang at windriver.com
Tue Dec 24 02:27:06 UTC 2019


On 2019/12/10 下午5:35, kai.kang at windriver.com wrote:
> From: Kai Kang <kai.kang at windriver.com>
>
> There are mutually exclusive PACKAGECONFIGs in recipes. Though it
> declares that package configs are exclusive, it can't prevent users to
> set them at same time. Extend PACKAGECONFIG to support specifying
> conflicted package configs.

Ping.


>
> Signed-off-by: Kai Kang <kai.kang at windriver.com>
> ---
>   meta/classes/base.bbclass | 20 +++++++++++++++++---
>   1 file changed, 17 insertions(+), 3 deletions(-)
>
> diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
> index 31457f9f12..ef3afdf964 100644
> --- a/meta/classes/base.bbclass
> +++ b/meta/classes/base.bbclass
> @@ -390,7 +390,7 @@ python () {
>       # These take the form:
>       #
>       # PACKAGECONFIG ??= "<default options>"
> -    # PACKAGECONFIG[foo] = "--enable-foo,--disable-foo,foo_depends,foo_runtime_depends,foo_runtime_recommends"
> +    # PACKAGECONFIG[foo] = "--enable-foo,--disable-foo,foo_depends,foo_runtime_depends,foo_runtime_recommends,foo_conflict_packageconfig"
>       pkgconfigflags = d.getVarFlags("PACKAGECONFIG") or {}
>       if pkgconfigflags:
>           pkgconfig = (d.getVar('PACKAGECONFIG') or "").split()
> @@ -437,8 +437,8 @@ python () {
>           for flag, flagval in sorted(pkgconfigflags.items()):
>               items = flagval.split(",")
>               num = len(items)
> -            if num > 5:
> -                bb.error("%s: PACKAGECONFIG[%s] Only enable,disable,depend,rdepend,rrecommend can be specified!"
> +            if num > 6:
> +                bb.error("%s: PACKAGECONFIG[%s] Only enable,disable,depend,rdepend,rrecommend,conflict_packageconfig can be specified!"
>                       % (d.getVar('PN'), flag))
>   
>               if flag in pkgconfig:
> @@ -452,6 +452,20 @@ python () {
>                       extraconf.append(items[0])
>               elif num >= 2 and items[1]:
>                       extraconf.append(items[1])
> +
> +            if num >= 6 and items[5]:
> +                conflicts = set(items[5].split())
> +                invalid = conflicts.difference(set(pkgconfigflags.keys()))
> +                if invalid:
> +                    bb.error("%s: PACKAGECONFIG[%s] Invalid conflict package config%s '%s' specified."
> +                        % (d.getVar('PN'), flag, 's' if len(invalid) > 1 else '', ' '.join(invalid)))
> +
> +                if flag in pkgconfig:
> +                    intersec = conflicts.intersection(set(pkgconfig))
> +                    if intersec:
> +                        bb.fatal("%s: PACKAGECONFIG[%s] Conflict package config%s '%s' set in PACKAGECONFIG."
> +                            % (d.getVar('PN'), flag, 's' if len(intersec) > 1 else '', ' '.join(intersec)))
> +
>           appendVar('DEPENDS', extradeps)
>           appendVar('RDEPENDS_${PN}', extrardeps)
>           appendVar('RRECOMMENDS_${PN}', extrarrecs)


-- 
Kai Kang



More information about the Openembedded-core mailing list