You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by tv...@apache.org on 2022/08/04 06:52:51 UTC

[buildstream] 03/03: element.py: Ignore environment/sandbox config when not running sandbox

This is an automated email from the ASF dual-hosted git repository.

tvb pushed a commit to branch tristan/light-cache-keys-without-sandbox-run
in repository https://gitbox.apache.org/repos/asf/buildstream.git

commit 170ca059b34054f319ec94eda636bf2d6df49f26
Author: Tristan van Berkom <tr...@codethink.co.uk>
AuthorDate: Thu Aug 4 15:46:24 2022 +0900

    element.py: Ignore environment/sandbox config when not running sandbox
    
    When calculating the cache key, we can ignore sandbox related materials
    when the plugin has specified BST_RUN_COMMANDS as False.
    
    Fixes #1687
    
    This patch also fixes cache key and completions tests which rely
    on stable cache keys.
---
 src/buildstream/element.py                        | 13 +++++++------
 tests/cachekey/project/elements/compose1.expected |  2 +-
 tests/cachekey/project/elements/compose2.expected |  2 +-
 tests/cachekey/project/elements/compose3.expected |  2 +-
 tests/cachekey/project/elements/compose4.expected |  2 +-
 tests/cachekey/project/elements/compose5.expected |  2 +-
 tests/cachekey/project/elements/import1.expected  |  2 +-
 tests/cachekey/project/elements/import2.expected  |  2 +-
 tests/cachekey/project/elements/import3.expected  |  2 +-
 tests/cachekey/project/elements/script1.expected  |  2 +-
 tests/cachekey/project/sources/local1.expected    |  2 +-
 tests/cachekey/project/sources/local2.expected    |  2 +-
 tests/cachekey/project/sources/remote1.expected   |  2 +-
 tests/cachekey/project/sources/remote2.expected   |  2 +-
 tests/cachekey/project/sources/tar1.expected      |  2 +-
 tests/cachekey/project/sources/tar2.expected      |  2 +-
 tests/cachekey/project/target.expected            |  2 +-
 tests/frontend/completions.py                     |  4 ++--
 18 files changed, 25 insertions(+), 24 deletions(-)

diff --git a/src/buildstream/element.py b/src/buildstream/element.py
index 9a2b1bc2f..d96d22276 100644
--- a/src/buildstream/element.py
+++ b/src/buildstream/element.py
@@ -2209,9 +2209,6 @@ class Element(Plugin):
 
         # Generate dict that is used as base for all cache keys
         if self.__cache_key_dict is None:
-            # Filter out nocache variables from the element's environment
-            cache_env = {key: value for key, value in self.__environment.items() if key not in self.__env_nocache}
-
             project = self._get_project()
 
             self.__cache_key_dict = {
@@ -2220,15 +2217,19 @@ class Element(Plugin):
                 "element-plugin-key": self.get_unique_key(),
                 "element-plugin-name": self.get_kind(),
                 "element-plugin-version": self.BST_ARTIFACT_VERSION,
-                "sandbox": self.__sandbox_config.to_dict(),
-                "environment": cache_env,
                 "public": self.__public.strip_node_info(),
             }
 
             self.__cache_key_dict["sources"] = self.__sources.get_unique_key()
-
             self.__cache_key_dict["fatal-warnings"] = sorted(project._fatal_warnings)
 
+            # Calculate sandbox related factors if this element runs the sandbox at assemble time.
+            if self.BST_RUN_COMMANDS:
+                # Filter out nocache variables from the element's environment
+                cache_env = {key: value for key, value in self.__environment.items() if key not in self.__env_nocache}
+                self.__cache_key_dict["sandbox"] = self.__sandbox_config.to_dict()
+                self.__cache_key_dict["environment"] = cache_env
+
         cache_key_dict = self.__cache_key_dict.copy()
         cache_key_dict["dependencies"] = dependencies
         if weak_cache_key is not None:
diff --git a/tests/cachekey/project/elements/compose1.expected b/tests/cachekey/project/elements/compose1.expected
index 8f769e5a3..35987acee 100644
--- a/tests/cachekey/project/elements/compose1.expected
+++ b/tests/cachekey/project/elements/compose1.expected
@@ -1 +1 @@
-79741eae7ac50457a67f06d2913f549080739dada5033b3015fb68b494536c5a
\ No newline at end of file
+d988151c1dace281305f6ca7933eb41dda658fc782220057d451e5151f4bff5a
\ No newline at end of file
diff --git a/tests/cachekey/project/elements/compose2.expected b/tests/cachekey/project/elements/compose2.expected
index 1d1db3916..af8bb27ad 100644
--- a/tests/cachekey/project/elements/compose2.expected
+++ b/tests/cachekey/project/elements/compose2.expected
@@ -1 +1 @@
-329f4ff2c3855f541ff2f85d0ba5ad4a87c73610914f84483c8462b095a8007e
\ No newline at end of file
+e5fd47fa23897007cb341e36b2a5466d29c17e49bbee84dcf2096a086ebbdac5
\ No newline at end of file
diff --git a/tests/cachekey/project/elements/compose3.expected b/tests/cachekey/project/elements/compose3.expected
index d56d56743..a03e50bbb 100644
--- a/tests/cachekey/project/elements/compose3.expected
+++ b/tests/cachekey/project/elements/compose3.expected
@@ -1 +1 @@
-db8429d5f2a87335cfb3ca005b13a12267b3ba4ef369c72ee2d6dd237c4cf12a
\ No newline at end of file
+5faf568f052b3228f516a453c3030eaaac3ab0fd9a1328cb9ed2bae4a47dc556
\ No newline at end of file
diff --git a/tests/cachekey/project/elements/compose4.expected b/tests/cachekey/project/elements/compose4.expected
index f7c85c155..682ac721f 100644
--- a/tests/cachekey/project/elements/compose4.expected
+++ b/tests/cachekey/project/elements/compose4.expected
@@ -1 +1 @@
-fff3c6f147a40ba9b47a4f6b39fc307934db891659d3d06258ab4b2458a5650f
\ No newline at end of file
+36f1d380ed1f0a7bbff7293ebccf2d8576d3ed72c0d7972647380fe1fa99c558
\ No newline at end of file
diff --git a/tests/cachekey/project/elements/compose5.expected b/tests/cachekey/project/elements/compose5.expected
index 57ddda2b4..0d197358c 100644
--- a/tests/cachekey/project/elements/compose5.expected
+++ b/tests/cachekey/project/elements/compose5.expected
@@ -1 +1 @@
-7040e4b5a4b82f2c4c511e62a125239dbb07ac171673ba167ab9e39d4e491763
\ No newline at end of file
+3288288fdb32362f0e31693ec409716d6b2bb9a4e3e8dbbeeb5825563975847f
\ No newline at end of file
diff --git a/tests/cachekey/project/elements/import1.expected b/tests/cachekey/project/elements/import1.expected
index a3133ccf6..c8c46da46 100644
--- a/tests/cachekey/project/elements/import1.expected
+++ b/tests/cachekey/project/elements/import1.expected
@@ -1 +1 @@
-3b62fa381e9183353cac12f8e6ced23ea42931ed4f89ffe24625b6ec9f236ab5
\ No newline at end of file
+e2cfd9de891398c17f12197b9d2dfe94ed6549de9fadf224ec4b9f406e5f2031
\ No newline at end of file
diff --git a/tests/cachekey/project/elements/import2.expected b/tests/cachekey/project/elements/import2.expected
index 4d32ff091..865ebd351 100644
--- a/tests/cachekey/project/elements/import2.expected
+++ b/tests/cachekey/project/elements/import2.expected
@@ -1 +1 @@
-abeff9a432127674cff36acb36f45cd2665eebf75b589693db6676885e37c59c
\ No newline at end of file
+06f02cbfa4fa5d72026827847e66bf5e3c6d30944787f88631be50b20902c2c9
\ No newline at end of file
diff --git a/tests/cachekey/project/elements/import3.expected b/tests/cachekey/project/elements/import3.expected
index 0fc1c1f9a..3b400892e 100644
--- a/tests/cachekey/project/elements/import3.expected
+++ b/tests/cachekey/project/elements/import3.expected
@@ -1 +1 @@
-f2c5ae1c73a0d8abfbffb36b09bd74929e9b680bdb548f5faa1213a4c0423fe8
\ No newline at end of file
+e8d743e221d0e869714fb12770754998d3510cd0fbd6cde4dd789feeee383782
\ No newline at end of file
diff --git a/tests/cachekey/project/elements/script1.expected b/tests/cachekey/project/elements/script1.expected
index 2eeb3e0f8..7c22cbeaa 100644
--- a/tests/cachekey/project/elements/script1.expected
+++ b/tests/cachekey/project/elements/script1.expected
@@ -1 +1 @@
-eb81c0dfd2432b1ebf0bb052d6fa3a529438614c00210cfdc276bbcc2f3045d5
\ No newline at end of file
+e3c1c920d3b471d787c8d973000c82c8343c52dd199672a4d72ea6df1f9aa7e1
\ No newline at end of file
diff --git a/tests/cachekey/project/sources/local1.expected b/tests/cachekey/project/sources/local1.expected
index 44f8f9915..cb41a9472 100644
--- a/tests/cachekey/project/sources/local1.expected
+++ b/tests/cachekey/project/sources/local1.expected
@@ -1 +1 @@
-8f60074539dab1c95cca763c690b2afb8d4edc07810765d6439a9024330d9178
\ No newline at end of file
+a634f2b3ac93efda9e6698283d69cfa43520cda4cc3d4ef7ca2313da67c01f59
\ No newline at end of file
diff --git a/tests/cachekey/project/sources/local2.expected b/tests/cachekey/project/sources/local2.expected
index 14051f1a5..133d8a8ec 100644
--- a/tests/cachekey/project/sources/local2.expected
+++ b/tests/cachekey/project/sources/local2.expected
@@ -1 +1 @@
-0158be74cc02831a535ebd72326a663c36e79764a99e19462d617f2f538934a4
\ No newline at end of file
+1f32c7ba211fa660cb84ef7dc85abfdb417a199eb3f99574650b3d9e0a009c5c
\ No newline at end of file
diff --git a/tests/cachekey/project/sources/remote1.expected b/tests/cachekey/project/sources/remote1.expected
index 0b9f80703..b8ae3b280 100644
--- a/tests/cachekey/project/sources/remote1.expected
+++ b/tests/cachekey/project/sources/remote1.expected
@@ -1 +1 @@
-296efa9843a3ec0fd016c5e3a14ea04d7f712988af01cc85909f625f76903fcb
\ No newline at end of file
+f9ac5d3d38d30c1ce921de3a6f094e2732d0e82533f59338edb9d11854921462
\ No newline at end of file
diff --git a/tests/cachekey/project/sources/remote2.expected b/tests/cachekey/project/sources/remote2.expected
index 6388e4b31..19014f2b2 100644
--- a/tests/cachekey/project/sources/remote2.expected
+++ b/tests/cachekey/project/sources/remote2.expected
@@ -1 +1 @@
-d3ad2e9bca5dcc8bb915938f0fcfd118ec1a38e4644a416898bc4b40ddfc7997
\ No newline at end of file
+24971a99aa5a88f92bc99e3e0497b8b9603c06fd5a676e8d887a01d21d9d6abb
\ No newline at end of file
diff --git a/tests/cachekey/project/sources/tar1.expected b/tests/cachekey/project/sources/tar1.expected
index 7be4f284d..4bb7bafa4 100644
--- a/tests/cachekey/project/sources/tar1.expected
+++ b/tests/cachekey/project/sources/tar1.expected
@@ -1 +1 @@
-e4f2bd7e23727048719100b217afe9dd9e84873d9a0a863945a17bc0334057aa
\ No newline at end of file
+ff706f0713c9399e00bfb39518c8af3887c03d022d2eca076b7dfeb47cb1d036
\ No newline at end of file
diff --git a/tests/cachekey/project/sources/tar2.expected b/tests/cachekey/project/sources/tar2.expected
index 603b07be7..1d1fac3d6 100644
--- a/tests/cachekey/project/sources/tar2.expected
+++ b/tests/cachekey/project/sources/tar2.expected
@@ -1 +1 @@
-29214222df2cb44b807621dbcef679d420a9ac70be06c62977effd09729b19ac
\ No newline at end of file
+1d8c2a1eca7460f3d925207ee1a44d24bccbccc1e4851bda924c502d1e8e4c4d
\ No newline at end of file
diff --git a/tests/cachekey/project/target.expected b/tests/cachekey/project/target.expected
index 524b42a74..943c55ea0 100644
--- a/tests/cachekey/project/target.expected
+++ b/tests/cachekey/project/target.expected
@@ -1 +1 @@
-94d8bb8fa9545152d59e4b9e141feb2c6190576457350cc6335186b024e99967
\ No newline at end of file
+6b7b400c0b70a2867fc80537428c25c6b4c9d2cdc69cd6273c06420f8248b292
\ No newline at end of file
diff --git a/tests/frontend/completions.py b/tests/frontend/completions.py
index ae289b5fd..22a4aaa12 100644
--- a/tests/frontend/completions.py
+++ b/tests/frontend/completions.py
@@ -340,8 +340,8 @@ def test_argument_artifact(cli, datafiles):
 
     # Use hard coded artifact names, cache keys should be stable now
     artifacts = [
-        "test/import-bin/cb0c8c2e1881b09338aa3f533d224f83f06bdf263523d04ee197232c74f09357",
-        "test/import-bin/edcfeda7d52c6bb77e632e31bd8ba40122125b2f50553b57c34947aa5fa709df",
+        "test/import-bin/2d14f24a0ab37ef86d8486140492cd75e9aee02f400b065548029643e4b13801",
+        "test/import-bin/7e01ad96507e126a81847c21528bbf8d87c7a9f6a251e8a7e0a6b71e38edf315",
     ]
 
     # Test autocompletion of the artifact