All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/1] Store a data object containing the initial environment
@ 2011-07-22 16:27 Joshua Lock
  2011-07-22 16:27 ` [PATCH 1/1] bitbake|cooker: save a copy of the environment when BitBake is started Joshua Lock
  0 siblings, 1 reply; 3+ messages in thread
From: Joshua Lock @ 2011-07-22 16:27 UTC (permalink / raw)
  To: bitbake-devel

As discussed, take a copy of the environment in the bitbake entry point and
pass it to the cooker for saving in a data store.

Tested with bitbake and bitbake-layers.

The following changes since commit abc67ed6921c98ed581f101ec1acc589fd9ce7e9:

  bitbake/utils: Add contains helper function from lib.oe.utils (2011-07-22 12:11:01 +0100)

are available in the git repository at:
  git://github.com/incandescant/bitbake initialenv
  https://github.com/incandescant/bitbake/tree/initialenv

Joshua Lock (1):
  bitbake|cooker: save a copy of the environment when BitBake is
    started

 bin/bitbake      |    5 ++++-
 lib/bb/cooker.py |   11 ++++++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)

-- 
1.7.6




^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 1/1] bitbake|cooker: save a copy of the environment when BitBake is started
  2011-07-22 16:27 [PATCH 0/1] Store a data object containing the initial environment Joshua Lock
@ 2011-07-22 16:27 ` Joshua Lock
  2011-07-22 17:02   ` Richard Purdie
  0 siblings, 1 reply; 3+ messages in thread
From: Joshua Lock @ 2011-07-22 16:27 UTC (permalink / raw)
  To: bitbake-devel

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@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):
         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])
+
         self.caches_array = []
         # Currently, only Image Creator hob ui needs extra cache.
         # So, we save Extra Cache class name and container file
-- 
1.7.6




^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH 1/1] bitbake|cooker: save a copy of the environment when BitBake is started
  2011-07-22 16:27 ` [PATCH 1/1] bitbake|cooker: save a copy of the environment when BitBake is started Joshua Lock
@ 2011-07-22 17:02   ` Richard Purdie
  0 siblings, 0 replies; 3+ messages in thread
From: Richard Purdie @ 2011-07-22 17:02 UTC (permalink / raw)
  To: Joshua Lock; +Cc: bitbake-devel

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@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






^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-07-22 17:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-22 16:27 [PATCH 0/1] Store a data object containing the initial environment Joshua Lock
2011-07-22 16:27 ` [PATCH 1/1] bitbake|cooker: save a copy of the environment when BitBake is started Joshua Lock
2011-07-22 17:02   ` Richard Purdie

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.