summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2020-08-19 11:30:15 +0200
committerJürg Billeter <j@bitron.ch>2020-09-03 14:12:02 +0200
commit7df5e40e8673b8a59a93cfdf2685cf120d6a98db (patch)
tree603273d7e4d334748c4dd52c2bdc5da0232e6be4
parent7175dbb76aab99935a4e3f5884bac9451bfb655e (diff)
downloadbuildstream-juerg/element-source-cache.tar.gz
Move handling of the source `directory` configuration to ElementSourcesjuerg/element-source-cache
The `directory` value determines where a source is staged within the build root of an element, however, it does not directly affect individual sources. With this change the sources will individually be cached in CAS independent of the value of `directory`. `ElementSources` will use the value of `directory` when staging all element sources into the build root. This results in a cache key change as the `directory` value is moved from the unique key of individual sources to the unique key of `ElementSources`. This is in preparation for #1274.
-rw-r--r--src/buildstream/_elementsources.py97
-rw-r--r--src/buildstream/source.py95
-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
30 files changed, 120 insertions, 128 deletions
diff --git a/src/buildstream/_elementsources.py b/src/buildstream/_elementsources.py
index 5fc412f6b..c030591f8 100644
--- a/src/buildstream/_elementsources.py
+++ b/src/buildstream/_elementsources.py
@@ -15,6 +15,8 @@
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
+import os
+from contextlib import contextmanager
from typing import TYPE_CHECKING, Iterator
from . import _cachekey, utils
@@ -48,10 +50,6 @@ class ElementSources:
self._cache_key = None # Our cached cache key
self._proto = None # The cached Source proto
- # the index of the last source in this element that requires previous
- # sources for staging
- self._last_source_requires_previous_idx = None
-
# get_project():
#
# Return the project associated with this object
@@ -92,9 +90,15 @@ class ElementSources:
#
def track(self, workspace):
refs = []
- for index, source in enumerate(self._sources):
+ for source in self._sources:
old_ref = source.get_ref()
- new_ref = source._track(self._sources[0:index])
+
+ if source.BST_REQUIRES_PREVIOUS_SOURCES_TRACK:
+ with self._stage_previous_sources(source) as staging_directory:
+ new_ref = source._track(previous_sources_dir=staging_directory)
+ else:
+ new_ref = source._track()
+
refs.append((source._unique_id, new_ref))
# Complimentary warning that the new ref will be unused.
@@ -183,7 +187,14 @@ class ElementSources:
#
def init_workspace(self, directory: str):
for source in self.sources():
- source._init_workspace(directory)
+ if source._directory:
+ srcdir = os.path.join(directory, source._directory)
+ else:
+ srcdir = directory
+
+ os.makedirs(srcdir, exist_ok=True)
+
+ source._init_workspace(srcdir)
# fetch():
#
@@ -210,13 +221,16 @@ class ElementSources:
#
# Args:
# fetch_original (bool): Always fetch original source
+ # stop (Source): Only fetch sources listed before this source
#
# Raises:
# SourceError: If one of the element sources has an error
#
- def fetch_sources(self, *, fetch_original=False):
- previous_sources = []
+ def fetch_sources(self, *, fetch_original=False, stop=None):
for source in self._sources:
+ if source == stop:
+ break
+
if (
fetch_original
or source.BST_REQUIRES_PREVIOUS_SOURCES_FETCH
@@ -226,12 +240,10 @@ class ElementSources:
# CAS-based source cache on its own. Fetch original source
# if it's not in the plugin-specific cache yet.
if not source._is_cached():
- source._fetch(previous_sources)
+ self._fetch_original_source(source)
else:
self._fetch_source(source)
- previous_sources.append(source)
-
# get_unique_key():
#
# Return something which uniquely identifies the combined sources of the
@@ -246,7 +258,10 @@ class ElementSources:
result = []
for source in self._sources:
- result.append({"key": source._get_unique_key(), "name": source.get_kind()})
+ key_dict = {"key": source._get_unique_key(), "name": source.get_kind()}
+ if source._directory:
+ key_dict["directory"] = source._directory
+ result.append(key_dict)
return result
@@ -389,34 +404,76 @@ class ElementSources:
# Unable to fetch source from remote source cache, fall back to
# fetching the original source.
- source._fetch([])
+ source._fetch()
# Stage original source into the local CAS-based source cache
self._sourcecache.commit(source)
+ # _fetch_source():
+ #
+ # Fetch a single original source
+ #
+ # Args:
+ # source (Source): The source to fetch
+ #
+ def _fetch_original_source(self, source):
+ if source.BST_REQUIRES_PREVIOUS_SOURCES_FETCH:
+ with self._stage_previous_sources(source) as staging_directory:
+ source._fetch(previous_sources_dir=staging_directory)
+ else:
+ source._fetch()
+
# _stage():
#
# Stage the element sources
#
- def _stage(self):
+ # Args:
+ # stop (Source): Only stage sources listed before this source
+ #
+ def _stage(self, *, stop=None):
vdir = CasBasedDirectory(self._context.get_cascache())
for source in self._sources:
+ if source == stop:
+ break
+
+ if source._directory:
+ vsubdir = vdir.descend(*source._directory.split(os.sep), create=True)
+ else:
+ vsubdir = vdir
+
if source.BST_REQUIRES_PREVIOUS_SOURCES_FETCH or source.BST_REQUIRES_PREVIOUS_SOURCES_STAGE:
if source.BST_STAGE_VIRTUAL_DIRECTORY:
- source._stage(vdir)
+ source._stage(vsubdir)
else:
with utils._tempdir(dir=self._context.tmpdir, prefix="staging-temp") as tmpdir:
# Stage previous sources
- vdir.export_files(tmpdir)
+ vsubdir.export_files(tmpdir)
source._stage(tmpdir)
# Capture modified tree
- vdir._clear()
- vdir.import_files(tmpdir)
+ vsubdir._clear()
+ vsubdir.import_files(tmpdir)
else:
source_dir = self._sourcecache.export(source)
- vdir.import_files(source_dir)
+ vsubdir.import_files(source_dir)
return vdir
+
+ # Context manager that stages sources in a cas based or temporary file
+ # based directory
+ @contextmanager
+ def _stage_previous_sources(self, source):
+ self.fetch_sources(stop=source)
+ vdir = self._stage(stop=source)
+
+ if source._directory:
+ vdir = vdir.descend(*source._directory.split(os.sep), create=True)
+
+ if source.BST_STAGE_VIRTUAL_DIRECTORY:
+ yield vdir
+ else:
+ with source.tempdir() as tempdir:
+ vdir.export_files(tempdir)
+ yield tempdir
diff --git a/src/buildstream/source.py b/src/buildstream/source.py
index d7e6021bc..245c3ca99 100644
--- a/src/buildstream/source.py
+++ b/src/buildstream/source.py
@@ -164,7 +164,7 @@ from typing import Iterable, Iterator, Optional, Tuple, TYPE_CHECKING
from . import _yaml, utils
from .node import MappingNode
from .plugin import Plugin
-from .types import SourceRef, Union, List
+from .types import SourceRef, Union
from ._exceptions import BstError, ImplError, PluginError
from .exceptions import ErrorDomain
from ._loader.metasource import MetaSource
@@ -172,7 +172,7 @@ from ._projectrefs import ProjectRefStorage
from ._cachekey import generate_key
from .storage import CasBasedDirectory
from .storage import FileBasedDirectory
-from .storage.directory import Directory, VirtualDirectoryError
+from .storage.directory import Directory
from ._variables import Variables
if TYPE_CHECKING:
@@ -341,7 +341,7 @@ class Source(Plugin):
self.__element_index = meta.element_index # The index of the source in the owning element's source list
self.__element_kind = meta.element_kind # The kind of the element owning this source
- self.__directory = meta.directory # Staging relative directory
+ self._directory = meta.directory # Staging relative directory
self.__variables = variables # The variables used to resolve the source's config
self.__key = None # Cache key for source
@@ -784,15 +784,11 @@ class Source(Plugin):
# Wrapper function around plugin provided fetch method
#
# Args:
- # previous_sources (list): List of Sources listed prior to this source
- # fetch_original (bool): whether to fetch full source, or use local CAS
+ # previous_sources_dir (str): directory where previous sources are staged
#
- def _fetch(self, previous_sources):
-
+ def _fetch(self, previous_sources_dir=None):
if self.BST_REQUIRES_PREVIOUS_SOURCES_FETCH:
- self.__ensure_previous_sources(previous_sources)
- with self.__stage_previous_sources(previous_sources) as staging_directory:
- self.__do_fetch(previous_sources_dir=self.__ensure_directory(staging_directory))
+ self.__do_fetch(previous_sources_dir=previous_sources_dir)
else:
self.__do_fetch()
@@ -817,8 +813,6 @@ class Source(Plugin):
# 'directory' option
#
def _stage(self, directory):
- directory = self.__ensure_directory(directory)
-
if self.BST_KEY_REQUIRES_STAGE:
# _get_unique_key should be called before _stage
assert self.__digest is not None
@@ -833,8 +827,6 @@ class Source(Plugin):
if self.BST_STAGE_VIRTUAL_DIRECTORY:
directory = FileBasedDirectory(external_directory=directory)
- directory = self.__ensure_directory(directory)
-
self.validate_cache()
self.init_workspace(directory)
@@ -843,13 +835,10 @@ class Source(Plugin):
# Wrapper for get_unique_key() api
#
def _get_unique_key(self):
- key = {}
- key["directory"] = self.__directory
if self.BST_KEY_REQUIRES_STAGE:
- key["unique"] = self._stage_into_cas()
+ return self._stage_into_cas()
else:
- key["unique"] = self.get_unique_key() # pylint: disable=assignment-from-no-return
- return key
+ return self.get_unique_key()
# _project_refs():
#
@@ -1089,18 +1078,16 @@ class Source(Plugin):
# Wrapper for track()
#
# Args:
- # previous_sources (list): List of Sources listed prior to this source
+ # previous_sources_dir (str): directory where previous sources are staged
#
- def _track(self, previous_sources: List["Source"]) -> SourceRef:
+ def _track(self, previous_sources_dir: str = None) -> SourceRef:
if self.BST_KEY_REQUIRES_STAGE:
# ensure that these sources have a key after tracking
- self._get_unique_key()
+ self._generate_key()
return None
if self.BST_REQUIRES_PREVIOUS_SOURCES_TRACK:
- self.__ensure_previous_sources(previous_sources)
- with self.__stage_previous_sources(previous_sources) as staging_directory:
- new_ref = self.__do_track(previous_sources_dir=self.__ensure_directory(staging_directory))
+ new_ref = self.__do_track(previous_sources_dir=previous_sources_dir)
else:
new_ref = self.__do_track()
@@ -1116,6 +1103,8 @@ class Source(Plugin):
# Save ref in local process for subsequent sources
self._set_ref(new_ref, save=False)
+ self._generate_key()
+
return new_ref
# _is_trackable()
@@ -1206,7 +1195,7 @@ class Source(Plugin):
self.__element_kind,
self.get_kind(),
self.__config,
- self.__directory,
+ self._directory,
self.__first_pass,
)
@@ -1221,24 +1210,6 @@ class Source(Plugin):
return clone
- # Context manager that stages sources in a cas based or temporary file
- # based directory
- @contextmanager
- def __stage_previous_sources(self, sources):
- with self.tempdir() as tempdir:
- directory = FileBasedDirectory(external_directory=tempdir)
-
- for src in sources:
- if src.BST_STAGE_VIRTUAL_DIRECTORY:
- src._stage(directory)
- else:
- src._stage(tempdir)
-
- if self.BST_STAGE_VIRTUAL_DIRECTORY:
- yield directory
- else:
- yield tempdir
-
# Tries to call fetch for every mirror, stopping once it succeeds
def __do_fetch(self, **kwargs):
project = self._get_project()
@@ -1341,31 +1312,6 @@ class Source(Plugin):
return ref
raise last_error
- # Ensures a fully constructed path and returns it
- def __ensure_directory(self, directory):
-
- if not isinstance(directory, Directory):
- if self.__directory is not None:
- directory = os.path.join(directory, self.__directory.lstrip(os.sep))
-
- try:
- os.makedirs(directory, exist_ok=True)
- except OSError as e:
- raise SourceError(
- "Failed to create staging directory: {}".format(e), reason="ensure-stage-dir-fail"
- ) from e
-
- else:
- if self.__directory is not None:
- try:
- directory = directory.descend(*self.__directory.lstrip(os.sep).split(os.sep), create=True)
- except VirtualDirectoryError as e:
- raise SourceError(
- "Failed to descend into staging directory: {}".format(e), reason="ensure-stage-dir-fail"
- ) from e
-
- return directory
-
@classmethod
def __init_defaults(cls, project, meta):
if cls.__defaults is None:
@@ -1388,17 +1334,6 @@ class Source(Plugin):
return config
- # Ensures that previous sources have been tracked and fetched.
- #
- def __ensure_previous_sources(self, previous_sources):
- for index, src in enumerate(previous_sources):
- # BuildStream should track sources in the order they appear so
- # previous sources should never be in an inconsistent state
- assert src.is_resolved()
-
- if not src._is_cached():
- src._fetch(previous_sources[0:index])
-
def _extract_alias(url):
parts = url.split(utils._ALIAS_SEPARATOR, 1)
diff --git a/tests/cachekey/project/elements/build1.expected b/tests/cachekey/project/elements/build1.expected
index ea0e6149b..71113a494 100644
--- a/tests/cachekey/project/elements/build1.expected
+++ b/tests/cachekey/project/elements/build1.expected
@@ -1 +1 @@
-c1fe5551061270c60ef2eb9c1953f5beb8ff0527f4901acdcc22432c5e7ad4d9 \ No newline at end of file
+99eb5ee7e7b93f1f9e4abfd2b392ed3b9746aeebc74f9239e5e0ca3ca444ab47 \ No newline at end of file
diff --git a/tests/cachekey/project/elements/build2.expected b/tests/cachekey/project/elements/build2.expected
index 4b63a3f98..10d60050d 100644
--- a/tests/cachekey/project/elements/build2.expected
+++ b/tests/cachekey/project/elements/build2.expected
@@ -1 +1 @@
-4caa10b4218f57141c1ab917f0fcd70941924638e4f49762a03bba5b26f5a595 \ No newline at end of file
+9458b71a2054df6ca3d1ce9df2090649b1416a368e41ae40bfa0cc52f5efb05e \ No newline at end of file
diff --git a/tests/cachekey/project/elements/compose1.expected b/tests/cachekey/project/elements/compose1.expected
index e1977f0d5..fd0ca75fd 100644
--- a/tests/cachekey/project/elements/compose1.expected
+++ b/tests/cachekey/project/elements/compose1.expected
@@ -1 +1 @@
-8b7347f544092fd32ad6521f13410fa81f2bae5167f00ea512c0969cf5d7b48b \ No newline at end of file
+3a033cd6b00a0b7e113f2f78f67e73923bdadad33e7d8825fabb0e75f0386417 \ No newline at end of file
diff --git a/tests/cachekey/project/elements/compose2.expected b/tests/cachekey/project/elements/compose2.expected
index f4b02be6d..5ab72fe76 100644
--- a/tests/cachekey/project/elements/compose2.expected
+++ b/tests/cachekey/project/elements/compose2.expected
@@ -1 +1 @@
-c6dbef79391a184499557e951cb168062b3eda7cdffe81c4984472b6a3d74339 \ No newline at end of file
+ec2cf079f662a497af5687d2458489fe3ad83810a2db1815ea489fb30f416fc9 \ No newline at end of file
diff --git a/tests/cachekey/project/elements/compose3.expected b/tests/cachekey/project/elements/compose3.expected
index d2a987420..5a6620a09 100644
--- a/tests/cachekey/project/elements/compose3.expected
+++ b/tests/cachekey/project/elements/compose3.expected
@@ -1 +1 @@
-474a2615be874dae877b54cce5a6f8fea2c02225219abeb14519c848b71c37cc \ No newline at end of file
+d24fd1c4beca8b40aad24e8bd4a6106e1278e193b10872e1ed33b0829eb4831a \ No newline at end of file
diff --git a/tests/cachekey/project/elements/compose4.expected b/tests/cachekey/project/elements/compose4.expected
index cbb10d163..2c4ab4c48 100644
--- a/tests/cachekey/project/elements/compose4.expected
+++ b/tests/cachekey/project/elements/compose4.expected
@@ -1 +1 @@
-71a9dcafacbc0ed1eb9564b2d9c3943a5d46879cff11fdc0689e72c29e947c99 \ No newline at end of file
+37dd09028bd0a95e64b83df32a1446932f81a72c4c9a6a2cac5c0165ac61e29b \ No newline at end of file
diff --git a/tests/cachekey/project/elements/compose5.expected b/tests/cachekey/project/elements/compose5.expected
index 0ea43e3ce..425c55e96 100644
--- a/tests/cachekey/project/elements/compose5.expected
+++ b/tests/cachekey/project/elements/compose5.expected
@@ -1 +1 @@
-0686d70ec2a631eabf958ad1a7e82bb2920942a1359615229318244339404c23 \ No newline at end of file
+4f2eea4571545a5ce896b13320aa7e6c55ca874237fcb7ebeea017f8456e1b5c \ No newline at end of file
diff --git a/tests/cachekey/project/elements/import1.expected b/tests/cachekey/project/elements/import1.expected
index b5057db9f..d9e854ed6 100644
--- a/tests/cachekey/project/elements/import1.expected
+++ b/tests/cachekey/project/elements/import1.expected
@@ -1 +1 @@
-93dc103c1ee3bc274c0eb890d3bbfadf2ce1f9ecbd4afee6b61214e767328611 \ No newline at end of file
+f27187b2e1b43a5d4d1855fc46fabe256d561d49d6aff2186a52d4d75315fe19 \ No newline at end of file
diff --git a/tests/cachekey/project/elements/import2.expected b/tests/cachekey/project/elements/import2.expected
index f8959f981..263684b4e 100644
--- a/tests/cachekey/project/elements/import2.expected
+++ b/tests/cachekey/project/elements/import2.expected
@@ -1 +1 @@
-20e3392d96420c5313b6ea9a008b3bedf019b391f7d791bdd60fae6bbf71e5fc \ No newline at end of file
+815467a6401a32162cfbcff05f11ff366f9f2d11338bc89d9cf41715da7db89c \ No newline at end of file
diff --git a/tests/cachekey/project/elements/import3.expected b/tests/cachekey/project/elements/import3.expected
index b5f400086..24d6a031e 100644
--- a/tests/cachekey/project/elements/import3.expected
+++ b/tests/cachekey/project/elements/import3.expected
@@ -1 +1 @@
-9e719da7bf09081c218ef1b5613a65b58a8478e5f46f937a81e241cab4247da5 \ No newline at end of file
+3fef8b7e07efe9b9599e32ce72b1f0f8ab31accd61788c94c57951770ab184c2 \ No newline at end of file
diff --git a/tests/cachekey/project/elements/script1.expected b/tests/cachekey/project/elements/script1.expected
index 7374fe9e5..71be17a37 100644
--- a/tests/cachekey/project/elements/script1.expected
+++ b/tests/cachekey/project/elements/script1.expected
@@ -1 +1 @@
-f11de354ac71ab209a0515686ae609a813d31855f50536ee1cf93a0851dde64c \ No newline at end of file
+38078af3714d6d5128669dc7b4d7e942a46ea4137c388d44a1f455b4cc1918d0 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/bzr1.expected b/tests/cachekey/project/sources/bzr1.expected
index 912b3a8a1..4e66d6c12 100644
--- a/tests/cachekey/project/sources/bzr1.expected
+++ b/tests/cachekey/project/sources/bzr1.expected
@@ -1 +1 @@
-e485371c3d3055b8d9666a4be231b0eb6747145d9c83954dd95a2df25b40b152 \ No newline at end of file
+ce45db2c82a50eec39416dc857c7a676121a5276b396ea6c7917b123a932ea34 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/git1.expected b/tests/cachekey/project/sources/git1.expected
index d7628ee2a..7c6974590 100644
--- a/tests/cachekey/project/sources/git1.expected
+++ b/tests/cachekey/project/sources/git1.expected
@@ -1 +1 @@
-79acaa26ea2cc8bd1ffaee92d88f3a2043390d2d5ba8528f397949b08e454d5f \ No newline at end of file
+f02ac8cc516819ee72f56bdc3c1a6e4bb3a154a506a361a8d34a63b37dfa8dc7 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/git2.expected b/tests/cachekey/project/sources/git2.expected
index 034a4519d..4fa7db829 100644
--- a/tests/cachekey/project/sources/git2.expected
+++ b/tests/cachekey/project/sources/git2.expected
@@ -1 +1 @@
-9e3ea2835e29ca4a66f750126a0d64636fcc36744057be485d62d940d41dbf84 \ No newline at end of file
+59964ee437e38e37dbbb78362118937e90defd89bdf358667394a35f6ed2ba46 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/git3.expected b/tests/cachekey/project/sources/git3.expected
index 7f14d4853..91cb0f882 100644
--- a/tests/cachekey/project/sources/git3.expected
+++ b/tests/cachekey/project/sources/git3.expected
@@ -1 +1 @@
-5dbc9678d2745acfb147c32cd8c68ad6919aa6004cb8a3d635a7ac47da9c8437 \ No newline at end of file
+10dd7b3883cfe8fd8f7f29dd258098080227ee73c53ff825542d62d204f1e6c3 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/local1.expected b/tests/cachekey/project/sources/local1.expected
index b9a130cf9..961785aa5 100644
--- a/tests/cachekey/project/sources/local1.expected
+++ b/tests/cachekey/project/sources/local1.expected
@@ -1 +1 @@
-64ff0a8d320d3a7c3bf27a5a0a897f1ef0854d38721f92fdbecb03b1029b9c2d \ No newline at end of file
+13acaa66115bd1d374b236b0ddd2cef804df75b3aa28878f4200efa7c758b14c \ No newline at end of file
diff --git a/tests/cachekey/project/sources/local2.expected b/tests/cachekey/project/sources/local2.expected
index 1e216c2cc..762e7bc48 100644
--- a/tests/cachekey/project/sources/local2.expected
+++ b/tests/cachekey/project/sources/local2.expected
@@ -1 +1 @@
-c2274d309979d7f3f13a27aae65088e8348aec7b818096a42daa8253387bbde0 \ No newline at end of file
+214238ba50ead82896e27d95e833c3df990f9e3ab728fdb0e44a3b07f986ab3c \ No newline at end of file
diff --git a/tests/cachekey/project/sources/patch1.expected b/tests/cachekey/project/sources/patch1.expected
index e08887415..4593895c5 100644
--- a/tests/cachekey/project/sources/patch1.expected
+++ b/tests/cachekey/project/sources/patch1.expected
@@ -1 +1 @@
-b26ee38a5bba930fd3161ffa4e86c72cffe3eee4d6ed863587dafa7dae19275a \ No newline at end of file
+3b607c5657b600ab0e2c8b5ea09ed26fc65b3899b67d107676cf687b2cde374d \ No newline at end of file
diff --git a/tests/cachekey/project/sources/patch2.expected b/tests/cachekey/project/sources/patch2.expected
index 6840ca3c6..221c9c779 100644
--- a/tests/cachekey/project/sources/patch2.expected
+++ b/tests/cachekey/project/sources/patch2.expected
@@ -1 +1 @@
-44c701a3beb5ee91d8f10749ee9081ddc808567a84905d8e3f3d56357b98be14 \ No newline at end of file
+1911adbe62cbd7d9f0ded708530274c7f591798bd0a0b5f7e8358f7fcda3066a \ No newline at end of file
diff --git a/tests/cachekey/project/sources/patch3.expected b/tests/cachekey/project/sources/patch3.expected
index ccb8595fa..1ad6d9fce 100644
--- a/tests/cachekey/project/sources/patch3.expected
+++ b/tests/cachekey/project/sources/patch3.expected
@@ -1 +1 @@
-08a0ef6633022338ac29c51d645bb1f38d31416541e7faa21740b31a1be04dc8 \ No newline at end of file
+175ff52608a55a6af98466822e22f401c46b2659116ccfeee6dc78e09249da78 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/pip1.expected b/tests/cachekey/project/sources/pip1.expected
index 5c3843182..59f11863b 100644
--- a/tests/cachekey/project/sources/pip1.expected
+++ b/tests/cachekey/project/sources/pip1.expected
@@ -1 +1 @@
-d5232928f6420fd95a07cc268f8e3eeb3562fc1162bdb96acc8ea44cc459cc76 \ No newline at end of file
+20ac777cc56dfeafcf4543e0d9ed31108b32075c8a3e9d25d3deec16fbf7f246 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/remote1.expected b/tests/cachekey/project/sources/remote1.expected
index 1bcc4fde0..9970589f3 100644
--- a/tests/cachekey/project/sources/remote1.expected
+++ b/tests/cachekey/project/sources/remote1.expected
@@ -1 +1 @@
-9ce089870d66b6ec5dc7a4686b04af00db9c04adab521aecec067419e83701ab \ No newline at end of file
+4d13955e7eeb0f0d77b0a3a72e77acd8636bdc8284712975593742d0667f88f7 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/remote2.expected b/tests/cachekey/project/sources/remote2.expected
index 6ceb4ae83..139e4bf74 100644
--- a/tests/cachekey/project/sources/remote2.expected
+++ b/tests/cachekey/project/sources/remote2.expected
@@ -1 +1 @@
-14544535e10cc377fb2443e3e87025dce1c0be03f7a69b3a0a6fe1a7af7191b3 \ No newline at end of file
+5f904fd43ca49f268af3141afe73116f1260800918a738afeaf51a94f99fffb2 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/tar1.expected b/tests/cachekey/project/sources/tar1.expected
index e686318ea..89a492067 100644
--- a/tests/cachekey/project/sources/tar1.expected
+++ b/tests/cachekey/project/sources/tar1.expected
@@ -1 +1 @@
-f04fd7f059d136021c306b89130802c81e3baf8103ab9e84fe20a3af28815693 \ No newline at end of file
+f516c30a7a493acd74e49c4ac91cf697dfd32e8821d4230becac100cdac7df64 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/tar2.expected b/tests/cachekey/project/sources/tar2.expected
index 3b25c45f5..e9928d767 100644
--- a/tests/cachekey/project/sources/tar2.expected
+++ b/tests/cachekey/project/sources/tar2.expected
@@ -1 +1 @@
-bf581c0f1724b1a574dfa5ffaadc096db4b8f80a0f9b337cf6a867d12dfd6ecd \ No newline at end of file
+eba29361b50cf14128dbf34362635bc2170474c8bb13c916638b2531174bf04a \ No newline at end of file
diff --git a/tests/cachekey/project/sources/zip1.expected b/tests/cachekey/project/sources/zip1.expected
index 3b41d3c42..41292f2a2 100644
--- a/tests/cachekey/project/sources/zip1.expected
+++ b/tests/cachekey/project/sources/zip1.expected
@@ -1 +1 @@
-eddd2c6bcf2f805874d7a852a18eccaa9c9c5006ccf1e44e2389908f3beb16a0 \ No newline at end of file
+a759e15073fdeed9224e41af4c094464e268bb8ced95dedf6e6dc35ec524d003 \ No newline at end of file
diff --git a/tests/cachekey/project/sources/zip2.expected b/tests/cachekey/project/sources/zip2.expected
index da524df15..e723f4852 100644
--- a/tests/cachekey/project/sources/zip2.expected
+++ b/tests/cachekey/project/sources/zip2.expected
@@ -1 +1 @@
-d236514ddd135f2fdc81a2cb1912aef66fb7b0c616e3a652f81d4b61592baf02 \ No newline at end of file
+d9c5a347340a387c4cecf24c29ad4b3c524773e8224683380221a62ec820abd9 \ No newline at end of file
diff --git a/tests/cachekey/project/target.expected b/tests/cachekey/project/target.expected
index 887bc59b9..38d4abeef 100644
--- a/tests/cachekey/project/target.expected
+++ b/tests/cachekey/project/target.expected
@@ -1 +1 @@
-e51a1db8dc54b50c92a9a18d505d2d580854a6f6dae346ed5f89310775233ab4 \ No newline at end of file
+5bf8ea2d6c0900c226c8fd3dae980f0b92e40f3fc1887b64d31bf04b6210d763 \ No newline at end of file