summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarius Makovsky <traveltissues@protonmail.com>2019-11-04 11:47:01 +0000
committerDarius Makovsky <traveltissues@protonmail.com>2019-11-04 14:07:38 +0000
commit1a1d4592d32d96604aa72bc169388a8f5e42238d (patch)
tree7c062bca73572e9baa2114145474dfc5f66a89e8
parent861f9636a503f6dbd5acc132e2f8ba6743762216 (diff)
downloadbuildstream-traveltissues/splitdepkeys.tar.gz
[WIP]Split dependencies into dependency-names and dependency-keystraveltissues/splitdepkeys
In Element._calculate_cache_key the dependency field of the cache key dictionary is replaced with the dependency-names field and the dependency-keys field. The first is only populated in the case where the weak dependencies are passed and the second is only populated when the strong dependencies are passed. Additionally, in the case where the element holds at least one source advertising BST_NO_REF, the new fields are both initialised to `[]` in order to correctly update dependencies. Failing to reinitialise dependency fields in this case will lead to erroneous dependencies from old states of BST_NO_REF sources.
-rw-r--r--src/buildstream/element.py15
-rw-r--r--tests/cachekey/project/elements/build1.expected2
-rw-r--r--tests/cachekey/project/elements/build2.expected2
-rw-r--r--tests/cachekey/project/elements/compose1.expected2
-rw-r--r--tests/cachekey/project/elements/compose2.expected2
-rw-r--r--tests/cachekey/project/elements/compose3.expected2
-rw-r--r--tests/cachekey/project/elements/compose4.expected2
-rw-r--r--tests/cachekey/project/elements/compose5.expected2
-rw-r--r--tests/cachekey/project/elements/import1.expected2
-rw-r--r--tests/cachekey/project/elements/import2.expected2
-rw-r--r--tests/cachekey/project/elements/import3.expected2
-rw-r--r--tests/cachekey/project/elements/script1.expected2
-rw-r--r--tests/cachekey/project/sources/bzr1.expected2
-rw-r--r--tests/cachekey/project/sources/git1.expected2
-rw-r--r--tests/cachekey/project/sources/git2.expected2
-rw-r--r--tests/cachekey/project/sources/git3.expected2
-rw-r--r--tests/cachekey/project/sources/local1.expected2
-rw-r--r--tests/cachekey/project/sources/local2.expected2
-rw-r--r--tests/cachekey/project/sources/patch1.expected2
-rw-r--r--tests/cachekey/project/sources/patch2.expected2
-rw-r--r--tests/cachekey/project/sources/patch3.expected2
-rw-r--r--tests/cachekey/project/sources/pip1.expected2
-rw-r--r--tests/cachekey/project/sources/remote1.expected2
-rw-r--r--tests/cachekey/project/sources/remote2.expected2
-rw-r--r--tests/cachekey/project/sources/tar1.expected2
-rw-r--r--tests/cachekey/project/sources/tar2.expected2
-rw-r--r--tests/cachekey/project/sources/zip1.expected2
-rw-r--r--tests/cachekey/project/sources/zip2.expected2
-rw-r--r--tests/cachekey/project/target.expected2
29 files changed, 38 insertions, 33 deletions
diff --git a/src/buildstream/element.py b/src/buildstream/element.py
index 0efb6b48c..6bb00d393 100644
--- a/src/buildstream/element.py
+++ b/src/buildstream/element.py
@@ -258,6 +258,7 @@ class Element(Plugin):
self.__cached_remotely = None # Whether the element is cached remotely
# List of Sources
self.__sources = [] # type: List[Source]
+ self.__has_no_ref_source = False # at least one of the sources advertises BST_NO_REF = True
self.__weak_cache_key = None # Our cached weak cache key
self.__strict_cache_key = None # Our cached cache key for strict builds
self.__artifacts = context.artifactcache # Artifact cache
@@ -2167,6 +2168,8 @@ class Element(Plugin):
self.__cache_key_dict['sources'] = []
for source in self.__sources:
+ if source.BST_NO_REF:
+ self.__has_no_ref_source = True
self.__cache_key_dict['sources'].append(
{'key': source._get_unique_key(),
'name': source._get_source_name()})
@@ -2174,13 +2177,15 @@ class Element(Plugin):
self.__cache_key_dict['fatal-warnings'] = sorted(project._fatal_warnings)
cache_key_dict = self.__cache_key_dict.copy()
- cache_key_dict['dependency-keys-strong'] = []
- cache_key_dict['dependency-keys-weak'] = []
- if dep_strength == _KeyStrength.WEAK:
- cache_key_dict['dependency-keys-weak'] = dependencies
+ if self.__has_no_ref_source:
+ cache_key_dict['dependency-names'] = []
+ cache_key_dict['dependency-keys'] = []
+
+ if dep_strength == _KeyStrength.WEAK and not self.BST_STRICT_REBUILD:
+ cache_key_dict['dependency-names'] = dependencies
else:
- cache_key_dict['dependency-keys-strong'] = dependencies
+ cache_key_dict['dependency-keys'] = dependencies
return _cachekey.generate_key(cache_key_dict)
diff --git a/tests/cachekey/project/elements/build1.expected b/tests/cachekey/project/elements/build1.expected
index 4044df2c9..75c153f89 100644
--- a/tests/cachekey/project/elements/build1.expected
+++ b/tests/cachekey/project/elements/build1.expected
@@ -1 +1 @@
-5428a5de8a9b26513aacc1f319723f601ea15ab9287ce1797cf8104029d22e8d \ No newline at end of file
+e4b9bbba1474716bb37f24f1a8ad83cef839143dd5528c43c5d090a5a21a5822 \ No newline at end of file
diff --git a/tests/cachekey/project/elements/build2.expected b/tests/cachekey/project/elements/build2.expected
index 85f8ffd44..c9be79514 100644
--- a/tests/cachekey/project/elements/build2.expected
+++ b/tests/cachekey/project/elements/build2.expected
@@ -1 +1 @@
-f1eae5a7b0ebb147fc3e910d9f802553c79242af6d2901b7e9386768531a0951 \ No newline at end of file
+bddd914705a53691fd93cd39cc11f24d13d5c22d38fe5385dee5f984774eecb0 \ No newline at end of file
diff --git a/tests/cachekey/project/elements/compose1.expected b/tests/cachekey/project/elements/compose1.expected
index c13c9ddd6..d6e699451 100644
--- a/tests/cachekey/project/elements/compose1.expected
+++ b/tests/cachekey/project/elements/compose1.expected
@@ -1 +1 @@
-21eab9c3f5f64f06a86b206b489282c36d2730af751790e25c32db288530ac51 \ No newline at end of file
+65879fc4348dcdfd4ae37e5f993a65a0863433f28de4250cc7ae599ef59d555a \ No newline at end of file
diff --git a/tests/cachekey/project/elements/compose2.expected b/tests/cachekey/project/elements/compose2.expected
index ace86d0ca..769d2a9a8 100644
--- a/tests/cachekey/project/elements/compose2.expected
+++ b/tests/cachekey/project/elements/compose2.expected
@@ -1 +1 @@
-428aadf565b5677c4d08bcba0d61f61877dce32c85d4b1c361839c5c8f95f230 \ No newline at end of file
+37e7f56c8d619bfb5ddcd7be197f4f69477b00b9f09819455796a68c41fb1080 \ No newline at end of file
diff --git a/tests/cachekey/project/elements/compose3.expected b/tests/cachekey/project/elements/compose3.expected
index 5d818c0d3..9239d3bfd 100644
--- a/tests/cachekey/project/elements/compose3.expected
+++ b/tests/cachekey/project/elements/compose3.expected
@@ -1 +1 @@
-f4ba0e2ca52dcada647e1d67f4d08211b2136833ac88dc390f4cade069893540 \ No newline at end of file
+8b1910c7018e2f0d7a613530c9e40b4d8ac5a43f0dbc06ddcacd8498ae46c89e \ No newline at end of file
diff --git a/tests/cachekey/project/elements/compose4.expected b/tests/cachekey/project/elements/compose4.expected
index 73c199427..76968d85c 100644
--- a/tests/cachekey/project/elements/compose4.expected
+++ b/tests/cachekey/project/elements/compose4.expected
@@ -1 +1 @@
-df638236726329e1bccb268b2b222559f6bb5e38b1d8621caef040c4ef9336c4 \ No newline at end of file
+1d0257a9b882bb072cfc56d369ae2531692ec265e261e0bff38349e94038d669 \ No newline at end of file
diff --git a/tests/cachekey/project/elements/compose5.expected b/tests/cachekey/project/elements/compose5.expected
index 8f8c72977..437004bd9 100644
--- a/tests/cachekey/project/elements/compose5.expected
+++ b/tests/cachekey/project/elements/compose5.expected
@@ -1 +1 @@
-7ad4ce5aedcaa7e0f25cb31c4e6016fb547df90b62dc1e1c6cf9eb37dbf12462 \ No newline at end of file
+64230eb1aff83451470cd5195ad06a17bb78da456270e38154e61d053ecf4018 \ No newline at end of file
diff --git a/tests/cachekey/project/elements/import1.expected b/tests/cachekey/project/elements/import1.expected
index ad2e9a9d8..8410d2fcb 100644
--- a/tests/cachekey/project/elements/import1.expected
+++ b/tests/cachekey/project/elements/import1.expected
@@ -1 +1 @@
-8f05d68de71fbd70661eb4a3516189d754c9ee76af42eff93ed9cde6c441e257 \ No newline at end of file
+d5ee4030265fdfd217ddd63e78d726f76a48729edf2fad3e38e2a27c41747838 \ No newline at end of file
diff --git a/tests/cachekey/project/elements/import2.expected b/tests/cachekey/project/elements/import2.expected
index 179a86778..6839ad95f 100644
--- a/tests/cachekey/project/elements/import2.expected
+++ b/tests/cachekey/project/elements/import2.expected
@@ -1 +1 @@
-df9c8856a0e652bacbee483ec115e61336bad7d008bcbb8b31cc604a819c9b3a \ No newline at end of file
+597f0b2b8060cdfd7c5865b41163d3ff060a9ec35e6dd55c75c8c08c1d4fe6b0 \ No newline at end of file
diff --git a/tests/cachekey/project/elements/import3.expected b/tests/cachekey/project/elements/import3.expected
index 10b9216f5..896fbd460 100644
--- a/tests/cachekey/project/elements/import3.expected
+++ b/tests/cachekey/project/elements/import3.expected
@@ -1 +1 @@
-7afb1275c1d5f2e019ab6319dcd19447fcebd2f587a4aba9f25d86fd8df93d75 \ No newline at end of file
+445a240fafb2806ac396b19c1a22d4c98daef830f03f557deb1d33c00c1bc9ed \ No newline at end of file
diff --git a/tests/cachekey/project/elements/script1.expected b/tests/cachekey/project/elements/script1.expected
index ec6dc0a01..87ab8698f 100644
--- a/tests/cachekey/project/elements/script1.expected
+++ b/tests/cachekey/project/elements/script1.expected
@@ -1 +1 @@
-249d98e96abd7e23fc5587eab5a5f94eee116c35a02a6968b28ff7845a9d8b0d \ No newline at end of file
+3830801f89cad317d7c4ae3ed6c8232269a106f98a3eb0b63cd67779703ec49b \ No newline at end of file
diff --git a/tests/cachekey/project/sources/bzr1.expected b/tests/cachekey/project/sources/bzr1.expected
index 069881cfb..25dfb85ab 100644
--- a/tests/cachekey/project/sources/bzr1.expected
+++ b/tests/cachekey/project/sources/bzr1.expected
@@ -1 +1 @@
-cb1e72ea1b5d842010d056498a86bc3c3302a1b9919f7285da9329fffe556187 \ No newline at end of file
+63fde363b4bd14bc3956480e3f6174473da23f3079fa80f6122e6e9eac764155 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/git1.expected b/tests/cachekey/project/sources/git1.expected
index 482ed50c9..8b13262f7 100644
--- a/tests/cachekey/project/sources/git1.expected
+++ b/tests/cachekey/project/sources/git1.expected
@@ -1 +1 @@
-b61a46d4effd5501f0553b1eedfd24220912102370e9be7b489159cd1e02d47f \ No newline at end of file
+45b6c44d93d39eb3a2ba0a3141d3a979d669191aacb8479343a87d499766b95a \ No newline at end of file
diff --git a/tests/cachekey/project/sources/git2.expected b/tests/cachekey/project/sources/git2.expected
index 1591ef3c5..c39f7af6b 100644
--- a/tests/cachekey/project/sources/git2.expected
+++ b/tests/cachekey/project/sources/git2.expected
@@ -1 +1 @@
-878922a1112f47701bf05a9ee752b331463fca98580e88dcac5c4d90897a181a \ No newline at end of file
+accd48003ce58abb5a040e86c06b916e391aa6a39ab6c574316287deb2a21e1e \ No newline at end of file
diff --git a/tests/cachekey/project/sources/git3.expected b/tests/cachekey/project/sources/git3.expected
index dbe658b90..f87f320eb 100644
--- a/tests/cachekey/project/sources/git3.expected
+++ b/tests/cachekey/project/sources/git3.expected
@@ -1 +1 @@
-4363cd830fd28b8b20354b8e2643e2f55e99afc0328f26ae3af8a049b5fdafb2 \ No newline at end of file
+e64e9be7741d58ec0e3ca6cee6372c77a78cb0b9dd49913da3da10f2e9c6f429 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/local1.expected b/tests/cachekey/project/sources/local1.expected
index ad2e9a9d8..8410d2fcb 100644
--- a/tests/cachekey/project/sources/local1.expected
+++ b/tests/cachekey/project/sources/local1.expected
@@ -1 +1 @@
-8f05d68de71fbd70661eb4a3516189d754c9ee76af42eff93ed9cde6c441e257 \ No newline at end of file
+d5ee4030265fdfd217ddd63e78d726f76a48729edf2fad3e38e2a27c41747838 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/local2.expected b/tests/cachekey/project/sources/local2.expected
index 713581851..638d2d3fe 100644
--- a/tests/cachekey/project/sources/local2.expected
+++ b/tests/cachekey/project/sources/local2.expected
@@ -1 +1 @@
-4c2f914ab71bae44c21c72768bed96a7a27bd4426ac651093ad07566e948a62d \ No newline at end of file
+22b34c80285b24e8c68dcdfacdd3bbb0f34707dbf5d6e620ac0153b3b203f60a \ No newline at end of file
diff --git a/tests/cachekey/project/sources/patch1.expected b/tests/cachekey/project/sources/patch1.expected
index d13e6c13f..6b6d809b2 100644
--- a/tests/cachekey/project/sources/patch1.expected
+++ b/tests/cachekey/project/sources/patch1.expected
@@ -1 +1 @@
-2bfdd9b55896b4287bac41cc57974eb266bacd21dc1e8a7eb78417cdaf17dd3d \ No newline at end of file
+beef0339dd6c1546f18b84814d21eea48e44d7587c6539a64959938ced91c945 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/patch2.expected b/tests/cachekey/project/sources/patch2.expected
index 8826ab3f5..0bf1e28a8 100644
--- a/tests/cachekey/project/sources/patch2.expected
+++ b/tests/cachekey/project/sources/patch2.expected
@@ -1 +1 @@
-666d87ff1fcf238c1cc621d850be8d7b955990579c63c18797fb022ea46e0150 \ No newline at end of file
+1afe4af8ed15abd5d930889dc8c303551a1d6a64293be4fc0ba184d16ce78280 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/patch3.expected b/tests/cachekey/project/sources/patch3.expected
index 83f4292f9..004b25898 100644
--- a/tests/cachekey/project/sources/patch3.expected
+++ b/tests/cachekey/project/sources/patch3.expected
@@ -1 +1 @@
-9bb2454bd6a8a2af627d304045d48d5587cca32cd802216b8b67c83c7da049b5 \ No newline at end of file
+7028b5eff533e2a02c1b1241c1ccabc339f1b269052bda3c98a0870029e0ed34 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/pip1.expected b/tests/cachekey/project/sources/pip1.expected
index d09d8d6aa..81c869091 100644
--- a/tests/cachekey/project/sources/pip1.expected
+++ b/tests/cachekey/project/sources/pip1.expected
@@ -1 +1 @@
-877660711746453066c7a780b23aeee81961a510eb6405d55d24d9880e18d277 \ No newline at end of file
+7753ff309c4a5d96bfc05389bdc08a8c154028ac592350d1c8b9a3067a84c557 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/remote1.expected b/tests/cachekey/project/sources/remote1.expected
index e25a282b8..d14e1b761 100644
--- a/tests/cachekey/project/sources/remote1.expected
+++ b/tests/cachekey/project/sources/remote1.expected
@@ -1 +1 @@
-ddeb5f82ef95533d863883546d1579e1cd3882459aec8e0bb8e9948143204d00 \ No newline at end of file
+fe5e2754b6fc914ee4c115df12bc697280acadf1901a1f629b00d291b393b519 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/remote2.expected b/tests/cachekey/project/sources/remote2.expected
index 5c68f919c..02dadc9fb 100644
--- a/tests/cachekey/project/sources/remote2.expected
+++ b/tests/cachekey/project/sources/remote2.expected
@@ -1 +1 @@
-fb7a50cf67554963126b698ce0f9c175c8992472b3d1e34ed27b10e6db2b465b \ No newline at end of file
+6613a5e861097054492cb5d2f9acd44f3ad1227a835867bcef4cddc3197ef4de \ No newline at end of file
diff --git a/tests/cachekey/project/sources/tar1.expected b/tests/cachekey/project/sources/tar1.expected
index 0ea93ca03..711582ed8 100644
--- a/tests/cachekey/project/sources/tar1.expected
+++ b/tests/cachekey/project/sources/tar1.expected
@@ -1 +1 @@
-4609c3c0f007ac68d801e2893cd8ccce57b4b374fe800c8eef26d5dc95993d0d \ No newline at end of file
+941705647f14e5853b42ad89277cba461e6b119d382994f7d2046ab15dd729e3 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/tar2.expected b/tests/cachekey/project/sources/tar2.expected
index 84ffefa8b..4694a2265 100644
--- a/tests/cachekey/project/sources/tar2.expected
+++ b/tests/cachekey/project/sources/tar2.expected
@@ -1 +1 @@
-1b5a123bc483b3350c1e26573a70311956c7c2ccadb14ddc758b3329020c3ee0 \ No newline at end of file
+1400e784b1419361cda94586065ed8fe128429ab9e31feb789297cf2ccfd0df8 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/zip1.expected b/tests/cachekey/project/sources/zip1.expected
index ecb6c5167..dd38d767f 100644
--- a/tests/cachekey/project/sources/zip1.expected
+++ b/tests/cachekey/project/sources/zip1.expected
@@ -1 +1 @@
-45f3248e0d4d4c8872927d6a76f730afce3655b5204b484a10eedaa3a39cdd4a \ No newline at end of file
+422d9b2aba7113634d0108202b1421cba20c52a704f607dcc423385a3f5e36b2 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/zip2.expected b/tests/cachekey/project/sources/zip2.expected
index 68ffc9fc3..390540e38 100644
--- a/tests/cachekey/project/sources/zip2.expected
+++ b/tests/cachekey/project/sources/zip2.expected
@@ -1 +1 @@
-9c041e467499a1849f02e78cec5af73c5d8e8440bdab3abba131fa620379239b \ No newline at end of file
+31b6d65dc5a22173764a09421e612c6b4b46d00e22c0299c9dfd7be1971c5499 \ No newline at end of file
diff --git a/tests/cachekey/project/target.expected b/tests/cachekey/project/target.expected
index cf0e262ae..c43fedde2 100644
--- a/tests/cachekey/project/target.expected
+++ b/tests/cachekey/project/target.expected
@@ -1 +1 @@
-bf4f53d434bf0c140007a270c9787fe3b67ce3e09dd2fe168de742990d900e01 \ No newline at end of file
+b6a4b6dbbde547f2dd3e634a108f25759d14cf621ca4b213cfafe5b0501b73fe \ No newline at end of file