Merge pull request #291 from trws/stage-path
add a path argument to the stage command
This commit is contained in:
commit
1f93c39c58
@ -35,6 +35,9 @@ def setup_parser(subparser):
|
|||||||
subparser.add_argument(
|
subparser.add_argument(
|
||||||
'-n', '--no-checksum', action='store_true', dest='no_checksum',
|
'-n', '--no-checksum', action='store_true', dest='no_checksum',
|
||||||
help="Do not check downloaded packages against checksum")
|
help="Do not check downloaded packages against checksum")
|
||||||
|
subparser.add_argument(
|
||||||
|
'-p', '--path', dest='path',
|
||||||
|
help="Path to stage package, does not add to spack tree")
|
||||||
|
|
||||||
subparser.add_argument(
|
subparser.add_argument(
|
||||||
'specs', nargs=argparse.REMAINDER, help="specs of packages to stage")
|
'specs', nargs=argparse.REMAINDER, help="specs of packages to stage")
|
||||||
@ -50,4 +53,6 @@ def stage(parser, args):
|
|||||||
specs = spack.cmd.parse_specs(args.specs, concretize=True)
|
specs = spack.cmd.parse_specs(args.specs, concretize=True)
|
||||||
for spec in specs:
|
for spec in specs:
|
||||||
package = spack.repo.get(spec)
|
package = spack.repo.get(spec)
|
||||||
|
if args.path:
|
||||||
|
package.path = args.path
|
||||||
package.do_stage()
|
package.do_stage()
|
||||||
|
@ -335,6 +335,9 @@ def __init__(self, spec):
|
|||||||
if '.' in self.name:
|
if '.' in self.name:
|
||||||
self.name = self.name[self.name.rindex('.') + 1:]
|
self.name = self.name[self.name.rindex('.') + 1:]
|
||||||
|
|
||||||
|
# Allow custom staging paths for packages
|
||||||
|
self.path=None
|
||||||
|
|
||||||
# Sanity check attributes required by Spack directives.
|
# Sanity check attributes required by Spack directives.
|
||||||
spack.directives.ensure_dicts(type(self))
|
spack.directives.ensure_dicts(type(self))
|
||||||
|
|
||||||
@ -445,7 +448,8 @@ def _make_resource_stage(self, root_stage, fetcher, resource):
|
|||||||
resource_stage_folder = self._resource_stage(resource)
|
resource_stage_folder = self._resource_stage(resource)
|
||||||
resource_mirror = join_path(self.name, os.path.basename(fetcher.url))
|
resource_mirror = join_path(self.name, os.path.basename(fetcher.url))
|
||||||
stage = ResourceStage(resource.fetcher, root=root_stage, resource=resource,
|
stage = ResourceStage(resource.fetcher, root=root_stage, resource=resource,
|
||||||
name=resource_stage_folder, mirror_path=resource_mirror)
|
name=resource_stage_folder, mirror_path=resource_mirror,
|
||||||
|
path=self.path)
|
||||||
return stage
|
return stage
|
||||||
|
|
||||||
def _make_root_stage(self, fetcher):
|
def _make_root_stage(self, fetcher):
|
||||||
@ -455,7 +459,7 @@ def _make_root_stage(self, fetcher):
|
|||||||
s = self.spec
|
s = self.spec
|
||||||
stage_name = "%s-%s-%s" % (s.name, s.version, s.dag_hash())
|
stage_name = "%s-%s-%s" % (s.name, s.version, s.dag_hash())
|
||||||
# Build the composite stage
|
# Build the composite stage
|
||||||
stage = Stage(fetcher, mirror_path=mp, name=stage_name)
|
stage = Stage(fetcher, mirror_path=mp, name=stage_name, path=self.path)
|
||||||
return stage
|
return stage
|
||||||
|
|
||||||
def _make_stage(self):
|
def _make_stage(self):
|
||||||
@ -709,7 +713,6 @@ def do_fetch(self, mirror_only=False):
|
|||||||
if spack.do_checksum and self.version in self.versions:
|
if spack.do_checksum and self.version in self.versions:
|
||||||
self.stage.check()
|
self.stage.check()
|
||||||
|
|
||||||
|
|
||||||
def do_stage(self, mirror_only=False):
|
def do_stage(self, mirror_only=False):
|
||||||
"""Unpacks the fetched tarball, then changes into the expanded tarball
|
"""Unpacks the fetched tarball, then changes into the expanded tarball
|
||||||
directory."""
|
directory."""
|
||||||
|
@ -89,7 +89,7 @@ class Stage(object):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, url_or_fetch_strategy,
|
def __init__(self, url_or_fetch_strategy,
|
||||||
name=None, mirror_path=None, keep=False):
|
name=None, mirror_path=None, keep=False, path=None):
|
||||||
"""Create a stage object.
|
"""Create a stage object.
|
||||||
Parameters:
|
Parameters:
|
||||||
url_or_fetch_strategy
|
url_or_fetch_strategy
|
||||||
@ -135,6 +135,9 @@ def __init__(self, url_or_fetch_strategy,
|
|||||||
|
|
||||||
# Try to construct here a temporary name for the stage directory
|
# Try to construct here a temporary name for the stage directory
|
||||||
# If this is a named stage, then construct a named path.
|
# If this is a named stage, then construct a named path.
|
||||||
|
if path is not None:
|
||||||
|
self.path = path
|
||||||
|
else:
|
||||||
self.path = join_path(spack.stage_path, self.name)
|
self.path = join_path(spack.stage_path, self.name)
|
||||||
|
|
||||||
# Flag to decide whether to delete the stage folder on exit or not
|
# Flag to decide whether to delete the stage folder on exit or not
|
||||||
|
Loading…
Reference in New Issue
Block a user