[bitbake-devel] [PATCH 1/1] bitbake|cooker: save a copy of the environment when BitBake is started

Richard Purdie richard.purdie at linuxfoundation.org
Fri Jul 22 17:02:32 UTC 2011


On Fri, 2011-07-22 at 09:27 -0700, Joshua Lock wrote:
> Create a data store in the cooker containing the values of the environment
> from when BitBake is launched such that child processes can replicate
> (and/or use values from) the host environment, rather than the cleaned up
> environment that the main BitBake process uses.
> 
> Signed-off-by: Joshua Lock <josh at linux.intel.com>
> ---
>  bin/bitbake      |    5 ++++-
>  lib/bb/cooker.py |   11 ++++++++++-
>  2 files changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/bin/bitbake b/bin/bitbake
> index 206d97b..a9dd67e 100755
> --- a/bin/bitbake
> +++ b/bin/bitbake
> @@ -197,6 +197,9 @@ Default BBFILES are the .bb files in the current directory.""")
>      handler = bb.event.LogHandler()
>      logger.addHandler(handler)
>  
> +    # Before we start modifying the environment we should take a pristine
> +    # copy for possible later use
> +    initialenv = os.environ.copy()
>      # Clear away any spurious environment variables. But don't wipe the
>      # environment totally. This is necessary to ensure the correct operation
>      # of the UIs (e.g. for DISPLAY, etc.)
> @@ -207,7 +210,7 @@ Default BBFILES are the .bb files in the current directory.""")
>      server.initServer()
>      idle = server.getServerIdleCB()
>  
> -    cooker = bb.cooker.BBCooker(configuration, idle)
> +    cooker = bb.cooker.BBCooker(configuration, idle, initialenv)
>      cooker.parseCommandLine()
>  
>      server.addcooker(cooker)
> diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
> index 0326b8c..079b6d3 100644
> --- a/lib/bb/cooker.py
> +++ b/lib/bb/cooker.py
> @@ -78,7 +78,7 @@ class BBCooker:
>      Manages one bitbake build run
>      """
>  
> -    def __init__(self, configuration, server_registration_cb):
> +    def __init__(self, configuration, server_registration_cb, savedenv=None):

def __init__(self, configuration, server_registration_cb, savedenv={}):

>          self.status = None
>          self.appendlist = {}
>          self.skiplist = {}
> @@ -87,6 +87,15 @@ class BBCooker:
>  
>          self.configuration = configuration
>  
> +        # Keep a datastore of the initial environment variables and their
> +        # values from when BitBake was launched to enable child processes
> +        # to use environment variables which have been cleaned from the
> +        # BitBake processes env
> +        if savedenv:
> +            self.savedenv = bb.data.init()
> +            for k in savedenv:
> +                self.savedenv.setVar(k, savedenv[k])
> +

Then you can drop the if and we'd just create an empty dictionary which
is likely going to lead to saner code in future...

Cheers,

Richard







More information about the bitbake-devel mailing list