Add options to stage to make it just print out stage dir.
This commit is contained in:
		@@ -23,6 +23,9 @@
 | 
				
			|||||||
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 | 
					# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 | 
				
			||||||
##############################################################################
 | 
					##############################################################################
 | 
				
			||||||
import argparse
 | 
					import argparse
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import llnl.util.tty as tty
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import spack
 | 
					import spack
 | 
				
			||||||
import spack.cmd
 | 
					import spack.cmd
 | 
				
			||||||
@@ -33,18 +36,45 @@ 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")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    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(
 | 
					    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):
 | 
					def stage(parser, args):
 | 
				
			||||||
    if not args.packages:
 | 
					    if not args.specs:
 | 
				
			||||||
        tty.die("stage requires at least one package argument")
 | 
					        tty.die("stage requires at least one package argument")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if args.no_checksum:
 | 
					    if args.no_checksum:
 | 
				
			||||||
        spack.do_checksum = False
 | 
					        spack.do_checksum = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    specs = spack.cmd.parse_specs(args.packages, concretize=True)
 | 
					    specs = spack.cmd.parse_specs(args.specs, concretize=True)
 | 
				
			||||||
    for spec in specs:
 | 
					
 | 
				
			||||||
        package = spack.db.get(spec)
 | 
					    if args.print_dir:
 | 
				
			||||||
        package.do_stage()
 | 
					        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()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user