Benjamin Schubert pushed to branch chandan/bst-checkout-build at BuildStream / buildstream
Commits:
-
341c3fd6
by Benjamin Schubert at 2018-11-12T11:10:21Z
3 changed files:
Changes:
... | ... | @@ -647,16 +647,24 @@ def shell(app, element, sysroot, mount, isolate, build_, command): |
647 | 647 |
def checkout(app, element, location, force, deps, integrate, hardlinks, tar):
|
648 | 648 |
"""Checkout a built artifact to the specified location
|
649 | 649 |
"""
|
650 |
+ from ..element import Scope
|
|
650 | 651 |
|
651 | 652 |
if hardlinks and tar:
|
652 | 653 |
click.echo("ERROR: options --hardlinks and --tar conflict", err=True)
|
653 | 654 |
sys.exit(-1)
|
654 | 655 |
|
656 |
+ if deps == "run":
|
|
657 |
+ scope = Scope.RUN
|
|
658 |
+ elif deps == "build":
|
|
659 |
+ scope = Scope.BUILD
|
|
660 |
+ elif deps == "none":
|
|
661 |
+ scope = Scope.NONE
|
|
662 |
+ |
|
655 | 663 |
with app.initialized():
|
656 | 664 |
app.stream.checkout(element,
|
657 | 665 |
location=location,
|
658 | 666 |
force=force,
|
659 |
- deps=deps,
|
|
667 |
+ scope=scope,
|
|
660 | 668 |
integrate=integrate,
|
661 | 669 |
hardlinks=hardlinks,
|
662 | 670 |
tar=tar)
|
... | ... | @@ -357,7 +357,7 @@ class Stream(): |
357 | 357 |
# target (str): Target to checkout
|
358 | 358 |
# location (str): Location to checkout the artifact to
|
359 | 359 |
# force (bool): Whether files can be overwritten if necessary
|
360 |
- # deps (str): The dependencies to checkout
|
|
360 |
+ # scope (str): The scope of dependencies to checkout
|
|
361 | 361 |
# integrate (bool): Whether to run integration commands
|
362 | 362 |
# hardlinks (bool): Whether checking out files hardlinked to
|
363 | 363 |
# their artifacts is acceptable
|
... | ... | @@ -370,7 +370,7 @@ class Stream(): |
370 | 370 |
def checkout(self, target, *,
|
371 | 371 |
location=None,
|
372 | 372 |
force=False,
|
373 |
- deps='run',
|
|
373 |
+ scope=Scope.RUN,
|
|
374 | 374 |
integrate=True,
|
375 | 375 |
hardlinks=False,
|
376 | 376 |
tar=False):
|
... | ... | @@ -403,7 +403,7 @@ class Stream(): |
403 | 403 |
|
404 | 404 |
# Stage deps into a temporary sandbox first
|
405 | 405 |
try:
|
406 |
- with target._prepare_sandbox(Scope.RUN, None, deps=deps,
|
|
406 |
+ with target._prepare_sandbox(scope=scope, directory=None,
|
|
407 | 407 |
integrate=integrate) as sandbox:
|
408 | 408 |
|
409 | 409 |
# Copy or move the sandbox to the target directory
|
... | ... | @@ -1315,7 +1315,7 @@ class Element(Plugin): |
1315 | 1315 |
# is used to stage things by the `bst checkout` codepath
|
1316 | 1316 |
#
|
1317 | 1317 |
@contextmanager
|
1318 |
- def _prepare_sandbox(self, scope, directory, deps='run', integrate=True):
|
|
1318 |
+ def _prepare_sandbox(self, scope, directory, shell=False, integrate=True):
|
|
1319 | 1319 |
# bst shell and bst checkout require a local sandbox.
|
1320 | 1320 |
with self.__sandbox(directory, config=self.__sandbox_config, allow_remote=False) as sandbox:
|
1321 | 1321 |
|
... | ... | @@ -1324,26 +1324,18 @@ class Element(Plugin): |
1324 | 1324 |
|
1325 | 1325 |
# Stage something if we need it
|
1326 | 1326 |
if not directory:
|
1327 |
- if scope == Scope.BUILD:
|
|
1327 |
+ if shell and scope == Scope.BUILD:
|
|
1328 | 1328 |
self.stage(sandbox)
|
1329 |
- elif scope == Scope.RUN:
|
|
1330 |
- |
|
1331 |
- if deps == 'build':
|
|
1332 |
- dependency_scope = Scope.BUILD
|
|
1333 |
- elif deps == 'run':
|
|
1334 |
- dependency_scope = Scope.RUN
|
|
1335 |
- else:
|
|
1336 |
- dependency_scope = Scope.NONE
|
|
1337 |
- |
|
1329 |
+ else:
|
|
1338 | 1330 |
# Stage deps in the sandbox root
|
1339 | 1331 |
with self.timed_activity("Staging dependencies", silent_nested=True):
|
1340 |
- self.stage_dependency_artifacts(sandbox, dependency_scope)
|
|
1332 |
+ self.stage_dependency_artifacts(sandbox, scope)
|
|
1341 | 1333 |
|
1342 | 1334 |
# Run any integration commands provided by the dependencies
|
1343 | 1335 |
# once they are all staged and ready
|
1344 | 1336 |
if integrate:
|
1345 | 1337 |
with self.timed_activity("Integrating sandbox"):
|
1346 |
- for dep in self.dependencies(dependency_scope):
|
|
1338 |
+ for dep in self.dependencies(scope):
|
|
1347 | 1339 |
dep.integrate(sandbox)
|
1348 | 1340 |
|
1349 | 1341 |
yield sandbox
|
... | ... | @@ -1845,7 +1837,7 @@ class Element(Plugin): |
1845 | 1837 |
# If directory is not specified, one will be staged using scope
|
1846 | 1838 |
def _shell(self, scope=None, directory=None, *, mounts=None, isolate=False, prompt=None, command=None):
|
1847 | 1839 |
|
1848 |
- with self._prepare_sandbox(scope, directory) as sandbox:
|
|
1840 |
+ with self._prepare_sandbox(scope, directory, shell=True) as sandbox:
|
|
1849 | 1841 |
environment = self.get_environment()
|
1850 | 1842 |
environment = copy.copy(environment)
|
1851 | 1843 |
flags = SandboxFlags.INTERACTIVE | SandboxFlags.ROOT_READ_ONLY
|