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
 | 
