summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaoul Hidalgo Charman <raoul.hidalgocharman@codethink.co.uk>2019-04-12 12:08:35 +0100
committerTom Pollard <tom.pollard@codethink.co.uk>2019-04-26 14:08:11 +0100
commitd8b1ff90339e31daa16cf5c9251f11c14d22d8d6 (patch)
tree44d76b1eb514df49237243e86f380ae42ffe5903
parent97479a69d681710202ced5a81089c20e60e5b4da (diff)
downloadbuildstream-d8b1ff90339e31daa16cf5c9251f11c14d22d8d6.tar.gz
Remove excluded_subdir/subdir options
With artifact as a proto, it doesn't make sense to do it this way, bits of code can be removed. Part of #974
-rw-r--r--buildstream/_artifactcache.py9
-rw-r--r--buildstream/_cas/cascache.py10
-rw-r--r--buildstream/element.py53
3 files changed, 17 insertions, 55 deletions
diff --git a/buildstream/_artifactcache.py b/buildstream/_artifactcache.py
index 7dc1aee12..2fc3dcf55 100644
--- a/buildstream/_artifactcache.py
+++ b/buildstream/_artifactcache.py
@@ -268,9 +268,8 @@ class ArtifactCache(BaseCache):
# element (Element): The element whose artifacts to compare
# key_a (str): The first artifact key
# key_b (str): The second artifact key
- # subdir (str): A subdirectory to limit the comparison to
#
- def diff(self, element, key_a, key_b, *, subdir=None):
+ def diff(self, element, key_a, key_b):
digest_a = self.get_artifact_proto(element.get_artifact_name(key_a)).files
digest_b = self.get_artifact_proto(element.get_artifact_name(key_b)).files
@@ -326,15 +325,13 @@ class ArtifactCache(BaseCache):
# element (Element): The Element whose artifact is to be fetched
# key (str): The cache key to use
# progress (callable): The progress callback, if any
- # subdir (str): The optional specific subdir to pull
- # excluded_subdirs (list): The optional list of subdirs to not pull
+ # pull_buildtrees (bool): Whether to pull buildtrees or not
#
# Returns:
# (bool): True if pull was successful, False if artifact was not available
#
- def pull(self, element, key, *, progress=None, subdir=None, excluded_subdirs=None):
+ def pull(self, element, key, *, progress=None, pull_buildtrees=False):
project = element._get_project()
- pull_buildtrees = "buildtree" not in excluded_subdirs if excluded_subdirs else True
for remote in self._remotes[project]:
remote.init()
diff --git a/buildstream/_cas/cascache.py b/buildstream/_cas/cascache.py
index 0bbeedd2e..5c1642d91 100644
--- a/buildstream/_cas/cascache.py
+++ b/buildstream/_cas/cascache.py
@@ -231,14 +231,10 @@ class CASCache():
# ref_b (str): The second ref
# subdir (str): A subdirectory to limit the comparison to
#
- def diff(self, ref_a, ref_b, *, subdir=None):
+ def diff(self, ref_a, ref_b):
tree_a = self.resolve_ref(ref_a)
tree_b = self.resolve_ref(ref_b)
- if subdir:
- tree_a = self._get_subdir(tree_a, subdir)
- tree_b = self._get_subdir(tree_b, subdir)
-
added = []
removed = []
modified = []
@@ -261,7 +257,7 @@ class CASCache():
# Returns:
# (bool): True if pull was successful, False if ref was not available
#
- def pull(self, ref, remote, *, progress=None, subdir=None, excluded_subdirs=None):
+ def pull(self, ref, remote, *, progress=None):
try:
remote.init()
@@ -275,7 +271,7 @@ class CASCache():
self._fetch_directory(remote, tree)
# Fetch files, excluded_subdirs determined in pullqueue
- required_blobs = self.required_blobs_for_directory(tree, excluded_subdirs=excluded_subdirs)
+ required_blobs = self.required_blobs_for_directory(tree)
missing_blobs = self.local_missing_blobs(required_blobs)
if missing_blobs:
self.fetch_blobs(remote, missing_blobs)
diff --git a/buildstream/element.py b/buildstream/element.py
index 7b7d2f824..4cf8d89a5 100644
--- a/buildstream/element.py
+++ b/buildstream/element.py
@@ -1853,9 +1853,9 @@ class Element(Plugin):
# Check whether the pull has been invoked with a specific subdir requested
# in user context, as to complete a partial artifact
- subdir, _ = self.__pull_directories()
+ pull_buildtrees = self._get_context().pull_buildtrees
- if self.__strong_cached and subdir == 'buildtree':
+ if self.__strong_cached and pull_buildtrees:
# If we've specified a subdir, check if the subdir is cached locally
if self.__artifacts.contains_buildtree(self, self.__strict_cache_key):
return False
@@ -1895,13 +1895,13 @@ class Element(Plugin):
# Get optional specific subdir to pull and optional list to not pull
# based off of user context
- subdir, excluded_subdirs = self.__pull_directories()
+ pull_buildtrees = context.pull_buildtrees
# Attempt to pull artifact without knowing whether it's available
- pulled = self.__pull_strong(progress=progress, subdir=subdir, excluded_subdirs=excluded_subdirs)
+ pulled = self.__pull_strong(progress=progress, pull_buildtrees=pull_buildtrees)
if not pulled and not self._cached() and not context.get_strict():
- pulled = self.__pull_weak(progress=progress, subdir=subdir, excluded_subdirs=excluded_subdirs)
+ pulled = self.__pull_weak(progress=progress, pull_buildtrees=pull_buildtrees)
if not pulled:
return False
@@ -2840,11 +2840,11 @@ class Element(Plugin):
# Returns:
# (bool): Whether or not the pull was successful
#
- def __pull_strong(self, *, progress=None, subdir=None, excluded_subdirs=None):
+ def __pull_strong(self, *, progress=None, pull_buildtrees):
weak_key = self._get_cache_key(strength=_KeyStrength.WEAK)
key = self.__strict_cache_key
- if not self.__artifacts.pull(self, key, progress=progress, subdir=subdir,
- excluded_subdirs=excluded_subdirs):
+ if not self.__artifacts.pull(self, key, progress=progress,
+ pull_buildtrees=pull_buildtrees):
return False
# update weak ref by pointing it to this newly fetched artifact
@@ -2865,10 +2865,10 @@ class Element(Plugin):
# Returns:
# (bool): Whether or not the pull was successful
#
- def __pull_weak(self, *, progress=None, subdir=None, excluded_subdirs=None):
+ def __pull_weak(self, *, progress=None, pull_buildtrees):
weak_key = self._get_cache_key(strength=_KeyStrength.WEAK)
- if not self.__artifacts.pull(self, weak_key, progress=progress, subdir=subdir,
- excluded_subdirs=excluded_subdirs):
+ if not self.__artifacts.pull(self, weak_key, progress=progress,
+ pull_buildtrees=pull_buildtrees):
return False
# extract strong cache key from this newly fetched artifact
@@ -2880,37 +2880,6 @@ class Element(Plugin):
return True
- # __pull_directories():
- #
- # Which directories to include or exclude given the current
- # context
- #
- # Returns:
- # subdir (str): The optional specific subdir to include, based
- # on user context
- # excluded_subdirs (list): The optional list of subdirs to not
- # pull, referenced against subdir value
- #
- def __pull_directories(self):
- context = self._get_context()
-
- # Current default exclusions on pull
- excluded_subdirs = ["buildtree"]
- subdir = ''
-
- # If buildtrees are to be pulled, remove the value from exclusion list
- # and set specific subdir
- if context.pull_buildtrees:
- subdir = "buildtree"
- excluded_subdirs.remove(subdir)
-
- # If file contents are not required for this element, don't pull them.
- # The directories themselves will always be pulled.
- if not context.require_artifact_files and not self._artifact_files_required():
- excluded_subdirs.append("files")
-
- return (subdir, excluded_subdirs)
-
# __cache_sources():
#
# Caches the sources into the local CAS