diff options
author | Todd Gamblin <tgamblin@llnl.gov> | 2014-07-25 19:38:48 -0700 |
---|---|---|
committer | Todd Gamblin <tgamblin@llnl.gov> | 2014-08-11 22:47:23 -0700 |
commit | 5a3803de39a67a42a70b4048039c77c4831633b2 (patch) | |
tree | 469cf8b0c1668304fecd1d8d2bd4e145abf17901 /lib | |
parent | 0740c576a714281b0449e33f1b8e4b00e5d9d9c0 (diff) | |
download | spack-5a3803de39a67a42a70b4048039c77c4831633b2.tar.gz spack-5a3803de39a67a42a70b4048039c77c4831633b2.tar.bz2 spack-5a3803de39a67a42a70b4048039c77c4831633b2.tar.xz spack-5a3803de39a67a42a70b4048039c77c4831633b2.zip |
Add options to stage to make it just print out stage dir.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/spack/spack/cmd/stage.py | 42 |
1 files changed, 36 insertions, 6 deletions
diff --git a/lib/spack/spack/cmd/stage.py b/lib/spack/spack/cmd/stage.py index 1bf1f93c2f..7b21faa721 100644 --- a/lib/spack/spack/cmd/stage.py +++ b/lib/spack/spack/cmd/stage.py @@ -23,6 +23,9 @@ # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## import argparse +import os + +import llnl.util.tty as tty import spack import spack.cmd @@ -33,18 +36,45 @@ def setup_parser(subparser): subparser.add_argument( '-n', '--no-checksum', action='store_true', dest='no_checksum', help="Do not check downloaded packages against checksum") + + dir_parser = subparser.add_mutually_exclusive_group() + dir_parser.add_argument( + '-d', '--stage-dir', action='store_const', dest='print_dir', + const='stage', help="Prints out the stage directory for a spec.") + dir_parser.add_argument( + '-b', '--build-dir', action='store_const', dest='print_dir', + const='build', help="Prints out the expanded archive path for a spec.") + subparser.add_argument( - 'packages', nargs=argparse.REMAINDER, help="specs of packages to stage") + 'specs', nargs=argparse.REMAINDER, help="specs of packages to stage") def stage(parser, args): - if not args.packages: + if not args.specs: tty.die("stage requires at least one package argument") if args.no_checksum: spack.do_checksum = False - specs = spack.cmd.parse_specs(args.packages, concretize=True) - for spec in specs: - package = spack.db.get(spec) - package.do_stage() + specs = spack.cmd.parse_specs(args.specs, concretize=True) + + if args.print_dir: + if len(specs) != 1: + tty.die("--stage-dir and --build-dir options only take one spec.") + + spec = specs[0] + pkg = spack.db.get(spec) + + if args.print_dir == 'stage': + print pkg.stage.path + elif args.print_dir == 'build': + if not os.listdir(pkg.stage.path): + tty.die("Stage directory is empty. Run this first:", + "spack stage " + " ".join(args.specs)) + print pkg.stage.expanded_archive_path + + else: + for spec in specs: + package = spack.db.get(spec) + package.do_stage() + |