[bitbake-devel] [RFC 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 11:25:10 UTC 2011
On Thu, 2011-07-21 at 15:42 -0700, Joshua Lock wrote:
> Keep a saved copy of the environment from when BitBake is launched in the
> cooker 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 | 7 ++++++-
> 2 files changed, 10 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..30a1039 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):
> self.status = None
> self.appendlist = {}
> self.skiplist = {}
> @@ -87,6 +87,11 @@ class BBCooker:
>
> self.configuration = configuration
>
> + # A copy of the mapping representing the environment when BitBake was
> + # launched is saved to enable child processes to use environment
> + # variables which have been cleaned from the BitBake processes env
> + self.savedenv = savedenv
> +
> self.caches_array = []
> # Currently, only Image Creator hob ui needs extra cache.
> # So, we save Extra Cache class name and container file
This looks good as a first step of this and I'm happy to merge this
patch. I'd probably go a little further and turn the above into:
self.savedenv = bb.data.init()
for k in savedenv:
self.savedenv.setVar(k, savedenv[k])
so it becomes a data store in its own right. It then just becomes a case
of obtaining that data store in the UI or task code.
Cheers,
Richard
More information about the bitbake-devel
mailing list