You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by ak...@apache.org on 2025/08/24 20:44:11 UTC
(buildstream) 01/12: element.py: Use sandbox environment for logging and shell
This is an automated email from the ASF dual-hosted git repository.
akitouni pushed a commit to branch abderrahim/nested-reapi
in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit 6dea8f82ebf85f62e1e1491f2a971391f4555452
Author: Jürg Billeter <j...@bitron.ch>
AuthorDate: Fri Jul 25 15:33:05 2025 +0200
element.py: Use sandbox environment for logging and shell
Elements can configure additional environment variables in
`configure_sandbox()`, which will be used by `BuildElement` to support
`digest-environment`. Use the complete environment for logging and
`bst shell`.
---
src/buildstream/element.py | 12 ++++++------
src/buildstream/sandbox/sandbox.py | 10 ++++++++++
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/src/buildstream/element.py b/src/buildstream/element.py
index cb680ad38..f267ce7e3 100644
--- a/src/buildstream/element.py
+++ b/src/buildstream/element.py
@@ -1663,11 +1663,6 @@ class Element(Plugin):
# Assert call ordering
assert not self._cached_success()
- # Print the environment at the beginning of the log file.
- env_dump = _yaml.roundtrip_dump_string(self.get_environment())
-
- self.log("Build environment for element {}".format(self.name), detail=env_dump)
-
context = self._get_context()
with self._output_file() as output_file:
@@ -1693,6 +1688,11 @@ class Element(Plugin):
# Step 1 - Configure
self.__configure_sandbox(sandbox)
+
+ # Print the environment at the beginning of the log file.
+ env_dump = _yaml.roundtrip_dump_string(sandbox._get_configured_environment() or self.get_environment())
+ self.log("Build environment for element {}".format(self.name), detail=env_dump)
+
# Step 2 - Stage
self.__stage(sandbox)
try:
@@ -2037,7 +2037,7 @@ class Element(Plugin):
def _shell(self, scope=None, *, mounts=None, isolate=False, prompt=None, command=None, usebuildtree=False):
with self._prepare_sandbox(scope, shell=True, usebuildtree=usebuildtree) as sandbox:
- environment = self.get_environment()
+ environment = sandbox._get_configured_environment() or self.get_environment()
environment = copy.copy(environment)
flags = _SandboxFlags.INTERACTIVE | _SandboxFlags.ROOT_READ_ONLY
diff --git a/src/buildstream/sandbox/sandbox.py b/src/buildstream/sandbox/sandbox.py
index a503ac9f7..3d3164f67 100644
--- a/src/buildstream/sandbox/sandbox.py
+++ b/src/buildstream/sandbox/sandbox.py
@@ -438,6 +438,16 @@ class Sandbox:
return env
+ # _get_configured_environment()
+ #
+ # Return the environment exactly as configured with `set_environment()`,
+ # or `None` if `set_environment()` has not been called.
+ #
+ # Returns
+ # (Dict[str, str]): The configured environment
+ def _get_configured_environment(self):
+ return self.__env
+
# _get_work_directory()
#
# Fetches the working directory for running commands