def env(parser, args): if not args.spec: tty.die("spack env requires a spec.") # Specs may have spaces in them, so if they do, require that the # caller put a '--' between the spec and the command to be # executed. If there is no '--', assume that the spec is the # first argument. sep = '--' if sep in args.spec: s = args.spec.index(sep) spec = args.spec[:s] cmd = args.spec[s+1:] else: spec = args.spec[0] cmd = args.spec[1:] specs = spack.cmd.parse_specs(spec, concretize=True) if len(specs) > 1: tty.die("spack env only takes one spec.") spec = specs[0] build_env.setup_package(spec.package) if not cmd: # If no command act like the "env" command and print out env vars. for key, val in os.environ.items(): print "%s=%s" % (key, val) else: # Otherwise execute the command with the new environment os.execvp(cmd[0], cmd)
def env(parser, args): if not args.spec: tty.die("spack env requires a spec.") # Specs may have spaces in them, so if they do, require that the # caller put a '--' between the spec and the command to be # executed. If there is no '--', assume that the spec is the # first argument. sep = '--' if sep in args.spec: s = args.spec.index(sep) spec = args.spec[:s] cmd = args.spec[s + 1:] else: spec = args.spec[0] cmd = args.spec[1:] specs = spack.cmd.parse_specs(spec, concretize=True) if len(specs) > 1: tty.die("spack env only takes one spec.") spec = specs[0] build_env.setup_package(spec.package, args.dirty) if not cmd: # If no command act like the "env" command and print out env vars. for key, val in os.environ.items(): print("%s=%s" % (key, val)) else: # Otherwise execute the command with the new environment os.execvp(cmd[0], cmd)
def test_negative_make_check(directory, config, mock_packages, working_env): """Tests that Spack correctly ignores false positives in a Makefile.""" # Get a fake package s = Spec('mpich') s.concretize() pkg = spack.repo.get(s) setup_package(pkg, False) with fs.working_dir(directory): assert not pkg._has_make_target('check') pkg._if_make_target_execute('check')
def test_affirmative_make_check(directory, config, mock_packages): """Tests that Spack correctly detects targets in a Makefile.""" # Get a fake package s = Spec('mpich') s.concretize() pkg = spack.repo.get(s) setup_package(pkg, False) with working_dir(directory): assert pkg._has_make_target('check') pkg._if_make_target_execute('check')
def test_negative_make_check(directory, config, mock_packages): """Tests that Spack correctly ignores false positives in a Makefile.""" # Get a fake package s = Spec('mpich') s.concretize() pkg = spack.repo.get(s) setup_package(pkg, False) with working_dir(directory): assert not pkg._has_make_target('check') pkg._if_make_target_execute('check')
def test_negative_ninja_check(directory, config, mock_packages): """Tests that Spack correctly ignores false positives in a Ninja build script.""" # Get a fake package s = Spec('mpich') s.concretize() pkg = spack.repo.get(s) setup_package(pkg, False) with working_dir(directory): assert not pkg._has_ninja_target('check') pkg._if_ninja_target_execute('check')
def emulate_env_utility(cmd_name, context, args): if not args.spec: tty.die("spack %s requires a spec." % cmd_name) # Specs may have spaces in them, so if they do, require that the # caller put a '--' between the spec and the command to be # executed. If there is no '--', assume that the spec is the # first argument. sep = '--' if sep in args.spec: s = args.spec.index(sep) spec = args.spec[:s] cmd = args.spec[s + 1:] else: spec = args.spec[0] cmd = args.spec[1:] if not spec: tty.die("spack %s requires a spec." % cmd_name) specs = spack.cmd.parse_specs(spec, concretize=False) if len(specs) > 1: tty.die("spack %s only takes one spec." % cmd_name) spec = specs[0] spec = spack.cmd.matching_spec_from_env(spec) build_environment.setup_package(spec.package, args.dirty, context) if args.dump: # Dump a source-able environment to a text file. tty.msg("Dumping a source-able environment to {0}".format(args.dump)) dump_environment(args.dump) if args.pickle: # Dump a source-able environment to a pickle file. tty.msg("Pickling a source-able environment to {0}".format( args.pickle)) pickle_environment(args.pickle) if cmd: # Execute the command with the new environment os.execvp(cmd[0], cmd) elif not bool(args.pickle or args.dump): # If no command or dump/pickle option then act like the "env" command # and print out env vars. for key, val in os.environ.items(): print("%s=%s" % (key, val))
def test_affirmative_ninja_check(directory, config, mock_packages): """Tests that Spack correctly detects targets in a Ninja build script.""" # Get a fake package s = Spec('mpich') s.concretize() pkg = spack.repo.get(s) setup_package(pkg, False) with working_dir(directory): assert pkg._has_ninja_target('check') pkg._if_ninja_target_execute('check') # Clean up Ninja files for filename in glob.iglob('.ninja_*'): os.remove(filename)
def test_affirmative_ninja_check(directory, config, mock_packages): """Tests that Spack correctly detects targets in a Ninja build script.""" # Get a fake package s = Spec('mpich') s.concretize() pkg = spack.repo.get(s) setup_package(pkg, False) with working_dir(directory): assert pkg._has_ninja_target('check') pkg._if_ninja_target_execute('check') # Clean up Ninja files for filename in glob.iglob('.ninja_*'): os.remove(filename)
def _func(spec_str): s = Spec('mpich').concretized() setup_package(s.package, False) return s