[bitbake-devel] [PATCH] bitbake: Show base multiconfig environment

Joshua Watt jpewhacker at gmail.com
Wed May 29 15:37:30 UTC 2019


Ping

On 5/22/19 2:56 PM, Joshua Watt wrote:
> Adds support to the 'bitbake -e' command so that it can display the base
> environment for a multiconfig. It was previously possible to get the
> base environment for the main environment by running "bitbake -e", but
> there was no support for getting the base environment for a multiconfig
> without specifying a recipe. A user can now print the base environment
> for the multiconfig "foo" by running:
>
>   $ bitbake -e multiconfig:foo
>
> Signed-off-by: Joshua Watt <JPEWhacker at gmail.com>
> ---
>   bitbake/lib/bb/cooker.py | 31 +++++++++++++++++++++----------
>   1 file changed, 21 insertions(+), 10 deletions(-)
>
> diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
> index 33697a71d5e..d183abab6dc 100644
> --- a/bitbake/lib/bb/cooker.py
> +++ b/bitbake/lib/bb/cooker.py
> @@ -495,6 +495,7 @@ class BBCooker:
>           """
>           fn = None
>           envdata = None
> +        mc = ''
>           if not pkgs_to_build:
>               pkgs_to_build = []
>   
> @@ -503,6 +504,12 @@ class BBCooker:
>               self.enableDataTracking()
>               self.reset()
>   
> +        def mc_base(p):
> +            if p.startswith('multiconfig:'):
> +                s = p.split(':')
> +                if len(s) == 2:
> +                    return s[1]
> +            return None
>   
>           if buildfile:
>               # Parse the configuration here. We need to do it explicitly here since
> @@ -513,18 +520,16 @@ class BBCooker:
>               fn = self.matchFile(fn)
>               fn = bb.cache.realfn2virtual(fn, cls, mc)
>           elif len(pkgs_to_build) == 1:
> -            ignore = self.data.getVar("ASSUME_PROVIDED") or ""
> -            if pkgs_to_build[0] in set(ignore.split()):
> -                bb.fatal("%s is in ASSUME_PROVIDED" % pkgs_to_build[0])
> +            mc = mc_base(pkgs_to_build[0])
> +            if not mc:
> +                ignore = self.data.getVar("ASSUME_PROVIDED") or ""
> +                if pkgs_to_build[0] in set(ignore.split()):
> +                    bb.fatal("%s is in ASSUME_PROVIDED" % pkgs_to_build[0])
>   
> -            taskdata, runlist = self.buildTaskData(pkgs_to_build, None, self.configuration.abort, allowincomplete=True)
> +                taskdata, runlist = self.buildTaskData(pkgs_to_build, None, self.configuration.abort, allowincomplete=True)
>   
> -            mc = runlist[0][0]
> -            fn = runlist[0][3]
> -        else:
> -            envdata = self.data
> -            data.expandKeys(envdata)
> -            parse.ast.runAnonFuncs(envdata)
> +                mc = runlist[0][0]
> +                fn = runlist[0][3]
>   
>           if fn:
>               try:
> @@ -533,6 +538,12 @@ class BBCooker:
>               except Exception as e:
>                   parselog.exception("Unable to read %s", fn)
>                   raise
> +        else:
> +            if not mc in self.databuilder.mcdata:
> +                bb.fatal('Not multiconfig named "%s" found' % mc)
> +            envdata = self.databuilder.mcdata[mc]
> +            data.expandKeys(envdata)
> +            parse.ast.runAnonFuncs(envdata)
>   
>           # Display history
>           with closing(StringIO()) as env:


More information about the bitbake-devel mailing list