add dependency fetching to mirror creation

This commit is contained in:
Tom Scogland
2015-12-10 08:32:51 -08:00
parent 25f2b01a3c
commit 786f4cd2c2
3 changed files with 12 additions and 3 deletions

View File

@@ -36,7 +36,7 @@ def setup_parser(subparser):
subparser.add_argument(
'-m', '--missing', action='store_true', help="Also fetch all missing dependencies")
subparser.add_argument(
'-d', '--dependencies', action='store_true', help="Also fetch all dependencies")
'-D', '--dependencies', action='store_true', help="Also fetch all dependencies")
subparser.add_argument(
'packages', nargs=argparse.REMAINDER, help="specs of packages to fetch")

View File

@@ -54,6 +54,8 @@ def setup_parser(subparser):
'specs', nargs=argparse.REMAINDER, help="Specs of packages to put in mirror")
create_parser.add_argument(
'-f', '--file', help="File with specs of packages to put in mirror.")
create_parser.add_argument(
'-D', '--dependencies', action='store_true', help="Also fetch all dependencies")
create_parser.add_argument(
'-o', '--one-version-per-spec', action='store_const', const=1, default=0,
help="Only fetch one 'preferred' version per spec, not all known versions.")
@@ -118,7 +120,7 @@ def mirror_create(args):
"""Create a directory to be used as a spack mirror, and fill it with
package archives."""
# try to parse specs from the command line first.
specs = spack.cmd.parse_specs(args.specs)
specs = spack.cmd.parse_specs(args.specs, concretize=True)
# If there is a file, parse each line as a spec and add it to the list.
if args.file:
@@ -131,6 +133,13 @@ def mirror_create(args):
specs = [Spec(n) for n in spack.db.all_package_names()]
specs.sort(key=lambda s: s.format("$_$@").lower())
if args.dependencies:
new_specs = set()
for spec in specs:
for s in spec.traverse():
new_specs.add(s)
specs = list(new_specs)
# Default name for directory is spack-mirror-<DATESTAMP>
directory = args.directory
if not directory: