cooker.bb_cache.setData(fn, buildfile, the_data)
cooker.bb_cache.handle_data(fn, cooker.status)
+exportlist = bb.utils.preserved_envvars_export_list()
+bb.utils.filter_environment(exportlist)
+
if taskname.endswith("_setscene"):
the_data.setVarFlag(taskname, "quieterrors", "1")
def pre_serve(self):
# Empty the environment. The environment will be populated as
# necessary from the data store.
- bb.utils.empty_environment()
+ #bb.utils.empty_environment()
+ return
def post_serve(self):
bb.event.fire(CookerExit(), self.configuration.event_data)
def inheritFromOS(d):
"""Inherit variables from the environment."""
+ exportlist = bb.utils.preserved_envvars_export_list()
for s in os.environ.keys():
try:
setVar(s, os.environ[s], d)
- setVarFlag(s, "export", True, d)
+ if s in exportlist:
+ setVarFlag(s, "export", True, d)
except TypeError:
pass
pass
return ret
+def export_envvars(v, d):
+ for s in os.environ.keys():
+ if s not in v:
+ v[s] = os.environ[s]
+ return v
+
def emit_func(func, o=sys.__stdout__, d = init()):
"""Emits all items in the data store in a format such that it can be sourced by a shell."""
the_data = self.cooker.bb_cache.loadDataFull(fn, self.cooker.get_file_appends(fn), self.cooker.configuration.data)
env = bb.data.export_vars(the_data)
+ env = bb.data.export_envvars(env, the_data)
taskdep = self.rqdata.dataCache.task_deps[fn]
if 'fakeroot' in taskdep and taskname in taskdep['fakeroot']:
s.update(line)
return s.hexdigest()
-def preserved_envvars_list():
+# Variables which are preserved from the original environment *and* exported
+# into our worker context
+def preserved_envvars_export_list():
return [
- 'BBPATH',
- 'BB_PRESERVE_ENV',
- 'BB_ENV_WHITELIST',
- 'BB_ENV_EXTRAWHITE',
'BB_TASKHASH',
+ 'HOME',
+ 'LOGNAME',
+ 'PATH',
+ 'PWD',
+ 'SHELL',
+ 'TERM',
+ 'USER',
+ 'USERNAME',
+ ]
+
+# Variables which are preserved from the original environment *and* exported
+# into our worker context for interactive tasks (e.g. requiring X)
+def preserved_envvars_export_interactive_list():
+ return [
'COLORTERM',
'DBUS_SESSION_BUS_ADDRESS',
'DESKTOP_SESSION',
'GNOME_KEYRING_SOCKET',
'GPG_AGENT_INFO',
'GTK_RC_FILES',
- 'HOME',
- 'LANG',
- 'LOGNAME',
- 'PATH',
- 'PWD',
'SESSION_MANAGER',
- 'SHELL',
'SSH_AUTH_SOCK',
- 'TERM',
- 'USER',
- 'USERNAME',
- '_',
'XAUTHORITY',
'XDG_DATA_DIRS',
'XDG_SESSION_COOKIE',
]
+# Variables which are preserved from the original environment into the datastore
+def preserved_envvars_list():
+ v = [
+ 'BBPATH',
+ 'BB_PRESERVE_ENV',
+ 'BB_ENV_WHITELIST',
+ 'BB_ENV_EXTRAWHITE',
+ 'LANG',
+ '_',
+ ]
+ return v + preserved_envvars_export_list() + preserved_envvars_export_interactive_list()
+
def filter_environment(good_vars):
"""
Create a pristine environment for bitbake. This will remove variables that
return removed_vars
+def create_intereactive_env(d):
+ for k in preserved_envvars_export_interactive_list():
+ os.setenv(k, bb.data.getVar(k, d, True))
+
def clean_environment():
"""
Clean up any spurious environment variables. This will remove any