99 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env python
 | |
| ##############################################################################
 | |
| # Copyright (c) 2013, Lawrence Livermore National Security, LLC.
 | |
| # Produced at the Lawrence Livermore National Laboratory.
 | |
| #
 | |
| # This file is part of Spack.
 | |
| # Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
 | |
| # LLNL-CODE-647188
 | |
| #
 | |
| # For details, see https://scalability-llnl.github.io/spack
 | |
| # Please also see the LICENSE file for our notice and the LGPL.
 | |
| #
 | |
| # This program is free software; you can redistribute it and/or modify
 | |
| # it under the terms of the GNU General Public License (as published by
 | |
| # the Free Software Foundation) version 2.1 dated February 1999.
 | |
| #
 | |
| # This program is distributed in the hope that it will be useful, but
 | |
| # WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
 | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
 | |
| # conditions of the GNU General Public License for more details.
 | |
| #
 | |
| # You should have received a copy of the GNU Lesser General Public License
 | |
| # along with this program; if not, write to the Free Software Foundation,
 | |
| # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 | |
| ##############################################################################
 | |
| import sys
 | |
| if not sys.version_info[:2] >= (2,7):
 | |
|     sys.exit("Spack requires Python 2.7.  Version was %s." % sys.version_info)
 | |
| 
 | |
| import os
 | |
| import argparse
 | |
| 
 | |
| # Find spack's location and its prefix.
 | |
| SPACK_FILE = os.path.realpath(os.path.expanduser(__file__))
 | |
| os.environ["SPACK_FILE"] = SPACK_FILE
 | |
| SPACK_PREFIX = os.path.dirname(os.path.dirname(SPACK_FILE))
 | |
| 
 | |
| # Allow spack libs to be imported in our scripts
 | |
| SPACK_LIB_PATH = os.path.join(SPACK_PREFIX, "lib", "spack")
 | |
| sys.path.insert(0, SPACK_LIB_PATH)
 | |
| 
 | |
| # clean up the scope and start using spack package instead.
 | |
| del SPACK_FILE, SPACK_PREFIX, SPACK_LIB_PATH
 | |
| import spack
 | |
| import spack.tty as tty
 | |
| from spack.error import SpackError
 | |
| 
 | |
| # Command parsing
 | |
| parser = argparse.ArgumentParser(
 | |
|     description='Spack: the Supercomputing PACKage Manager.')
 | |
| parser.add_argument('-V', '--version', action='version',
 | |
|                     version="%s" % spack.spack_version)
 | |
| parser.add_argument('-v', '--verbose', action='store_true', dest='verbose',
 | |
|                     help="Print additional output during builds")
 | |
| parser.add_argument('-d', '--debug', action='store_true', dest='debug',
 | |
|                     help="Write out debug logs during compile")
 | |
| parser.add_argument('-k', '--insecure', action='store_true', dest='insecure',
 | |
|                     help="Do not check ssl certificates when downloading archives.")
 | |
| parser.add_argument('-m', '--mock', action='store_true', dest='mock',
 | |
|                     help="Use mock packages instead of real ones.")
 | |
| 
 | |
| # each command module implements a parser() function, to which we pass its
 | |
| # subparser for setup.
 | |
| subparsers = parser.add_subparsers(metavar='SUBCOMMAND', dest="command")
 | |
| 
 | |
| import spack.cmd
 | |
| for cmd in spack.cmd.commands:
 | |
|     module = spack.cmd.get_module(cmd)
 | |
|     subparser = subparsers.add_parser(cmd, help=module.description)
 | |
|     module.setup_parser(subparser)
 | |
| args = parser.parse_args()
 | |
| 
 | |
| # Set up environment based on args.
 | |
| spack.verbose = args.verbose
 | |
| spack.debug = args.debug
 | |
| if args.mock:
 | |
|     from spack.util.filesystem import new_path
 | |
|     mock_path = new_path(spack.module_path, 'test', 'mock_packages')
 | |
|     spack.packages_path = mock_path
 | |
| 
 | |
| # If the user asked for it, don't check ssl certs.
 | |
| if args.insecure:
 | |
|     tty.warn("You asked for --insecure, which does not check SSL certificates.")
 | |
|     spack.curl.add_default_arg('-k')
 | |
| 
 | |
| # Try to load the particular command asked for and run it
 | |
| command = spack.cmd.get_command(args.command)
 | |
| try:
 | |
|     command(parser, args)
 | |
| except SpackError, e:
 | |
|     if spack.debug:
 | |
|         # In debug mode, raise with a full stack trace.
 | |
|         raise
 | |
|     else:
 | |
|         # Otherwise print a nice simple message.
 | |
|         tty.die(e.message)
 | |
| except KeyboardInterrupt:
 | |
|     tty.die("Got a keyboard interrupt from the user.")
 | 
