diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-06-08 20:16:56 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-06-08 20:38:28 +0100 |
commit | c7f76a1bc9868ea4709688967d9794acd4d784ec (patch) | |
tree | 0599fe8923b2dc0a89853b03b4eb17b836bacc54 | |
parent | bdab8e93543bfc0d7b07c61da043b410036ac2c7 (diff) | |
download | poky-c7f76a1bc9868ea4709688967d9794acd4d784ec.tar.gz |
bitbake/data/runqueue: Sync up with upstream to clean up environment variable handling
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | bitbake/lib/bb/data.py | 27 | ||||
-rw-r--r-- | bitbake/lib/bb/runqueue.py | 11 |
2 files changed, 12 insertions, 26 deletions
diff --git a/bitbake/lib/bb/data.py b/bitbake/lib/bb/data.py index 50f2218a70..720dd76ef6 100644 --- a/bitbake/lib/bb/data.py +++ b/bitbake/lib/bb/data.py | |||
@@ -234,25 +234,20 @@ def emit_env(o=sys.__stdout__, d = init(), all=False): | |||
234 | for key in keys: | 234 | for key in keys: |
235 | emit_var(key, o, d, all and not isfunc) and o.write('\n') | 235 | emit_var(key, o, d, all and not isfunc) and o.write('\n') |
236 | 236 | ||
237 | def export_vars(d): | 237 | def exported_keys(d): |
238 | keys = (key for key in d.keys() if d.getVarFlag(key, "export")) | 238 | return (key for key in d.keys() if not key.startswith('__') and |
239 | ret = {} | 239 | d.getVarFlag(key, 'export') and |
240 | for k in keys: | 240 | not d.getVarFlag(key, 'unexport')) |
241 | |||
242 | def exported_vars(d): | ||
243 | for key in exported_keys(d): | ||
241 | try: | 244 | try: |
242 | v = d.getVar(k, True) | 245 | value = d.getVar(key, True) |
243 | if v: | 246 | except Exception: |
244 | ret[k] = v | ||
245 | except (KeyboardInterrupt, bb.build.FuncFailed): | ||
246 | raise | ||
247 | except Exception, exc: | ||
248 | pass | 247 | pass |
249 | return ret | ||
250 | 248 | ||
251 | def export_envvars(v, d): | 249 | if value is not None: |
252 | for s in os.environ.keys(): | 250 | yield key, str(value) |
253 | if s not in v: | ||
254 | v[s] = os.environ[s] | ||
255 | return v | ||
256 | 251 | ||
257 | def emit_func(func, o=sys.__stdout__, d = init()): | 252 | def emit_func(func, o=sys.__stdout__, d = init()): |
258 | """Emits all items in the data store in a format such that it can be sourced by a shell.""" | 253 | """Emits all items in the data store in a format such that it can be sourced by a shell.""" |
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 772b3667c4..af21eae42a 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
@@ -1062,7 +1062,6 @@ class RunQueueExecute: | |||
1062 | # We need to setup the environment BEFORE the fork, since | 1062 | # We need to setup the environment BEFORE the fork, since |
1063 | # a fork() or exec*() activates PSEUDO... | 1063 | # a fork() or exec*() activates PSEUDO... |
1064 | 1064 | ||
1065 | env = {} | ||
1066 | envbackup = {} | 1065 | envbackup = {} |
1067 | 1066 | ||
1068 | taskdep = self.rqdata.dataCache.task_deps[fn] | 1067 | taskdep = self.rqdata.dataCache.task_deps[fn] |
@@ -1071,7 +1070,6 @@ class RunQueueExecute: | |||
1071 | for key, value in (var.split('=') for var in envvars): | 1070 | for key, value in (var.split('=') for var in envvars): |
1072 | envbackup[key] = os.environ.get(key) | 1071 | envbackup[key] = os.environ.get(key) |
1073 | os.environ[key] = value | 1072 | os.environ[key] = value |
1074 | env[key] = value | ||
1075 | 1073 | ||
1076 | fakedirs = (self.rqdata.dataCache.fakerootdirs[fn] or "").split() | 1074 | fakedirs = (self.rqdata.dataCache.fakerootdirs[fn] or "").split() |
1077 | for p in fakedirs: | 1075 | for p in fakedirs: |
@@ -1118,14 +1116,7 @@ class RunQueueExecute: | |||
1118 | for h in self.rqdata.hash_deps: | 1116 | for h in self.rqdata.hash_deps: |
1119 | the_data.setVar("BBHASHDEPS_%s" % h, self.rqdata.hash_deps[h]) | 1117 | the_data.setVar("BBHASHDEPS_%s" % h, self.rqdata.hash_deps[h]) |
1120 | 1118 | ||
1121 | env2 = bb.data.export_vars(the_data) | 1119 | os.environ.update(bb.data.exported_vars(the_data)) |
1122 | env2 = bb.data.export_envvars(env2, the_data) | ||
1123 | for e in os.environ: | ||
1124 | os.unsetenv(e) | ||
1125 | for e in env2: | ||
1126 | os.putenv(e, env2[e]) | ||
1127 | for e in env: | ||
1128 | os.putenv(e, env[e]) | ||
1129 | 1120 | ||
1130 | if quieterrors: | 1121 | if quieterrors: |
1131 | the_data.setVarFlag(taskname, "quieterrors", "1") | 1122 | the_data.setVarFlag(taskname, "quieterrors", "1") |