diff options
author | Darius Makovsky <traveltissues@protonmail.com> | 2019-10-18 11:38:31 +0100 |
---|---|---|
committer | Darius Makovsky <traveltissues@protonmail.com> | 2019-10-18 11:53:53 +0100 |
commit | 3138bf591d07ff8200669ac0bb687748fc90a42f (patch) | |
tree | f3e6792eddc85383f14092900de686555588b4c6 | |
parent | 5d5ec87f81ce9787e270dadf4ccaa59f2293db2c (diff) | |
download | buildstream-traveltissues/tmp2.tar.gz |
use casdirtraveltissues/tmp2
-rw-r--r-- | src/buildstream/plugins/sources/workspace.py | 2 | ||||
-rw-r--r-- | src/buildstream/source.py | 24 |
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]: |