summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarius Makovsky <traveltissues@protonmail.com>2019-10-22 15:12:37 +0100
committerDarius Makovsky <traveltissues@protonmail.com>2019-10-23 13:08:27 +0100
commit3fc4a971e97344e4b5bdd7ec3b6fb179de9df87f (patch)
tree869b5dd2184d9670e06c016c62a1ba10615f1c23
parentfbc2c878bcee76cbc1c1650e509bf32f3369b411 (diff)
downloadbuildstream-3fc4a971e97344e4b5bdd7ec3b6fb179de9df87f.tar.gz
workspace.py: use the extended source api
-rw-r--r--src/buildstream/plugins/sources/workspace.py29
1 files changed, 6 insertions, 23 deletions
diff --git a/src/buildstream/plugins/sources/workspace.py b/src/buildstream/plugins/sources/workspace.py
index b5b92eb62..5203c19ba 100644
--- a/src/buildstream/plugins/sources/workspace.py
+++ b/src/buildstream/plugins/sources/workspace.py
@@ -48,6 +48,7 @@ class WorkspaceSource(Source):
# pylint: disable=attribute-defined-outside-init
BST_STAGE_VIRTUAL_DIRECTORY = True
+ BST_NO_PRESTAGE_KEY = True
def __init__(self, context, project, meta) -> None:
super().__init__(context, project, meta)
@@ -56,8 +57,6 @@ class WorkspaceSource(Source):
self.__unique_key = None
# the digest of the Directory following the import of the workspace
self.__digest = None
- # the CasBasedDirectory which the path is imported into
- self.__cas_dir = None
def track(self) -> SourceRef:
return None
@@ -79,23 +78,6 @@ class WorkspaceSource(Source):
def set_ref(self, ref: SourceRef, node: MappingNode) -> None:
pass # pragma: nocover
- def get_unique_key(self) -> (str, SourceRef):
- cas = self._get_context().get_cascache()
-
- if self.__cas_dir is None:
- self.__cas_dir = CasBasedDirectory(cas)
-
- if self.__digest is None:
-
- with self.timed_activity("Staging local files into CAS"):
- result = self.__cas_dir.import_files(self.path)
- if result.overwritten or result.ignored:
- raise SourceError(
- "Failed to stage source: files clash with existing directory",
- reason='ensure-stage-dir-fail')
- self.__digest = self.__cas_dir._get_digest().hash
- return (self.path, self.__digest)
-
# init_workspace()
#
# Raises AssertionError: existing workspaces should not be reinitialized
@@ -110,11 +92,12 @@ class WorkspaceSource(Source):
pass # pragma: nocover
def stage(self, directory: Directory) -> None:
- # directory should always be a Directory object
assert isinstance(directory, Directory)
- assert isinstance(self.__cas_dir, CasBasedDirectory)
- with self.timed_activity("Staging Workspace files"):
- result = directory.import_files(self.__cas_dir)
+ with self.timed_activity("Staging local files"):
+ if os.path.isdir(self.path) and not os.path.islink(self.path):
+ result = directory.import_files(self.path)
+ else:
+ result = directory.import_single_file(self.path)
if result.overwritten or result.ignored:
raise SourceError(