[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