summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2014-07-25 19:38:48 -0700
committerTodd Gamblin <tgamblin@llnl.gov>2014-08-11 22:47:23 -0700
commit5a3803de39a67a42a70b4048039c77c4831633b2 (patch)
tree469cf8b0c1668304fecd1d8d2bd4e145abf17901
parent0740c576a714281b0449e33f1b8e4b00e5d9d9c0 (diff)
downloadspack-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.
-rw-r--r--lib/spack/spack/cmd/stage.py42
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()
+