diff options
author | Tristan van Berkom <tristan@codethink.co.uk> | 2020-12-01 20:37:17 +0900 |
---|---|---|
committer | Tristan van Berkom <tristan@codethink.co.uk> | 2020-12-07 17:51:46 +0900 |
commit | 965da0ad04af8649f48cfeffd90174e147052494 (patch) | |
tree | 411fc37d0f8aa5b8a2fa92ee2e170d0496c301d6 | |
parent | 548b23d767e11f4ea49f4934a5d9d99ce41342f3 (diff) | |
download | buildstream-965da0ad04af8649f48cfeffd90174e147052494.tar.gz |
_artifact.py: Store additional metadata on the artifact
This commit enriches the metadata we store on artifacts in the
new detatched low/high diversity metadata files:
* The SandboxConfig is now stored in the artifact, allowing
one to perform activities such as launching sandboxes on
artifacts downloaded via artifact name (without backing
project data).
* The environment variables is now stored in the artifact,
similarly allowing one to shell into a downloaded artifacts
which are unrelated to a loaded project.
* The element variables are now stored in the artifact, allowing
more flexibility in what the core can do with a downloaded
ArtifactElement
* The element's strict key
All of these of course can additionally enhance traceability
in the UI with commands such as `bst artifact show`.
Summary of changes:
* _artifact.py:
- Store new data in the new proto digests.
- Added new accessors to extract these new aspects from loaded artifacts.
- Bump the proto version number for compatibility
* _artifactcache.py: Adjusted to push and pull the new blobs and digests.
* element.py:
- Call Artifact.cache() with new parameters
- Expect the strict key from Artifact.get_meta_keys()
- Always specify the strict key when constructing an Artifact
instance which will later be used to cache the artifact
(i.e. the self.__artifact Artifact).
* _versions.py: Bump the global artifact version number, as this breaks
the artifact format.
* tests/cachekey: Updated cache key test for new keys.
33 files changed, 174 insertions, 47 deletions
diff --git a/src/buildstream/_artifact.py b/src/buildstream/_artifact.py index c110e57f0..1cea03092 100644 --- a/src/buildstream/_artifact.py +++ b/src/buildstream/_artifact.py @@ -1,5 +1,5 @@ # -# Copyright (C) 2019 Codethink Limited +# Copyright (C) 2020 Codethink Limited # Copyright (C) 2019 Bloomberg Finance LP # # This program is free software; you can redistribute it and/or @@ -29,13 +29,16 @@ artifact composite interaction away from Element class """ import os +from typing import Dict, Tuple from ._protos.buildstream.v2.artifact_pb2 import Artifact as ArtifactProto from . import _yaml from . import utils +from .node import Node from .types import _Scope from .storage._casbaseddirectory import CasBasedDirectory - +from .sandbox._config import SandboxConfig +from ._variables import Variables # An Artifact class to abstract artifact operations # from the Element class @@ -44,23 +47,25 @@ from .storage._casbaseddirectory import CasBasedDirectory # element (Element): The Element object # context (Context): The BuildStream context # strong_key (str): The elements strong cache key, dependent on context +# strict_key (str): The elements strict cache key # weak_key (str): The elements weak cache key # class Artifact: - version = 0 + version = 1 - def __init__(self, element, context, *, strong_key=None, weak_key=None): + def __init__(self, element, context, *, strong_key=None, strict_key=None, weak_key=None): self._element = element self._context = context self._cache_key = strong_key + self._strict_key = strict_key self._weak_cache_key = weak_key self._artifactdir = context.artifactdir self._cas = context.get_cascache() self._tmpdir = context.tmpdir self._proto = None - self._metadata_keys = None # Strong and weak key tuple extracted from the artifact + self._metadata_keys = None # Strong, strict and weak key tuple extracted from the artifact self._metadata_dependencies = None # Dictionary of dependency strong keys from the artifact self._metadata_workspaced = None # Boolean of whether it's a workspaced artifact self._metadata_workspaced_dependencies = None # List of which dependencies are workspaced from the artifact @@ -137,11 +142,25 @@ class Artifact: # sourcesvdir (Directory): Virtual Directoy object for the staged sources # buildresult (tuple): bool, short desc and detailed desc of result # publicdata (dict): dict of public data to commit to artifact metadata + # variables (Variables): The element's Variables + # environment (dict): dict of the element's environment variables + # sandboxconfig (SandboxConfig): The element's SandboxConfig # # Returns: # (int): The size of the newly cached artifact # - def cache(self, sandbox_build_dir, collectvdir, sourcesvdir, buildresult, publicdata): + def cache( + self, + *, + sandbox_build_dir, + collectvdir, + sourcesvdir, + buildresult, + publicdata, + variables, + environment, + sandboxconfig, + ): context = self._context element = self._element @@ -161,6 +180,7 @@ class Artifact: # Store keys artifact.strong_key = self._cache_key + artifact.strict_key = self._strict_key artifact.weak_key = self._weak_cache_key artifact.was_workspaced = bool(element._get_workspace()) @@ -180,6 +200,34 @@ class Artifact: artifact.public_data.CopyFrom(public_data_digest) size += public_data_digest.size_bytes + # Store low diversity metadata, this metadata must have a high + # probability of deduplication, such as environment variables + # and SandboxConfig. + # + with utils._tempnamedfile_name(dir=self._tmpdir) as tmpname: + sandbox_dict = sandboxconfig.to_dict() + low_diversity_dict = {"environment": environment, "sandbox-config": sandbox_dict} + low_diversity_node = Node.from_dict(low_diversity_dict) + + _yaml.roundtrip_dump(low_diversity_node, tmpname) + low_diversity_meta_digest = self._cas.add_object(path=tmpname, link_directly=True) + artifact.low_diversity_meta.CopyFrom(low_diversity_meta_digest) + size += low_diversity_meta_digest.size_bytes + + # Store high diversity metadata, this metadata is expected to diverge + # for every element and as such cannot be deduplicated. + # + with utils._tempnamedfile_name(dir=self._tmpdir) as tmpname: + # The Variables object supports being converted directly to a dictionary + variables_dict = dict(variables) + high_diversity_dict = {"variables": variables_dict} + high_diversity_node = Node.from_dict(high_diversity_dict) + + _yaml.roundtrip_dump(high_diversity_node, tmpname) + high_diversity_meta_digest = self._cas.add_object(path=tmpname, link_directly=True) + artifact.high_diversity_meta.CopyFrom(high_diversity_meta_digest) + size += high_diversity_meta_digest.size_bytes + # store build dependencies for e in element._dependencies(_Scope.BUILD): new_build = artifact.build_deps.add() @@ -282,6 +330,64 @@ class Artifact: return data + # load_sandbox_config(): + # + # Loads the sandbox configuration from the cached artifact + # + # Returns: + # The stored SandboxConfig object + # + def load_sandbox_config(self) -> SandboxConfig: + + # Load the sandbox data from the artifact + artifact = self._get_proto() + meta_file = self._cas.objpath(artifact.low_diversity_meta) + data = _yaml.load(meta_file, shortname="low-diversity-meta.yaml") + + # Extract the sandbox data + config = data.get_mapping("sandbox-config") + + # Return a SandboxConfig + return SandboxConfig.new_from_node(config) + + # load_environment(): + # + # Loads the environment variables from the cached artifact + # + # Returns: + # The environment variables + # + def load_environment(self) -> Dict[str, str]: + + # Load the sandbox data from the artifact + artifact = self._get_proto() + meta_file = self._cas.objpath(artifact.low_diversity_meta) + data = _yaml.load(meta_file, shortname="low-diversity-meta.yaml") + + # Extract the environment + config = data.get_mapping("environment") + + # Return the environment + return config.strip_node_info() + + # load_variables(): + # + # Loads the element variables from the cached artifact + # + # Returns: + # The element variables + # + def load_variables(self) -> Variables: + + # Load the sandbox data from the artifact + artifact = self._get_proto() + meta_file = self._cas.objpath(artifact.high_diversity_meta) + data = _yaml.load(meta_file, shortname="high-diversity-meta.yaml") + + # Extract the variables node and return the new Variables instance + variables_node = data.get_mapping("variables") + return Variables(variables_node) + # load_build_result(): # # Load the build result from the cached artifact @@ -303,10 +409,11 @@ class Artifact: # Retrieve the strong and weak keys from the given artifact. # # Returns: - # (str): The strong key - # (str): The weak key + # The strong key + # The strict key + # The weak key # - def get_metadata_keys(self): + def get_metadata_keys(self) -> Tuple[str, str, str]: if self._metadata_keys is not None: return self._metadata_keys @@ -315,9 +422,10 @@ class Artifact: artifact = self._get_proto() strong_key = artifact.strong_key + strict_key = artifact.strict_key weak_key = artifact.weak_key - self._metadata_keys = (strong_key, weak_key) + self._metadata_keys = (strong_key, strict_key, weak_key) return self._metadata_keys diff --git a/src/buildstream/_artifactcache.py b/src/buildstream/_artifactcache.py index 5ccdf8fd8..c3d96166c 100644 --- a/src/buildstream/_artifactcache.py +++ b/src/buildstream/_artifactcache.py @@ -404,7 +404,7 @@ class ArtifactCache(AssetCache): except FileNotFoundError: pass - digests = [artifact_digest] + digests = [artifact_digest, artifact_proto.low_diversity_meta, artifact_proto.high_diversity_meta] if str(artifact_proto.public_data): digests.append(artifact_proto.public_data) @@ -470,7 +470,9 @@ class ArtifactCache(AssetCache): if artifact_proto.sources: referenced_directories.append(artifact_proto.sources) - referenced_blobs = [log_file.digest for log_file in artifact_proto.logs] + referenced_blobs = [artifact_proto.low_diversity_meta, artifact_proto.high_diversity_meta] + [ + log_file.digest for log_file in artifact_proto.logs + ] try: remote.push_blob( @@ -530,7 +532,7 @@ class ArtifactCache(AssetCache): if pull_buildtrees and str(artifact.buildtree): __pull_digest(artifact.buildtree) - digests = [] + digests = [artifact.low_diversity_meta, artifact.high_diversity_meta] if str(artifact.public_data): digests.append(artifact.public_data) diff --git a/src/buildstream/_versions.py b/src/buildstream/_versions.py index f97560b4d..37a7a0acd 100644 --- a/src/buildstream/_versions.py +++ b/src/buildstream/_versions.py @@ -24,4 +24,4 @@ # or if buildstream was changed in a way which can cause # the same cache key to produce something that is no longer # the same. -BST_CORE_ARTIFACT_VERSION = 9 +BST_CORE_ARTIFACT_VERSION = 10 diff --git a/src/buildstream/element.py b/src/buildstream/element.py index 595017052..c09bb2d18 100644 --- a/src/buildstream/element.py +++ b/src/buildstream/element.py @@ -1840,7 +1840,16 @@ class Element(Plugin): assert self.__artifact._cache_key is not None with self.timed_activity("Caching artifact"): - artifact_size = self.__artifact.cache(sandbox_build_dir, collectvdir, sourcesvdir, buildresult, publicdata) + artifact_size = self.__artifact.cache( + sandbox_build_dir=sandbox_build_dir, + collectvdir=collectvdir, + sourcesvdir=sourcesvdir, + buildresult=buildresult, + publicdata=publicdata, + variables=self.__variables, + environment=self.__environment, + sandboxconfig=self.__sandbox_config, + ) if collect is not None and collectvdir is None: raise ElementError( @@ -3208,11 +3217,19 @@ class Element(Plugin): context = self._get_context() - strict_artifact = Artifact(self, context, strong_key=self.__strict_cache_key, weak_key=self.__weak_cache_key) + strict_artifact = Artifact( + self, + context, + strong_key=self.__strict_cache_key, + strict_key=self.__strict_cache_key, + weak_key=self.__weak_cache_key, + ) if context.get_strict() or strict_artifact.cached(): self.__artifact = strict_artifact else: - self.__artifact = Artifact(self, context, weak_key=self.__weak_cache_key) + self.__artifact = Artifact( + self, context, strict_key=self.__strict_cache_key, weak_key=self.__weak_cache_key + ) if not context.get_strict() and self.__artifact.cached(): # In non-strict mode, strong cache key becomes available when @@ -3247,7 +3264,7 @@ class Element(Plugin): pass elif self._cached(): # Load the strong cache key from the artifact - strong_key, _ = self.__artifact.get_metadata_keys() + strong_key, _, _ = self.__artifact.get_metadata_keys() self.__cache_key = strong_key elif self.__assemble_scheduled or self.__assemble_done: # Artifact will or has been built, not downloaded diff --git a/tests/cachekey/project/elements/build1.expected b/tests/cachekey/project/elements/build1.expected index 8939fe401..1692f54d7 100644 --- a/tests/cachekey/project/elements/build1.expected +++ b/tests/cachekey/project/elements/build1.expected @@ -1 +1 @@ -2529ccdc2fb103a69562bd022616ddb19cf6e9de84d8cfbc7840153f4ddc0731
\ No newline at end of file +a31f513b77c99f40444f60a9cf95b2b127b2fc6f11074eab952e442002eaac1f
\ No newline at end of file diff --git a/tests/cachekey/project/elements/build2.expected b/tests/cachekey/project/elements/build2.expected index db52547e3..ab5a9aa93 100644 --- a/tests/cachekey/project/elements/build2.expected +++ b/tests/cachekey/project/elements/build2.expected @@ -1 +1 @@ -1b8ebfc60feb2cdb72997c67114b60e54fb16f9ac32ee1d244ecd3adede4f435
\ No newline at end of file +7edfaf2fe00b46d7e92808f666df37f04834b51b8672fb898a0e041be9080c96
\ No newline at end of file diff --git a/tests/cachekey/project/elements/build3.expected b/tests/cachekey/project/elements/build3.expected index 868549ae6..01f7bb1eb 100644 --- a/tests/cachekey/project/elements/build3.expected +++ b/tests/cachekey/project/elements/build3.expected @@ -1 +1 @@ -b2ec847601220bead3bff667a9b059156f4cb4c0a057afbc0598b9d93f8ded55
\ No newline at end of file +1792a11e64ee1a5c981ead2f7a4a05695b503d700ce6d3e50c8373a1f08e1210
\ No newline at end of file diff --git a/tests/cachekey/project/elements/compose1.expected b/tests/cachekey/project/elements/compose1.expected index cc7f7d427..65078c9a7 100644 --- a/tests/cachekey/project/elements/compose1.expected +++ b/tests/cachekey/project/elements/compose1.expected @@ -1 +1 @@ -7c814c5c137e1792da1a3d039ead391a755aa158b18298efe67fa71f70ace2ca
\ No newline at end of file +51e162d4f09e7b0f47f709ccd0bf0084fd6cface26bbbad484869fc49df6e5ec
\ No newline at end of file diff --git a/tests/cachekey/project/elements/compose2.expected b/tests/cachekey/project/elements/compose2.expected index c01eb0f8d..f12841808 100644 --- a/tests/cachekey/project/elements/compose2.expected +++ b/tests/cachekey/project/elements/compose2.expected @@ -1 +1 @@ -1da1fc95645027f8bd30e26b73639f1cc0b196a4ed96e745b96ae923b84b7929
\ No newline at end of file +b95eee0297a2d8ffd11f9c351a9a5a9b4243d806df4734b39100207044b91a0e
\ No newline at end of file diff --git a/tests/cachekey/project/elements/compose3.expected b/tests/cachekey/project/elements/compose3.expected index 7dd15f6a2..c5009c40b 100644 --- a/tests/cachekey/project/elements/compose3.expected +++ b/tests/cachekey/project/elements/compose3.expected @@ -1 +1 @@ -5529233330d798bc39b898b90d20b2763d6512b76ec2215081b3f1083fd5d2b5
\ No newline at end of file +0774629ece7ea4e21bddf47fa7fabc2ff5efa4dcc58509006f8fdc96d7d1c900
\ No newline at end of file diff --git a/tests/cachekey/project/elements/compose4.expected b/tests/cachekey/project/elements/compose4.expected index e70405388..a70f70768 100644 --- a/tests/cachekey/project/elements/compose4.expected +++ b/tests/cachekey/project/elements/compose4.expected @@ -1 +1 @@ -b4785d3aea6c4218420c582487a0fcb1fe988b898b96c01693fe5645c24f054a
\ No newline at end of file +0d31c6742239b4eed81ea89a2fe4dd66bb327794641f58c62b76b0f93f07d22e
\ No newline at end of file diff --git a/tests/cachekey/project/elements/compose5.expected b/tests/cachekey/project/elements/compose5.expected index ebcbac9af..04c396045 100644 --- a/tests/cachekey/project/elements/compose5.expected +++ b/tests/cachekey/project/elements/compose5.expected @@ -1 +1 @@ -8d0cb89fc95dd7114a64a35ff47228f16b039484da688854f21a8651e0fefa4b
\ No newline at end of file +c1f03c1b1b4bf0141f9014ffe527758c36721ec0fe3d87abd1ec700e2da3e891
\ No newline at end of file diff --git a/tests/cachekey/project/elements/import1.expected b/tests/cachekey/project/elements/import1.expected index c7fac5326..10ebbda21 100644 --- a/tests/cachekey/project/elements/import1.expected +++ b/tests/cachekey/project/elements/import1.expected @@ -1 +1 @@ -a5914d072494e9a592a44ceb97a553c0473c15b239d1a827aca796a1a0fe51f1
\ No newline at end of file +92d3ad5fa90c754fa63ee93a3b6fcf383c1b447cf37628d571054e52a2df50c2
\ No newline at end of file diff --git a/tests/cachekey/project/elements/import2.expected b/tests/cachekey/project/elements/import2.expected index 715006230..8416eb27a 100644 --- a/tests/cachekey/project/elements/import2.expected +++ b/tests/cachekey/project/elements/import2.expected @@ -1 +1 @@ -b2a6e4d687832bacd7b00765813d8392153902e34df3d91e3926189c81fea42e
\ No newline at end of file +9104a767449b0a7d9c2bbe341548f3bea6c4ef6556059b3b6b1869909b372f88
\ No newline at end of file diff --git a/tests/cachekey/project/elements/import3.expected b/tests/cachekey/project/elements/import3.expected index 5d925d248..a4ccd52ca 100644 --- a/tests/cachekey/project/elements/import3.expected +++ b/tests/cachekey/project/elements/import3.expected @@ -1 +1 @@ -365b4af1b444bd113a3641fa7b22268040fb448c42ef351ecf8d9a09fa702262
\ No newline at end of file +ba652fcab4d8ac7fe2e1930768b80e5494b0d5ca0c25a5f713070b5431134709
\ No newline at end of file diff --git a/tests/cachekey/project/elements/script1.expected b/tests/cachekey/project/elements/script1.expected index 1f6579ffd..b817085c5 100644 --- a/tests/cachekey/project/elements/script1.expected +++ b/tests/cachekey/project/elements/script1.expected @@ -1 +1 @@ -5346f804ba9ac6fc642971c5673a2f5520c52706cfa1e698de7a94ffe361df84
\ No newline at end of file +73d09c3efcb2a2787737b3fc33fd6eefd0635fe3b26fda59ca3d43e5c39f9028
\ No newline at end of file diff --git a/tests/cachekey/project/sources/bzr1.expected b/tests/cachekey/project/sources/bzr1.expected index 6d194a24a..36db84e37 100644 --- a/tests/cachekey/project/sources/bzr1.expected +++ b/tests/cachekey/project/sources/bzr1.expected @@ -1 +1 @@ -4ee74db778d7d1ad83ce680320961ffa08655c87e8316aee369d8f943a56286d
\ No newline at end of file +61809980b80872ace2a83b5d16b698b6526002d2364adccc2836e8f75d2c5b88
\ No newline at end of file diff --git a/tests/cachekey/project/sources/git1.expected b/tests/cachekey/project/sources/git1.expected index 8d9e051e6..f5f3227cb 100644 --- a/tests/cachekey/project/sources/git1.expected +++ b/tests/cachekey/project/sources/git1.expected @@ -1 +1 @@ -8f3da148eb9fcd637537094ea309fc187767d375e87c5e585da49e40efbeb6e8
\ No newline at end of file +5ff9575c5ecfb760e2a683fe88361ee55314b854a70e338a5caba55dbe8c57d9
\ No newline at end of file diff --git a/tests/cachekey/project/sources/git2.expected b/tests/cachekey/project/sources/git2.expected index abed12ce6..414d8a39f 100644 --- a/tests/cachekey/project/sources/git2.expected +++ b/tests/cachekey/project/sources/git2.expected @@ -1 +1 @@ -5a1a828102a76fc1ec84b9d012b578320e17267e6b0104f2b3f79490d5081d04
\ No newline at end of file +2ba0fedf30942a4641a51f7ad5e5bcd38732e3ea798afe64fe37aa1a0b6ce532
\ No newline at end of file diff --git a/tests/cachekey/project/sources/git3.expected b/tests/cachekey/project/sources/git3.expected index 27dc857c5..31d262fc8 100644 --- a/tests/cachekey/project/sources/git3.expected +++ b/tests/cachekey/project/sources/git3.expected @@ -1 +1 @@ -9ace68b14a015497e88d0cee916145e0109dc406188ab4d2f7f69942e4081d82
\ No newline at end of file +7ef53f28840b94a86d34eab03e2a1c9f6e607cc36527844de5dde44ee7d3aa82
\ No newline at end of file diff --git a/tests/cachekey/project/sources/local1.expected b/tests/cachekey/project/sources/local1.expected index 387231668..cddb0f312 100644 --- a/tests/cachekey/project/sources/local1.expected +++ b/tests/cachekey/project/sources/local1.expected @@ -1 +1 @@ -4881a9a467073e35f94b01fef5b3a30292d1a9501a9872f94873c2ce7a411fb4
\ No newline at end of file +3ddeb2984e64c885cfc03e09be4d0efdb665250fd1d8a7ebbec7aa847e74055e
\ No newline at end of file diff --git a/tests/cachekey/project/sources/local2.expected b/tests/cachekey/project/sources/local2.expected index 5f29fcc76..7983c7c0f 100644 --- a/tests/cachekey/project/sources/local2.expected +++ b/tests/cachekey/project/sources/local2.expected @@ -1 +1 @@ -2f4fd0b15ca13e30acd846eb842e7c4fccc77111a29c19133edc91a5e2c22731
\ No newline at end of file +ef2801ff5349d5d2c319fbda60e19e23f6b92cee10c7449f6e0c2c503cb955cc
\ No newline at end of file diff --git a/tests/cachekey/project/sources/patch1.expected b/tests/cachekey/project/sources/patch1.expected index d542f5027..709c36d1c 100644 --- a/tests/cachekey/project/sources/patch1.expected +++ b/tests/cachekey/project/sources/patch1.expected @@ -1 +1 @@ -d8ff899dff9b951bea1fb57cecd9e9e0beff8d7ab84c9855394d0ba911e1bd78
\ No newline at end of file +d02dfb7fd25c7a3bbdc99f72f990baea14c0075233e40b6e8907e150b0d6d2bf
\ No newline at end of file diff --git a/tests/cachekey/project/sources/patch2.expected b/tests/cachekey/project/sources/patch2.expected index 00a5565de..a52ef5a88 100644 --- a/tests/cachekey/project/sources/patch2.expected +++ b/tests/cachekey/project/sources/patch2.expected @@ -1 +1 @@ -7717f45302278888f90c7ffd51b5507bb170856bb1100c53fe17b5ed36716fc8
\ No newline at end of file +3ca9a6fdff99300db164b892fb7e592d7e75ac548f70c9aaef7cd86542702639
\ No newline at end of file diff --git a/tests/cachekey/project/sources/patch3.expected b/tests/cachekey/project/sources/patch3.expected index 07caeeec4..55d951747 100644 --- a/tests/cachekey/project/sources/patch3.expected +++ b/tests/cachekey/project/sources/patch3.expected @@ -1 +1 @@ -aea86d3b816e30cb388e5632ca6ae4b308084a35b9311197bc879c9c8f4bc01b
\ No newline at end of file +32855fe6027fb27cdf71251d6c3022866de602b1377aa8c99613120db3bb7427
\ No newline at end of file diff --git a/tests/cachekey/project/sources/pip1.expected b/tests/cachekey/project/sources/pip1.expected index 7b06ef700..5dd2317a7 100644 --- a/tests/cachekey/project/sources/pip1.expected +++ b/tests/cachekey/project/sources/pip1.expected @@ -1 +1 @@ -d78eaa9658a21b207b972a4876f52b4119ec5418b1a2894156fab7961bb06630
\ No newline at end of file +0399ffb1d3430b59af6f75ef2f663ba93bace7dd5204aea9a314b7b6fe656aa5
\ No newline at end of file diff --git a/tests/cachekey/project/sources/remote1.expected b/tests/cachekey/project/sources/remote1.expected index ff778e162..2cbb432bf 100644 --- a/tests/cachekey/project/sources/remote1.expected +++ b/tests/cachekey/project/sources/remote1.expected @@ -1 +1 @@ -ea79defd2b026dfd76579b44c45795f02e71fa21ad86fa37b6f718d8570b5c17
\ No newline at end of file +c685ece0668aebe63b5605849942e40593a2dc143c42e742f660253908539def
\ No newline at end of file diff --git a/tests/cachekey/project/sources/remote2.expected b/tests/cachekey/project/sources/remote2.expected index 3b4dcf1e2..ae1af22cf 100644 --- a/tests/cachekey/project/sources/remote2.expected +++ b/tests/cachekey/project/sources/remote2.expected @@ -1 +1 @@ -57c59523777f5da561809a5707c76d3bbc667b3f5d21cb262abdfc70e9679589
\ No newline at end of file +745a7073f383cb486ff7667b5d326a7fa02e8025942f802f17cd60f381dd849b
\ No newline at end of file diff --git a/tests/cachekey/project/sources/tar1.expected b/tests/cachekey/project/sources/tar1.expected index cf970120d..0e0d249b3 100644 --- a/tests/cachekey/project/sources/tar1.expected +++ b/tests/cachekey/project/sources/tar1.expected @@ -1 +1 @@ -b43e8a77bf8f89febcf4f40c3cde01155201fdb9ce08fa02d8b9d7b0a6538d1f
\ No newline at end of file +1e132d0b4c54416f6a1bf39a7214b6c12a6929104075ab2976d706fc8dec7a5f
\ No newline at end of file diff --git a/tests/cachekey/project/sources/tar2.expected b/tests/cachekey/project/sources/tar2.expected index 5bf390493..dcafbbf2a 100644 --- a/tests/cachekey/project/sources/tar2.expected +++ b/tests/cachekey/project/sources/tar2.expected @@ -1 +1 @@ -ca1385011d42e2ede76d3f7a6e88ca1bd972ab2a35ce0d30a74f5260ac066731
\ No newline at end of file +89b7b576615887651a316abac300b02ea242c581643426d34ad9afb1eab435b4
\ No newline at end of file diff --git a/tests/cachekey/project/sources/zip1.expected b/tests/cachekey/project/sources/zip1.expected index a8bf1143b..ac3d09fd6 100644 --- a/tests/cachekey/project/sources/zip1.expected +++ b/tests/cachekey/project/sources/zip1.expected @@ -1 +1 @@ -8c154d2d9cb7c2dd9228c79f04fc15e3e4554698b44bf9d01de28b712aad13b4
\ No newline at end of file +462801e978cf3cc6f69a403ae033a7e4bd8a05cf5d7be357c9f91f03af1edbed
\ No newline at end of file diff --git a/tests/cachekey/project/sources/zip2.expected b/tests/cachekey/project/sources/zip2.expected index 18b1ac850..4f35a72c5 100644 --- a/tests/cachekey/project/sources/zip2.expected +++ b/tests/cachekey/project/sources/zip2.expected @@ -1 +1 @@ -a38037f5ac8658d8a2174e78be822a9e04083441759bbdb1dd18a2009ae9e256
\ No newline at end of file +828994c07f34eb468456b038744e41422ef53d30a047a4335e32e9d62218f291
\ No newline at end of file diff --git a/tests/cachekey/project/target.expected b/tests/cachekey/project/target.expected index 91c58491e..3fa0aea19 100644 --- a/tests/cachekey/project/target.expected +++ b/tests/cachekey/project/target.expected @@ -1 +1 @@ -6f21fe36670a3a6e09597f12797fc7a42567a437c598b36d0c7792471929d57c
\ No newline at end of file +788da21e7c1b5818b7e7b60f7eb75841057ff7e45d362cc223336c606fe47f27
\ No newline at end of file |