summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarius Makovsky <traveltissues@protonmail.com>2019-10-18 11:38:31 +0100
committerDarius Makovsky <traveltissues@protonmail.com>2019-10-18 11:53:53 +0100
commit3138bf591d07ff8200669ac0bb687748fc90a42f (patch)
treef3e6792eddc85383f14092900de686555588b4c6
parent5d5ec87f81ce9787e270dadf4ccaa59f2293db2c (diff)
downloadbuildstream-traveltissues/tmp2.tar.gz
-rw-r--r--src/buildstream/plugins/sources/workspace.py2
-rw-r--r--src/buildstream/source.py24
2 files changed, 15 insertions, 11 deletions
diff --git a/src/buildstream/plugins/sources/workspace.py b/src/buildstream/plugins/sources/workspace.py
index d62a8a661..5d808e275 100644
--- a/src/buildstream/plugins/sources/workspace.py
+++ b/src/buildstream/plugins/sources/workspace.py
@@ -97,7 +97,7 @@ class WorkspaceSource(Source):
pass # pragma: nocover
def stage(self, directory: Directory) -> None:
- self.stage_into_directory(self.path, directory)
+ self.stage_into_directory(self.__cas_dir, directory)
def _get_local_path(self) -> str:
return self.path
diff --git a/src/buildstream/source.py b/src/buildstream/source.py
index e9170987d..534f984be 100644
--- a/src/buildstream/source.py
+++ b/src/buildstream/source.py
@@ -163,7 +163,7 @@ Class Reference
import os
from contextlib import contextmanager
-from typing import Iterable, Iterator, Optional, Tuple, TYPE_CHECKING
+from typing import Iterable, Iterator, Optional, Tuple, TYPE_CHECKING, Union
from . import _yaml, utils
from .node import MappingNode
@@ -671,22 +671,26 @@ class Source(Plugin):
return project.directory
def stage_into_cas(self, path: str) -> Tuple[Directory, str]:
- cas_dir = self._get_cas_dir()
- self.stage_into_directory(path, cas_dir)
- return cas_dir, self._get_dir_hash(cas_dir)
+ with self.timed_activity("Staging local files into CAS"):
+ cas_dir = self._get_cas_dir()
+ self.stage_into_directory(path, cas_dir)
+ return cas_dir, self._get_dir_hash(cas_dir)
- def stage_into_directory(self, path: str, directory: Directory) -> None:
+ def stage_into_directory(self, path: Union[str, Directory], directory: Directory) -> None:
assert isinstance(directory, Directory)
- with self.timed_activity("Staging local files into CAS"):
+ assert path
+ if isinstance(path, str):
if os.path.isdir(path) and not os.path.islink(path):
result = directory.import_files(path)
else:
result = directory.import_single_file(path)
+ else:
+ result = directory.import_files(path)
- if result.overwritten or result.ignored:
- raise SourceError(
- "Failed to stage source: files clash with existing directory",
- reason='ensure-stage-dir-fail')
+ if result.overwritten or result.ignored:
+ raise SourceError(
+ "Failed to stage source: files clash with existing directory",
+ reason='ensure-stage-dir-fail')
@contextmanager
def tempdir(self) -> Iterator[str]: