init: factor paths out of spack/__init__.py and into spack.paths module
This commit is contained in:
parent
74aee60f7d
commit
a4d276fbe4
@ -27,51 +27,7 @@
|
||||
import sys
|
||||
import multiprocessing
|
||||
|
||||
from llnl.util.filesystem import ancestor
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Variables describing how Spack is laid out in its prefix.
|
||||
#-----------------------------------------------------------------------------
|
||||
# This file lives in $prefix/lib/spack/spack/__file__
|
||||
spack_root = ancestor(__file__, 4)
|
||||
|
||||
# The spack script itself
|
||||
spack_file = os.path.join(spack_root, "bin", "spack")
|
||||
|
||||
# spack directory hierarchy
|
||||
lib_path = os.path.join(spack_root, "lib", "spack")
|
||||
external_path = os.path.join(lib_path, "external")
|
||||
build_env_path = os.path.join(lib_path, "env")
|
||||
module_path = os.path.join(lib_path, "spack")
|
||||
platform_path = os.path.join(module_path, 'platforms')
|
||||
compilers_path = os.path.join(module_path, "compilers")
|
||||
build_systems_path = os.path.join(module_path, 'build_systems')
|
||||
operating_system_path = os.path.join(module_path, 'operating_systems')
|
||||
test_path = os.path.join(module_path, "test")
|
||||
hooks_path = os.path.join(module_path, "hooks")
|
||||
var_path = os.path.join(spack_root, "var", "spack")
|
||||
stage_path = os.path.join(var_path, "stage")
|
||||
repos_path = os.path.join(var_path, "repos")
|
||||
share_path = os.path.join(spack_root, "share", "spack")
|
||||
|
||||
# Paths to built-in Spack repositories.
|
||||
packages_path = os.path.join(repos_path, "builtin")
|
||||
mock_packages_path = os.path.join(repos_path, "builtin.mock")
|
||||
|
||||
# User configuration location
|
||||
user_config_path = os.path.expanduser('~/.spack')
|
||||
|
||||
prefix = spack_root
|
||||
opt_path = os.path.join(prefix, "opt")
|
||||
etc_path = os.path.join(prefix, "etc")
|
||||
system_etc_path = '/etc'
|
||||
|
||||
# GPG paths.
|
||||
gpg_keys_path = os.path.join(var_path, "gpg")
|
||||
mock_gpg_data_path = os.path.join(var_path, "gpg.mock", "data")
|
||||
mock_gpg_keys_path = os.path.join(var_path, "gpg.mock", "keys")
|
||||
gpg_path = os.path.join(opt_path, "spack", "gpg")
|
||||
|
||||
from spack.paths import var_path, user_config_path
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Below code imports spack packages.
|
||||
@ -280,4 +236,3 @@ def editor_not_found(*args, **kwargs):
|
||||
# Add default values for attributes that would otherwise be modified from
|
||||
# Spack main script
|
||||
debug = False
|
||||
spack_working_dir = None
|
||||
|
@ -83,12 +83,12 @@
|
||||
from llnl.util.filesystem import join_path
|
||||
import llnl.util.tty as tty
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
import spack.error as serr
|
||||
from spack.util.naming import mod_to_class
|
||||
from spack.util.environment import get_path
|
||||
from spack.util.multiproc import parmap
|
||||
from spack.util.spack_yaml import syaml_dict
|
||||
import spack.error as serr
|
||||
|
||||
|
||||
class NoPlatformError(serr.SpackError):
|
||||
@ -463,7 +463,7 @@ def arch_for_spec(arch_spec):
|
||||
@memoized
|
||||
def all_platforms():
|
||||
classes = []
|
||||
mod_path = spack.platform_path
|
||||
mod_path = spack.paths.platform_path
|
||||
parent_module = "spack.platforms"
|
||||
|
||||
for name in list_modules(mod_path):
|
||||
|
@ -63,9 +63,10 @@
|
||||
|
||||
import llnl.util.tty as tty
|
||||
from llnl.util.tty.color import colorize
|
||||
from llnl.util.filesystem import join_path, mkdirp, install, install_tree
|
||||
from llnl.util.filesystem import mkdirp, install, install_tree
|
||||
|
||||
import spack
|
||||
import spack.main
|
||||
import spack.paths
|
||||
import spack.store
|
||||
from spack.environment import EnvironmentModifications, validate
|
||||
from spack.util.environment import env_flag, filter_system_paths, get_path
|
||||
@ -138,21 +139,21 @@ def set_compiler_environment_variables(pkg, env):
|
||||
# and return it
|
||||
# TODO : add additional kwargs for better diagnostics, like requestor,
|
||||
# ttyout, ttyerr, etc.
|
||||
link_dir = spack.build_env_path
|
||||
link_dir = spack.paths.build_env_path
|
||||
|
||||
# Set SPACK compiler variables so that our wrapper knows what to call
|
||||
if compiler.cc:
|
||||
env.set('SPACK_CC', compiler.cc)
|
||||
env.set('CC', join_path(link_dir, compiler.link_paths['cc']))
|
||||
env.set('CC', os.path.join(link_dir, compiler.link_paths['cc']))
|
||||
if compiler.cxx:
|
||||
env.set('SPACK_CXX', compiler.cxx)
|
||||
env.set('CXX', join_path(link_dir, compiler.link_paths['cxx']))
|
||||
env.set('CXX', os.path.join(link_dir, compiler.link_paths['cxx']))
|
||||
if compiler.f77:
|
||||
env.set('SPACK_F77', compiler.f77)
|
||||
env.set('F77', join_path(link_dir, compiler.link_paths['f77']))
|
||||
env.set('F77', os.path.join(link_dir, compiler.link_paths['f77']))
|
||||
if compiler.fc:
|
||||
env.set('SPACK_FC', compiler.fc)
|
||||
env.set('FC', join_path(link_dir, compiler.link_paths['fc']))
|
||||
env.set('FC', os.path.join(link_dir, compiler.link_paths['fc']))
|
||||
|
||||
# Set SPACK compiler rpath flags so that our wrapper knows what to use
|
||||
env.set('SPACK_CC_RPATH_ARG', compiler.cc_rpath_arg)
|
||||
@ -302,20 +303,21 @@ def set_build_environment_variables(pkg, env, dirty):
|
||||
env.prepend_path('PATH', bin_dir)
|
||||
|
||||
# Add spack build environment path with compiler wrappers first in
|
||||
# the path. We add both spack.env_path, which includes default
|
||||
# the path. We add the compiler wrapper path, which includes default
|
||||
# wrappers (cc, c++, f77, f90), AND a subdirectory containing
|
||||
# compiler-specific symlinks. The latter ensures that builds that
|
||||
# are sensitive to the *name* of the compiler see the right name
|
||||
# when we're building with the wrappers.
|
||||
# are sensitive to the *name* of the compiler see the right name when
|
||||
# we're building with the wrappers.
|
||||
#
|
||||
# Conflicts on case-insensitive systems (like "CC" and "cc") are
|
||||
# handled by putting one in the <build_env_path>/case-insensitive
|
||||
# directory. Add that to the path too.
|
||||
env_paths = []
|
||||
compiler_specific = join_path(spack.build_env_path, pkg.compiler.name)
|
||||
for item in [spack.build_env_path, compiler_specific]:
|
||||
compiler_specific = os.path.join(
|
||||
spack.paths.build_env_path, pkg.compiler.name)
|
||||
for item in [spack.paths.build_env_path, compiler_specific]:
|
||||
env_paths.append(item)
|
||||
ci = join_path(item, 'case-insensitive')
|
||||
ci = os.path.join(item, 'case-insensitive')
|
||||
if os.path.isdir(ci):
|
||||
env_paths.append(ci)
|
||||
|
||||
@ -328,12 +330,12 @@ def set_build_environment_variables(pkg, env, dirty):
|
||||
env.set(SPACK_DEBUG, 'TRUE')
|
||||
env.set(SPACK_SHORT_SPEC, pkg.spec.short_spec)
|
||||
env.set(SPACK_DEBUG_LOG_ID, pkg.spec.format('${PACKAGE}-${HASH:7}'))
|
||||
env.set(SPACK_DEBUG_LOG_DIR, spack.spack_working_dir)
|
||||
env.set(SPACK_DEBUG_LOG_DIR, spack.main.spack_working_dir)
|
||||
|
||||
# Add any pkgconfig directories to PKG_CONFIG_PATH
|
||||
for prefix in build_link_prefixes:
|
||||
for directory in ('lib', 'lib64', 'share'):
|
||||
pcdir = join_path(prefix, directory, 'pkgconfig')
|
||||
pcdir = os.path.join(prefix, directory, 'pkgconfig')
|
||||
if os.path.isdir(pcdir):
|
||||
env.prepend_path('PKG_CONFIG_PATH', pcdir)
|
||||
|
||||
@ -374,11 +376,11 @@ def set_module_variables_for_package(pkg, module):
|
||||
m.std_cmake_args = spack.CMakePackage._std_args(pkg)
|
||||
|
||||
# Put spack compiler paths in module scope.
|
||||
link_dir = spack.build_env_path
|
||||
m.spack_cc = join_path(link_dir, pkg.compiler.link_paths['cc'])
|
||||
m.spack_cxx = join_path(link_dir, pkg.compiler.link_paths['cxx'])
|
||||
m.spack_f77 = join_path(link_dir, pkg.compiler.link_paths['f77'])
|
||||
m.spack_fc = join_path(link_dir, pkg.compiler.link_paths['fc'])
|
||||
link_dir = spack.paths.build_env_path
|
||||
m.spack_cc = os.path.join(link_dir, pkg.compiler.link_paths['cc'])
|
||||
m.spack_cxx = os.path.join(link_dir, pkg.compiler.link_paths['cxx'])
|
||||
m.spack_f77 = os.path.join(link_dir, pkg.compiler.link_paths['f77'])
|
||||
m.spack_fc = os.path.join(link_dir, pkg.compiler.link_paths['fc'])
|
||||
|
||||
# Emulate some shell commands for convenience
|
||||
m.pwd = os.getcwd
|
||||
|
@ -33,8 +33,8 @@
|
||||
from llnl.util.tty.color import colorize
|
||||
from llnl.util.filesystem import working_dir
|
||||
|
||||
import spack
|
||||
import spack.config
|
||||
import spack.paths
|
||||
import spack.spec
|
||||
import spack.store
|
||||
from spack.error import SpackError
|
||||
@ -58,8 +58,6 @@
|
||||
SETUP_PARSER = "setup_parser"
|
||||
DESCRIPTION = "description"
|
||||
|
||||
command_path = os.path.join(spack.lib_path, "spack", "cmd")
|
||||
|
||||
#: Names of all commands
|
||||
all_commands = []
|
||||
|
||||
@ -74,7 +72,7 @@ def cmd_name(python_name):
|
||||
return python_name.replace('_', '-')
|
||||
|
||||
|
||||
for file in os.listdir(command_path):
|
||||
for file in os.listdir(spack.paths.command_path):
|
||||
if file.endswith(".py") and not re.search(ignore_files, file):
|
||||
cmd = re.sub(r'.py$', '', file)
|
||||
all_commands.append(cmd_name(cmd))
|
||||
@ -320,5 +318,5 @@ def fmt(s):
|
||||
|
||||
def spack_is_git_repo():
|
||||
"""Ensure that this instance of Spack is a git clone."""
|
||||
with working_dir(spack.prefix):
|
||||
with working_dir(spack.paths.prefix):
|
||||
return os.path.isdir('.git')
|
||||
|
@ -30,7 +30,7 @@
|
||||
from llnl.util.filesystem import working_dir
|
||||
from llnl.util.tty.colify import colify_table
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
from spack.util.executable import which
|
||||
from spack.cmd import spack_is_git_repo
|
||||
|
||||
@ -67,7 +67,7 @@ def blame(parser, args):
|
||||
blame_file = None
|
||||
if os.path.isfile(args.package_name):
|
||||
path = os.path.realpath(args.package_name)
|
||||
if path.startswith(spack.prefix):
|
||||
if path.startswith(spack.paths.prefix):
|
||||
blame_file = path
|
||||
|
||||
if not blame_file:
|
||||
@ -75,7 +75,7 @@ def blame(parser, args):
|
||||
blame_file = pkg.module.__file__.rstrip('c') # .pyc -> .py
|
||||
|
||||
# get git blame for the package
|
||||
with working_dir(spack.prefix):
|
||||
with working_dir(spack.paths.prefix):
|
||||
if args.view == 'git':
|
||||
git('blame', blame_file)
|
||||
return
|
||||
|
@ -27,7 +27,7 @@
|
||||
import llnl.util.tty as tty
|
||||
from llnl.util.filesystem import mkdirp, working_dir
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
from spack.util.executable import ProcessError, which
|
||||
|
||||
_SPACK_UPSTREAM = 'https://github.com/spack/spack'
|
||||
@ -47,7 +47,7 @@ def setup_parser(subparser):
|
||||
|
||||
|
||||
def get_origin_info(remote):
|
||||
git_dir = os.path.join(spack.prefix, '.git')
|
||||
git_dir = os.path.join(spack.paths.prefix, '.git')
|
||||
git = which('git', required=True)
|
||||
try:
|
||||
branch = git('symbolic-ref', '--short', 'HEAD', output=str)
|
||||
|
@ -23,7 +23,7 @@
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
##############################################################################
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
from llnl.util import tty
|
||||
|
||||
|
||||
@ -35,9 +35,10 @@ def print_module_placeholder_help():
|
||||
"To initialize spack's shell commands, you must run one of",
|
||||
"the commands below. Choose the right command for your shell.",
|
||||
"", "For bash and zsh:",
|
||||
" . %s/setup-env.sh" % spack.share_path, "",
|
||||
"For csh and tcsh:", " setenv SPACK_ROOT %s" % spack.prefix,
|
||||
" source %s/setup-env.csh" % spack.share_path, "",
|
||||
" . %s/setup-env.sh" % spack.paths.share_path, "",
|
||||
"For csh and tcsh:",
|
||||
" setenv SPACK_ROOT %s" % spack.paths.prefix,
|
||||
" source %s/setup-env.csh" % spack.paths.share_path, "",
|
||||
"This exposes a 'spack' shell function, which you can use like",
|
||||
" $ spack load package-foo", "",
|
||||
"Running the Spack executable directly (for example, invoking",
|
||||
|
@ -30,7 +30,7 @@
|
||||
import llnl.util.tty as tty
|
||||
from llnl.util.filesystem import working_dir
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
from spack.util.executable import which
|
||||
|
||||
description = "debugging commands for troubleshooting Spack"
|
||||
@ -52,7 +52,7 @@ def _debug_tarball_suffix():
|
||||
if not git:
|
||||
return 'nobranch-nogit-%s' % suffix
|
||||
|
||||
with working_dir(spack.spack_root):
|
||||
with working_dir(spack.paths.prefix):
|
||||
if not os.path.isdir('.git'):
|
||||
return 'nobranch.nogit.%s' % suffix
|
||||
|
||||
|
@ -27,8 +27,8 @@
|
||||
|
||||
import llnl.util.tty as tty
|
||||
|
||||
import spack
|
||||
import spack.cmd
|
||||
import spack.paths
|
||||
from spack.spec import Spec
|
||||
from spack.repository import Repo
|
||||
|
||||
@ -74,23 +74,23 @@ def setup_parser(subparser):
|
||||
# Edits package files by default
|
||||
excl_args.add_argument(
|
||||
'-b', '--build-system', dest='path', action='store_const',
|
||||
const=spack.build_systems_path,
|
||||
const=spack.paths.build_systems_path,
|
||||
help="Edit the build system with the supplied name.")
|
||||
excl_args.add_argument(
|
||||
'-c', '--command', dest='path', action='store_const',
|
||||
const=spack.cmd.command_path,
|
||||
const=spack.paths.command_path,
|
||||
help="edit the command with the supplied name")
|
||||
excl_args.add_argument(
|
||||
'-d', '--docs', dest='path', action='store_const',
|
||||
const=os.path.join(spack.lib_path, 'docs'),
|
||||
const=os.path.join(spack.paths.lib_path, 'docs'),
|
||||
help="edit the docs with the supplied name")
|
||||
excl_args.add_argument(
|
||||
'-t', '--test', dest='path', action='store_const',
|
||||
const=spack.test_path,
|
||||
const=spack.paths.test_path,
|
||||
help="edit the test with the supplied name")
|
||||
excl_args.add_argument(
|
||||
'-m', '--module', dest='path', action='store_const',
|
||||
const=spack.module_path,
|
||||
const=spack.paths.module_path,
|
||||
help="edit the main spack module with the supplied name")
|
||||
|
||||
# Options for editing packages
|
||||
@ -110,14 +110,14 @@ def edit(parser, args):
|
||||
name = args.name
|
||||
|
||||
# By default, edit package files
|
||||
path = spack.packages_path
|
||||
path = spack.paths.packages_path
|
||||
|
||||
# If `--command`, `--test`, or `--module` is chosen, edit those instead
|
||||
if args.path:
|
||||
path = args.path
|
||||
if name:
|
||||
# convert command names to python module name
|
||||
if path == spack.cmd.command_path:
|
||||
if path == spack.paths.command_path:
|
||||
name = spack.cmd.python_name(name)
|
||||
|
||||
path = os.path.join(path, name)
|
||||
|
@ -33,7 +33,7 @@
|
||||
|
||||
from llnl.util.filesystem import working_dir, mkdirp
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
from spack.util.executable import which
|
||||
|
||||
|
||||
@ -53,7 +53,7 @@ def is_package(f):
|
||||
|
||||
|
||||
#: List of directories to exclude from checks.
|
||||
exclude_directories = [spack.external_path]
|
||||
exclude_directories = [spack.paths.external_path]
|
||||
|
||||
|
||||
#: This is a dict that maps:
|
||||
@ -243,11 +243,12 @@ def flake8(parser, args):
|
||||
if file_list:
|
||||
def prefix_relative(path):
|
||||
return os.path.relpath(
|
||||
os.path.abspath(os.path.realpath(path)), spack.prefix)
|
||||
os.path.abspath(os.path.realpath(path)),
|
||||
spack.paths.prefix)
|
||||
|
||||
file_list = [prefix_relative(p) for p in file_list]
|
||||
|
||||
with working_dir(spack.prefix):
|
||||
with working_dir(spack.paths.prefix):
|
||||
if not file_list:
|
||||
file_list = changed_files(args)
|
||||
|
||||
@ -261,7 +262,7 @@ def prefix_relative(path):
|
||||
|
||||
# filter files into a temporary directory with exemptions added.
|
||||
for filename in file_list:
|
||||
src_path = os.path.join(spack.prefix, filename)
|
||||
src_path = os.path.join(spack.paths.prefix, filename)
|
||||
dest_path = os.path.join(temp, filename)
|
||||
filter_file(src_path, dest_path, args.output)
|
||||
|
||||
@ -275,13 +276,14 @@ def prefix_relative(path):
|
||||
if file_list:
|
||||
output += flake8(
|
||||
'--format', 'pylint',
|
||||
'--config=%s' % os.path.join(spack.prefix, '.flake8'),
|
||||
'--config=%s' % os.path.join(spack.paths.prefix,
|
||||
'.flake8'),
|
||||
*file_list, fail_on_error=False, output=str)
|
||||
returncode |= flake8.returncode
|
||||
if package_file_list:
|
||||
output += flake8(
|
||||
'--format', 'pylint',
|
||||
'--config=%s' % os.path.join(spack.prefix,
|
||||
'--config=%s' % os.path.join(spack.paths.prefix,
|
||||
'.flake8_packages'),
|
||||
*package_file_list, fail_on_error=False, output=str)
|
||||
returncode |= flake8.returncode
|
||||
@ -293,7 +295,8 @@ def prefix_relative(path):
|
||||
# print results relative to current working directory
|
||||
def cwd_relative(path):
|
||||
return '{0}: ['.format(os.path.relpath(
|
||||
os.path.join(spack.prefix, path.group(1)), os.getcwd()))
|
||||
os.path.join(
|
||||
spack.paths.prefix, path.group(1)), os.getcwd()))
|
||||
|
||||
for line in output.split('\n'):
|
||||
print(re.sub(r'^(.*): \[', cwd_relative, line))
|
||||
|
@ -22,10 +22,11 @@
|
||||
# License along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
##############################################################################
|
||||
from spack.util.gpg import Gpg
|
||||
import argparse
|
||||
import spack
|
||||
import os
|
||||
import argparse
|
||||
|
||||
import spack.paths
|
||||
from spack.util.gpg import Gpg
|
||||
|
||||
description = "handle GPG actions for spack"
|
||||
section = "packaging"
|
||||
@ -148,7 +149,7 @@ def gpg_trust(args):
|
||||
def gpg_init(args):
|
||||
import_dir = args.import_dir
|
||||
if import_dir is None:
|
||||
import_dir = spack.gpg_keys_path
|
||||
import_dir = spack.paths.gpg_keys_path
|
||||
|
||||
for root, _, filenames in os.walk(import_dir):
|
||||
for filename in filenames:
|
||||
|
@ -30,7 +30,7 @@
|
||||
import llnl.util.filesystem as fs
|
||||
import llnl.util.tty as tty
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
import spack.build_environment
|
||||
import spack.cmd
|
||||
import spack.cmd.common.arguments as arguments
|
||||
@ -137,7 +137,7 @@ def default_log_file(spec):
|
||||
"""
|
||||
fmt = 'test-{x.name}-{x.version}-{hash}.xml'
|
||||
basename = fmt.format(x=spec, hash=spec.dag_hash())
|
||||
dirname = fs.join_path(spack.var_path, 'junit-report')
|
||||
dirname = fs.join_path(spack.paths.var_path, 'junit-report')
|
||||
fs.mkdirp(dirname)
|
||||
return fs.join_path(dirname, basename)
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
import argparse
|
||||
import llnl.util.tty as tty
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
import spack.cmd
|
||||
|
||||
description = "print out locations of various directories used by Spack"
|
||||
@ -73,16 +73,16 @@ def setup_parser(subparser):
|
||||
|
||||
def location(parser, args):
|
||||
if args.module_dir:
|
||||
print(spack.module_path)
|
||||
print(spack.paths.module_path)
|
||||
|
||||
elif args.spack_root:
|
||||
print(spack.prefix)
|
||||
print(spack.paths.prefix)
|
||||
|
||||
elif args.packages:
|
||||
print(spack.repo.first_repo().root)
|
||||
|
||||
elif args.stages:
|
||||
print(spack.stage_path)
|
||||
print(spack.paths.stage_path)
|
||||
|
||||
else:
|
||||
specs = spack.cmd.parse_specs(args.spec)
|
||||
|
@ -31,7 +31,7 @@
|
||||
from llnl.util.tty.colify import colify
|
||||
from llnl.util.filesystem import working_dir
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
from spack.util.executable import which
|
||||
from spack.cmd import spack_is_git_repo
|
||||
|
||||
@ -78,11 +78,11 @@ def setup_parser(subparser):
|
||||
|
||||
|
||||
def list_packages(rev):
|
||||
pkgpath = os.path.join(spack.packages_path, 'packages')
|
||||
relpath = pkgpath[len(spack.prefix + os.path.sep):] + os.path.sep
|
||||
pkgpath = os.path.join(spack.paths.packages_path, 'packages')
|
||||
relpath = pkgpath[len(spack.paths.prefix + os.path.sep):] + os.path.sep
|
||||
|
||||
git = which('git', required=True)
|
||||
with working_dir(spack.prefix):
|
||||
with working_dir(spack.paths.prefix):
|
||||
output = git('ls-tree', '--full-tree', '--name-only', rev, relpath,
|
||||
output=str)
|
||||
return sorted(line[len(relpath):] for line in output.split('\n') if line)
|
||||
@ -96,8 +96,8 @@ def pkg_add(args):
|
||||
pkg_name, filename)
|
||||
|
||||
git = which('git', required=True)
|
||||
with working_dir(spack.prefix):
|
||||
git('-C', spack.packages_path, 'add', filename)
|
||||
with working_dir(spack.paths.prefix):
|
||||
git('-C', spack.paths.packages_path, 'add', filename)
|
||||
|
||||
|
||||
def pkg_list(args):
|
||||
|
@ -34,7 +34,7 @@
|
||||
from llnl.util.filesystem import working_dir
|
||||
from llnl.util.tty.colify import colify
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
|
||||
description = "run spack's unit tests"
|
||||
section = "developer"
|
||||
@ -97,7 +97,7 @@ def test(parser, args, unknown_args):
|
||||
return
|
||||
|
||||
# pytest.ini lives in the root of the spack repository.
|
||||
with working_dir(spack.prefix):
|
||||
with working_dir(spack.paths.prefix):
|
||||
# --list and --long-list print the test output better.
|
||||
if args.list or args.long_list:
|
||||
do_list(args, unknown_args)
|
||||
|
@ -25,12 +25,12 @@
|
||||
"""This module contains functions related to finding compilers on the
|
||||
system and configuring Spack to use multiple compilers.
|
||||
"""
|
||||
import os
|
||||
import imp
|
||||
|
||||
from llnl.util.lang import list_modules
|
||||
from llnl.util.filesystem import join_path
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
import spack.error
|
||||
import spack.spec
|
||||
import spack.config
|
||||
@ -204,7 +204,8 @@ def supported_compilers():
|
||||
See available_compilers() to get a list of all the available
|
||||
versions of supported compilers.
|
||||
"""
|
||||
return sorted(name for name in list_modules(spack.compilers_path))
|
||||
return sorted(
|
||||
name for name in list_modules(spack.paths.compilers_path))
|
||||
|
||||
|
||||
@_auto_compiler_spec
|
||||
@ -357,7 +358,7 @@ def class_for_compiler_name(compiler_name):
|
||||
"""Given a compiler module name, get the corresponding Compiler class."""
|
||||
assert(supported(compiler_name))
|
||||
|
||||
file_path = join_path(spack.compilers_path, compiler_name + ".py")
|
||||
file_path = os.path.join(spack.paths.compilers_path, compiler_name + ".py")
|
||||
compiler_mod = imp.load_source(_imported_compilers_module, file_path)
|
||||
cls = getattr(compiler_mod, mod_to_class(compiler_name))
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
import llnl.util.tty as tty
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
from spack.compiler import Compiler, _version_cache
|
||||
from spack.util.executable import Executable
|
||||
from spack.version import ver
|
||||
@ -48,7 +48,7 @@ class Clang(Compiler):
|
||||
# Subclasses use possible names of Fortran 90 compiler
|
||||
fc_names = ['flang', 'gfortran']
|
||||
|
||||
# Named wrapper links within spack.build_env_path
|
||||
# Named wrapper links within lib/spack/env
|
||||
link_paths = {'cc': 'clang/clang',
|
||||
'cxx': 'clang/clang++'}
|
||||
|
||||
@ -228,7 +228,7 @@ def setup_custom_environment(self, pkg, env):
|
||||
raise OSError(msg)
|
||||
|
||||
real_root = os.path.dirname(os.path.dirname(real_root))
|
||||
developer_root = os.path.join(spack.stage_path,
|
||||
developer_root = os.path.join(spack.paths.stage_path,
|
||||
'xcode-select',
|
||||
self.name,
|
||||
str(self.version))
|
||||
@ -267,8 +267,9 @@ def setup_custom_environment(self, pkg, env):
|
||||
for fname in os.listdir(dev_dir):
|
||||
if fname in bins:
|
||||
os.unlink(os.path.join(dev_dir, fname))
|
||||
os.symlink(os.path.join(spack.build_env_path, 'cc'),
|
||||
os.path.join(dev_dir, fname))
|
||||
os.symlink(
|
||||
os.path.join(spack.paths.build_env_path, 'cc'),
|
||||
os.path.join(dev_dir, fname))
|
||||
|
||||
os.symlink(developer_root, xcode_link)
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
||||
##############################################################################
|
||||
import llnl.util.tty as tty
|
||||
|
||||
import spack
|
||||
import spack.compilers.clang
|
||||
from spack.compiler import Compiler, get_compiler_version
|
||||
from spack.version import ver
|
||||
|
||||
@ -47,7 +47,7 @@ class Gcc(Compiler):
|
||||
# Old compatibility versions may contain XY suffixes.
|
||||
suffixes = [r'-mp-\d\.\d', r'-\d\.\d', r'-\d', r'\d\d']
|
||||
|
||||
# Named wrapper links within spack.build_env_path
|
||||
# Named wrapper links within build_env_path
|
||||
link_paths = {'cc': 'gcc/gcc',
|
||||
'cxx': 'gcc/g++',
|
||||
'f77': 'gcc/gfortran',
|
||||
|
@ -41,7 +41,7 @@ class Intel(Compiler):
|
||||
# Subclasses use possible names of Fortran 90 compiler
|
||||
fc_names = ['ifort']
|
||||
|
||||
# Named wrapper links within spack.build_env_path
|
||||
# Named wrapper links within build_env_path
|
||||
link_paths = {'cc': 'intel/icc',
|
||||
'cxx': 'intel/icpc',
|
||||
'f77': 'intel/ifort',
|
||||
|
@ -38,7 +38,7 @@ class Nag(Compiler):
|
||||
# Subclasses use possible names of Fortran 90 compiler
|
||||
fc_names = ['nagfor']
|
||||
|
||||
# Named wrapper links within spack.build_env_path
|
||||
# Named wrapper links within build_env_path
|
||||
# Use default wrappers for C and C++, in case provided in compilers.yaml
|
||||
link_paths = {
|
||||
'cc': 'cc',
|
||||
|
@ -38,7 +38,7 @@ class Pgi(Compiler):
|
||||
# Subclasses use possible names of Fortran 90 compiler
|
||||
fc_names = ['pgfortran', 'pgf95', 'pgf90']
|
||||
|
||||
# Named wrapper links within spack.build_env_path
|
||||
# Named wrapper links within build_env_path
|
||||
link_paths = {'cc': 'pgi/pgcc',
|
||||
'cxx': 'pgi/pgc++',
|
||||
'f77': 'pgi/pgfortran',
|
||||
|
@ -41,7 +41,7 @@ class Xl(Compiler):
|
||||
# Subclasses use possible names of Fortran 90 compiler
|
||||
fc_names = ['xlf90', 'xlf95', 'xlf2003', 'xlf2008']
|
||||
|
||||
# Named wrapper links within spack.build_env_path
|
||||
# Named wrapper links within build_env_path
|
||||
link_paths = {'cc': 'xl/xlc',
|
||||
'cxx': 'xl/xlc++',
|
||||
'f77': 'xl/xlf',
|
||||
|
@ -42,7 +42,7 @@ class XlR(Compiler):
|
||||
# Subclasses use possible names of Fortran 90 compiler
|
||||
fc_names = ['xlf90_r', 'xlf95_r', 'xlf2003_r', 'xlf2008_r']
|
||||
|
||||
# Named wrapper links within spack.build_env_path
|
||||
# Named wrapper links within build_env_path
|
||||
link_paths = {'cc': 'xl_r/xlc_r',
|
||||
'cxx': 'xl_r/xlc++_r',
|
||||
'f77': 'xl_r/xlf_r',
|
||||
|
@ -64,7 +64,7 @@
|
||||
import llnl.util.tty as tty
|
||||
from llnl.util.filesystem import mkdirp
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
import spack.architecture
|
||||
import spack.schema
|
||||
from spack.error import SpackError
|
||||
@ -218,24 +218,24 @@ def __repr__(self):
|
||||
|
||||
#: Default configuration scope is the lowest-level scope. These are
|
||||
#: versioned with Spack and can be overridden by systems, sites or users.
|
||||
_defaults_path = os.path.join(spack.etc_path, 'spack', 'defaults')
|
||||
_defaults_path = os.path.join(spack.paths.etc_path, 'spack', 'defaults')
|
||||
ConfigScope('defaults', _defaults_path)
|
||||
ConfigScope('defaults/%s' % _platform, os.path.join(_defaults_path, _platform))
|
||||
|
||||
#: System configuration is per machine.
|
||||
#: No system-level configs should be checked into spack by default
|
||||
_system_path = os.path.join(spack.system_etc_path, 'spack')
|
||||
_system_path = os.path.join(spack.paths.system_etc_path, 'spack')
|
||||
ConfigScope('system', _system_path)
|
||||
ConfigScope('system/%s' % _platform, os.path.join(_system_path, _platform))
|
||||
|
||||
#: Site configuration is per spack instance, for sites or projects.
|
||||
#: No site-level configs should be checked into spack by default.
|
||||
_site_path = os.path.join(spack.etc_path, 'spack')
|
||||
_site_path = os.path.join(spack.paths.etc_path, 'spack')
|
||||
ConfigScope('site', _site_path)
|
||||
ConfigScope('site/%s' % _platform, os.path.join(_site_path, _platform))
|
||||
|
||||
#: User configuration can override both spack defaults and site config.
|
||||
_user_path = spack.user_config_path
|
||||
_user_path = spack.paths.user_config_path
|
||||
ConfigScope('user', _user_path)
|
||||
ConfigScope('user/%s' % _platform, os.path.join(_user_path, _platform))
|
||||
|
||||
|
@ -43,7 +43,7 @@
|
||||
"""
|
||||
import imp
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
from llnl.util.filesystem import join_path
|
||||
from llnl.util.lang import memoized, list_modules
|
||||
|
||||
@ -51,9 +51,9 @@
|
||||
@memoized
|
||||
def all_hook_modules():
|
||||
modules = []
|
||||
for name in list_modules(spack.hooks_path):
|
||||
for name in list_modules(spack.paths.hooks_path):
|
||||
mod_name = __name__ + '.' + name
|
||||
path = join_path(spack.hooks_path, name) + ".py"
|
||||
path = join_path(spack.paths.hooks_path, name) + ".py"
|
||||
mod = imp.load_source(mod_name, path)
|
||||
modules.append(mod)
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
||||
|
||||
import llnl.util.tty as tty
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
import spack.modules
|
||||
|
||||
# Character limit for shebang line. Using Linux's 127 characters
|
||||
@ -56,7 +56,7 @@ def filter_shebang(path):
|
||||
original = original_file.read()
|
||||
|
||||
# This line will be prepended to file
|
||||
new_sbang_line = '#!/bin/bash %s/bin/sbang\n' % spack.spack_root
|
||||
new_sbang_line = '#!/bin/bash %s/bin/sbang\n' % spack.paths.prefix
|
||||
|
||||
# Skip files that are already using sbang.
|
||||
if original.startswith(new_sbang_line):
|
||||
|
@ -41,28 +41,29 @@
|
||||
from llnl.util.tty.log import log_output
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
from spack.error import SpackError
|
||||
|
||||
|
||||
# names of profile statistics
|
||||
#: names of profile statistics
|
||||
stat_names = pstats.Stats.sort_arg_dict_default
|
||||
|
||||
# help levels in order of detail (i.e., number of commands shown)
|
||||
#: help levels in order of detail (i.e., number of commands shown)
|
||||
levels = ['short', 'long']
|
||||
|
||||
# intro text for help at different levels
|
||||
#: intro text for help at different levels
|
||||
intro_by_level = {
|
||||
'short': 'These are common spack commands:',
|
||||
'long': 'Complete list of spack commands:',
|
||||
}
|
||||
|
||||
# control top-level spack options shown in basic vs. advanced help
|
||||
#: control top-level spack options shown in basic vs. advanced help
|
||||
options_by_level = {
|
||||
'short': ['h', 'k', 'V', 'color'],
|
||||
'long': 'all'
|
||||
}
|
||||
|
||||
# Longer text for each section, to show in help
|
||||
#: Longer text for each section, to show in help
|
||||
section_descriptions = {
|
||||
'admin': 'administration',
|
||||
'basic': 'query packages',
|
||||
@ -76,8 +77,8 @@
|
||||
'system': 'system',
|
||||
}
|
||||
|
||||
# preferential command order for some sections (e.g., build pipeline is
|
||||
# in execution order, not alphabetical)
|
||||
#: preferential command order for some sections (e.g., build pipeline is
|
||||
#: in execution order, not alphabetical)
|
||||
section_order = {
|
||||
'basic': ['list', 'info', 'find'],
|
||||
'build': ['fetch', 'stage', 'patch', 'configure', 'build', 'restage',
|
||||
@ -85,17 +86,21 @@
|
||||
'packaging': ['create', 'edit']
|
||||
}
|
||||
|
||||
# Properties that commands are required to set.
|
||||
#: Properties that commands are required to set.
|
||||
required_command_properties = ['level', 'section', 'description']
|
||||
|
||||
#: Recorded directory where spack command was originally invoked
|
||||
spack_working_dir = None
|
||||
|
||||
|
||||
def set_working_dir():
|
||||
"""Change the working directory to getcwd, or spack prefix if no cwd."""
|
||||
global spack_working_dir
|
||||
try:
|
||||
spack.spack_working_dir = os.getcwd()
|
||||
spack_working_dir = os.getcwd()
|
||||
except OSError:
|
||||
os.chdir(spack.spack_prefix)
|
||||
spack.spack_working_dir = spack.spack_prefix
|
||||
os.chdir(spack.paths.prefix)
|
||||
spack_working_dir = spack.paths.prefix
|
||||
|
||||
|
||||
def add_all_commands(parser):
|
||||
@ -347,7 +352,7 @@ def setup_main_options(args):
|
||||
|
||||
if args.mock:
|
||||
from spack.repository import RepoPath
|
||||
spack.repo.swap(RepoPath(spack.mock_packages_path))
|
||||
spack.repo.swap(RepoPath(spack.paths.mock_packages_path))
|
||||
|
||||
# If the user asked for it, don't check ssl certs.
|
||||
if args.insecure:
|
||||
|
@ -56,7 +56,8 @@
|
||||
import six
|
||||
import llnl.util.filesystem
|
||||
import llnl.util.tty as tty
|
||||
import spack
|
||||
|
||||
import spack.paths
|
||||
import spack.build_environment as build_environment
|
||||
import spack.environment
|
||||
import spack.tengine as tengine
|
||||
@ -229,7 +230,7 @@ def root_path(name):
|
||||
Returns:
|
||||
root folder for module file installation
|
||||
"""
|
||||
path = roots.get(name, os.path.join(spack.share_path, name))
|
||||
path = roots.get(name, os.path.join(spack.paths.share_path, name))
|
||||
return spack.util.path.canonicalize_path(path)
|
||||
|
||||
|
||||
|
@ -52,7 +52,9 @@
|
||||
from six import with_metaclass
|
||||
|
||||
import llnl.util.tty as tty
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
import spack.store
|
||||
import spack.compilers
|
||||
import spack.directives
|
||||
@ -67,7 +69,7 @@
|
||||
import spack.multimethod
|
||||
import spack.binary_distribution as binary_distribution
|
||||
|
||||
from llnl.util.filesystem import mkdirp, join_path, touch, ancestor
|
||||
from llnl.util.filesystem import mkdirp, join_path, touch
|
||||
from llnl.util.filesystem import working_dir, install_tree, install
|
||||
from llnl.util.lang import memoized
|
||||
from llnl.util.link_tree import LinkTree
|
||||
@ -688,8 +690,7 @@ def package_dir(self):
|
||||
def global_license_dir(self):
|
||||
"""Returns the directory where global license files for all
|
||||
packages are stored."""
|
||||
spack_root = ancestor(__file__, 4)
|
||||
return join_path(spack_root, 'etc', 'spack', 'licenses')
|
||||
return os.path.join(spack.paths.prefix, 'etc', 'spack', 'licenses')
|
||||
|
||||
@property
|
||||
def global_license_file(self):
|
||||
@ -697,8 +698,8 @@ def global_license_file(self):
|
||||
particular package should be stored."""
|
||||
if not self.license_files:
|
||||
return
|
||||
return join_path(self.global_license_dir, self.name,
|
||||
os.path.basename(self.license_files[0]))
|
||||
return os.path.join(self.global_license_dir, self.name,
|
||||
os.path.basename(self.license_files[0]))
|
||||
|
||||
@property
|
||||
def version(self):
|
||||
@ -1107,9 +1108,9 @@ def do_patch(self):
|
||||
# Construct paths to special files in the archive dir used to
|
||||
# keep track of whether patches were successfully applied.
|
||||
archive_dir = self.stage.source_path
|
||||
good_file = join_path(archive_dir, '.spack_patched')
|
||||
no_patches_file = join_path(archive_dir, '.spack_no_patches')
|
||||
bad_file = join_path(archive_dir, '.spack_patch_failed')
|
||||
good_file = os.path.join(archive_dir, '.spack_patched')
|
||||
no_patches_file = os.path.join(archive_dir, '.spack_no_patches')
|
||||
bad_file = os.path.join(archive_dir, '.spack_patch_failed')
|
||||
|
||||
# If we encounter an archive that failed to patch, restage it
|
||||
# so that we can apply all the patches again.
|
||||
@ -1619,7 +1620,7 @@ def check_for_unfinished_installation(
|
||||
partial = True
|
||||
|
||||
stage_is_managed_in_spack = self.stage.path.startswith(
|
||||
spack.stage_path)
|
||||
spack.paths.stage_path)
|
||||
if restage and stage_is_managed_in_spack:
|
||||
self.stage.destroy()
|
||||
self.stage.create()
|
||||
|
80
lib/spack/spack/paths.py
Normal file
80
lib/spack/spack/paths.py
Normal file
@ -0,0 +1,80 @@
|
||||
##############################################################################
|
||||
# Copyright (c) 2013-2018, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory.
|
||||
#
|
||||
# This file is part of Spack.
|
||||
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
|
||||
# LLNL-CODE-647188
|
||||
#
|
||||
# For details, see https://github.com/spack/spack
|
||||
# Please also see the NOTICE and LICENSE files 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 Lesser General Public License (as
|
||||
# published by the Free Software Foundation) version 2.1, 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 Lesser 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
|
||||
##############################################################################
|
||||
"""Defines paths that are part of Spack's directory structure.
|
||||
|
||||
Do not import other ``spack`` modules here. This module is used
|
||||
throughout Spack and should bring in a minimal number of external
|
||||
dependencies.
|
||||
"""
|
||||
import os
|
||||
from llnl.util.filesystem import ancestor
|
||||
|
||||
|
||||
#: This file lives in $prefix/lib/spack/spack/__file__
|
||||
prefix = ancestor(__file__, 4)
|
||||
|
||||
#: synonym for prefix
|
||||
spack_root = prefix
|
||||
|
||||
#: bin directory in the spack prefix
|
||||
bin_path = os.path.join(prefix, "bin")
|
||||
|
||||
#: The spack script itself
|
||||
spack_script = os.path.join(bin_path, "spack")
|
||||
|
||||
# spack directory hierarchy
|
||||
lib_path = os.path.join(prefix, "lib", "spack")
|
||||
external_path = os.path.join(lib_path, "external")
|
||||
build_env_path = os.path.join(lib_path, "env")
|
||||
module_path = os.path.join(lib_path, "spack")
|
||||
command_path = os.path.join(module_path, "cmd")
|
||||
platform_path = os.path.join(module_path, 'platforms')
|
||||
compilers_path = os.path.join(module_path, "compilers")
|
||||
build_systems_path = os.path.join(module_path, 'build_systems')
|
||||
operating_system_path = os.path.join(module_path, 'operating_systems')
|
||||
test_path = os.path.join(module_path, "test")
|
||||
hooks_path = os.path.join(module_path, "hooks")
|
||||
var_path = os.path.join(prefix, "var", "spack")
|
||||
stage_path = os.path.join(var_path, "stage")
|
||||
repos_path = os.path.join(var_path, "repos")
|
||||
share_path = os.path.join(prefix, "share", "spack")
|
||||
|
||||
# Paths to built-in Spack repositories.
|
||||
packages_path = os.path.join(repos_path, "builtin")
|
||||
mock_packages_path = os.path.join(repos_path, "builtin.mock")
|
||||
|
||||
#: User configuration location
|
||||
user_config_path = os.path.expanduser('~/.spack')
|
||||
|
||||
|
||||
opt_path = os.path.join(prefix, "opt")
|
||||
etc_path = os.path.join(prefix, "etc")
|
||||
system_etc_path = '/etc'
|
||||
|
||||
# GPG paths.
|
||||
gpg_keys_path = os.path.join(var_path, "gpg")
|
||||
mock_gpg_data_path = os.path.join(var_path, "gpg.mock", "data")
|
||||
mock_gpg_keys_path = os.path.join(var_path, "gpg.mock", "keys")
|
||||
gpg_path = os.path.join(opt_path, "spack", "gpg")
|
@ -25,7 +25,7 @@
|
||||
import os
|
||||
import re
|
||||
import llnl.util.tty as tty
|
||||
from spack import build_env_path
|
||||
from spack.paths import build_env_path
|
||||
from spack.util.executable import which
|
||||
from spack.architecture import Platform, Target, NoPlatformError
|
||||
from spack.operating_systems.cray_frontend import CrayFrontend
|
||||
|
@ -115,6 +115,7 @@
|
||||
from llnl.util.tty.color import cwrite, colorize, cescape, get_color_when
|
||||
|
||||
import spack
|
||||
|
||||
import spack.architecture
|
||||
import spack.compilers as compilers
|
||||
import spack.error
|
||||
@ -3090,7 +3091,7 @@ def write(s, c):
|
||||
if self.dependencies:
|
||||
out.write(fmt % token_transform(str(self.dag_hash(7))))
|
||||
elif named_str == 'SPACK_ROOT':
|
||||
out.write(fmt % token_transform(spack.prefix))
|
||||
out.write(fmt % token_transform(spack.paths.prefix))
|
||||
elif named_str == 'SPACK_INSTALL':
|
||||
out.write(fmt % token_transform(spack.store.root))
|
||||
elif named_str == 'PREFIX':
|
||||
|
@ -38,7 +38,7 @@
|
||||
from llnl.util.filesystem import mkdirp, join_path, can_access
|
||||
from llnl.util.filesystem import remove_if_dead_link, remove_linked_tree
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
import spack.config
|
||||
import spack.error
|
||||
import spack.fetch_strategy as fs
|
||||
@ -93,7 +93,7 @@ def get_tmp_root():
|
||||
raise StageError("No accessible stage paths in %s", candidates)
|
||||
|
||||
# Return None to indicate we're using a local staging area.
|
||||
if path == canonicalize_path(spack.stage_path):
|
||||
if path == canonicalize_path(spack.paths.stage_path):
|
||||
_use_tmp_stage = False
|
||||
return None
|
||||
|
||||
@ -147,7 +147,7 @@ class Stage(object):
|
||||
|
||||
If spack.use_tmp_stage is True, spack will attempt to create
|
||||
stages in a tmp directory. Otherwise, stages are created directly
|
||||
in spack.stage_path.
|
||||
in spack.paths.stage_path.
|
||||
|
||||
There are two kinds of stages: named and unnamed. Named stages
|
||||
can persist between runs of spack, e.g. if you fetched a tarball
|
||||
@ -216,7 +216,7 @@ def __init__(
|
||||
if path is not None:
|
||||
self.path = path
|
||||
else:
|
||||
self.path = join_path(spack.stage_path, self.name)
|
||||
self.path = join_path(spack.paths.stage_path, self.name)
|
||||
|
||||
# Flag to decide whether to delete the stage folder on exit or not
|
||||
self.keep = keep
|
||||
@ -229,7 +229,7 @@ def __init__(
|
||||
if self.name not in Stage.stage_locks:
|
||||
sha1 = hashlib.sha1(self.name.encode('utf-8')).digest()
|
||||
lock_id = prefix_bits(sha1, bit_length(sys.maxsize))
|
||||
stage_lock_path = join_path(spack.stage_path, '.lock')
|
||||
stage_lock_path = join_path(spack.paths.stage_path, '.lock')
|
||||
|
||||
Stage.stage_locks[self.name] = llnl.util.lock.Lock(
|
||||
stage_lock_path, lock_id, 1)
|
||||
@ -478,17 +478,17 @@ def create(self):
|
||||
"""Creates the stage directory.
|
||||
|
||||
If get_tmp_root() is None, the stage directory is created
|
||||
directly under spack.stage_path, otherwise this will attempt to
|
||||
directly under spack.paths.stage_path, otherwise this will attempt to
|
||||
create a stage in a temporary directory and link it into
|
||||
spack.stage_path.
|
||||
spack.paths.stage_path.
|
||||
|
||||
Spack will use the first writable location in spack.tmp_dirs
|
||||
to create a stage. If there is no valid location in tmp_dirs,
|
||||
fall back to making the stage inside spack.stage_path.
|
||||
fall back to making the stage inside spack.paths.stage_path.
|
||||
|
||||
"""
|
||||
# Create the top-level stage directory
|
||||
mkdirp(spack.stage_path)
|
||||
mkdirp(spack.paths.stage_path)
|
||||
remove_if_dead_link(self.path)
|
||||
|
||||
# If a tmp_root exists then create a directory there and then link it
|
||||
@ -655,7 +655,7 @@ def _get_mirrors():
|
||||
return [val for name, val in iteritems(config)]
|
||||
|
||||
|
||||
def ensure_access(file=spack.stage_path):
|
||||
def ensure_access(file=spack.paths.stage_path):
|
||||
"""Ensure we can access a directory and die with an error if we can't."""
|
||||
if not can_access(file):
|
||||
tty.die("Insufficient permissions for %s" % file)
|
||||
@ -663,9 +663,9 @@ def ensure_access(file=spack.stage_path):
|
||||
|
||||
def purge():
|
||||
"""Remove all build directories in the top-level stage path."""
|
||||
if os.path.isdir(spack.stage_path):
|
||||
for stage_dir in os.listdir(spack.stage_path):
|
||||
stage_path = join_path(spack.stage_path, stage_dir)
|
||||
if os.path.isdir(spack.paths.stage_path):
|
||||
for stage_dir in os.listdir(spack.paths.stage_path):
|
||||
stage_path = join_path(spack.paths.stage_path, stage_dir)
|
||||
remove_linked_tree(stage_path)
|
||||
|
||||
|
||||
|
@ -43,7 +43,7 @@
|
||||
|
||||
"""
|
||||
import os
|
||||
import spack
|
||||
import spack.paths
|
||||
import spack.config
|
||||
from spack.util.path import canonicalize_path
|
||||
from spack.database import Database
|
||||
@ -62,7 +62,7 @@
|
||||
# Set up the install path
|
||||
#
|
||||
root = canonicalize_path(
|
||||
config.get('install_tree', os.path.join(spack.opt_path, 'spack')))
|
||||
config.get('install_tree', os.path.join(spack.paths.opt_path, 'spack')))
|
||||
|
||||
#
|
||||
# Set up the installed packages database
|
||||
|
@ -25,7 +25,7 @@
|
||||
import os
|
||||
import pytest
|
||||
|
||||
import spack
|
||||
from spack.paths import build_env_path
|
||||
from llnl.util.filesystem import join_path
|
||||
from spack.build_environment import dso_suffix, _static_to_shared_library
|
||||
from spack.util.executable import Executable
|
||||
@ -33,9 +33,9 @@
|
||||
|
||||
@pytest.fixture
|
||||
def build_environment():
|
||||
cc = Executable(join_path(spack.build_env_path, "cc"))
|
||||
cxx = Executable(join_path(spack.build_env_path, "c++"))
|
||||
fc = Executable(join_path(spack.build_env_path, "fc"))
|
||||
cc = Executable(join_path(build_env_path, "cc"))
|
||||
cxx = Executable(join_path(build_env_path, "c++"))
|
||||
fc = Executable(join_path(build_env_path, "fc"))
|
||||
|
||||
realcc = "/bin/mycc"
|
||||
prefix = "/spack-test-prefix"
|
||||
|
@ -31,7 +31,7 @@
|
||||
import tempfile
|
||||
import shutil
|
||||
|
||||
import spack
|
||||
from spack.paths import build_env_path
|
||||
from llnl.util.filesystem import mkdirp, join_path
|
||||
from spack.util.executable import Executable
|
||||
|
||||
@ -54,11 +54,11 @@
|
||||
class CompilerWrapperTest(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.cc = Executable(join_path(spack.build_env_path, "cc"))
|
||||
self.ld = Executable(join_path(spack.build_env_path, "ld"))
|
||||
self.cpp = Executable(join_path(spack.build_env_path, "cpp"))
|
||||
self.cxx = Executable(join_path(spack.build_env_path, "c++"))
|
||||
self.fc = Executable(join_path(spack.build_env_path, "fc"))
|
||||
self.cc = Executable(join_path(build_env_path, "cc"))
|
||||
self.ld = Executable(join_path(build_env_path, "ld"))
|
||||
self.cpp = Executable(join_path(build_env_path, "cpp"))
|
||||
self.cxx = Executable(join_path(build_env_path, "c++"))
|
||||
self.fc = Executable(join_path(build_env_path, "fc"))
|
||||
|
||||
self.realcc = "/bin/mycc"
|
||||
self.prefix = "/spack-test-prefix"
|
||||
|
@ -26,7 +26,7 @@
|
||||
|
||||
from llnl.util.filesystem import working_dir
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
import spack.cmd
|
||||
from spack.main import SpackCommand
|
||||
from spack.util.executable import which
|
||||
@ -56,7 +56,7 @@ def test_blame_by_percent(builtin_mock):
|
||||
|
||||
def test_blame_file(builtin_mock):
|
||||
"""Sanity check the blame command to make sure it works."""
|
||||
with working_dir(spack.prefix):
|
||||
with working_dir(spack.paths.prefix):
|
||||
out = blame('bin/spack')
|
||||
assert 'LAST_COMMIT' in out
|
||||
assert 'AUTHOR' in out
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
from llnl.util.filesystem import FileFilter
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
from spack.cmd.flake8 import flake8, setup_parser, changed_files
|
||||
from spack.repository import Repo
|
||||
from spack.util.executable import which
|
||||
@ -50,7 +50,7 @@ def flake8_package():
|
||||
mock package, yields the filename, then undoes the
|
||||
change on cleanup.
|
||||
"""
|
||||
repo = Repo(spack.mock_packages_path)
|
||||
repo = Repo(spack.paths.mock_packages_path)
|
||||
filename = repo.filename_for_package_name('flake8')
|
||||
package = FileFilter(filename)
|
||||
|
||||
@ -69,7 +69,7 @@ def test_changed_files(parser, flake8_package):
|
||||
# changed_files returns file paths relative to the root
|
||||
# directory of Spack. Convert to absolute file paths.
|
||||
files = changed_files(args)
|
||||
files = [os.path.join(spack.spack_root, path) for path in files]
|
||||
files = [os.path.join(spack.paths.prefix, path) for path in files]
|
||||
|
||||
# There will likely be other files that have changed
|
||||
# when these tests are run
|
||||
|
@ -25,7 +25,8 @@
|
||||
import os
|
||||
|
||||
import pytest
|
||||
import spack
|
||||
|
||||
from spack.paths import mock_gpg_data_path, mock_gpg_keys_path
|
||||
import spack.util.gpg as gpg_util
|
||||
from spack.main import SpackCommand
|
||||
from spack.util.executable import ProcessError
|
||||
@ -58,10 +59,10 @@ def has_gnupg2():
|
||||
def test_gpg(gpg, tmpdir, testing_gpg_directory):
|
||||
# Verify a file with an empty keyring.
|
||||
with pytest.raises(ProcessError):
|
||||
gpg('verify', os.path.join(spack.mock_gpg_data_path, 'content.txt'))
|
||||
gpg('verify', os.path.join(mock_gpg_data_path, 'content.txt'))
|
||||
|
||||
# Import the default key.
|
||||
gpg('init', '--from', spack.mock_gpg_keys_path)
|
||||
gpg('init', '--from', mock_gpg_keys_path)
|
||||
|
||||
# List the keys.
|
||||
# TODO: Test the output here.
|
||||
@ -69,14 +70,14 @@ def test_gpg(gpg, tmpdir, testing_gpg_directory):
|
||||
gpg('list', '--signing')
|
||||
|
||||
# Verify the file now that the key has been trusted.
|
||||
gpg('verify', os.path.join(spack.mock_gpg_data_path, 'content.txt'))
|
||||
gpg('verify', os.path.join(mock_gpg_data_path, 'content.txt'))
|
||||
|
||||
# Untrust the default key.
|
||||
gpg('untrust', 'Spack testing')
|
||||
|
||||
# Now that the key is untrusted, verification should fail.
|
||||
with pytest.raises(ProcessError):
|
||||
gpg('verify', os.path.join(spack.mock_gpg_data_path, 'content.txt'))
|
||||
gpg('verify', os.path.join(mock_gpg_data_path, 'content.txt'))
|
||||
|
||||
# Create a file to test signing.
|
||||
test_path = tmpdir.join('to-sign.txt')
|
||||
|
@ -44,8 +44,9 @@ def test_name_parsed_correctly():
|
||||
assert name_parsed_correctly(MyPackage('r-devtools', []), 'devtools')
|
||||
assert name_parsed_correctly(MyPackage('py-numpy', []), 'numpy')
|
||||
assert name_parsed_correctly(MyPackage('octave-splines', []), 'splines')
|
||||
assert name_parsed_correctly(MyPackage('imagemagick', []), 'ImageMagick') # noqa
|
||||
assert name_parsed_correctly(MyPackage('th-data', []), 'TH.data')
|
||||
assert name_parsed_correctly(
|
||||
MyPackage('imagemagick', []), 'ImageMagick')
|
||||
|
||||
# Expected False
|
||||
assert not name_parsed_correctly(MyPackage('', []), 'hdf5')
|
||||
@ -53,7 +54,8 @@ def test_name_parsed_correctly():
|
||||
assert not name_parsed_correctly(MyPackage('yaml-cpp', []), 'yamlcpp')
|
||||
assert not name_parsed_correctly(MyPackage('yamlcpp', []), 'yaml-cpp')
|
||||
assert not name_parsed_correctly(MyPackage('r-py-parser', []), 'parser')
|
||||
assert not name_parsed_correctly(MyPackage('oce', []), 'oce-0.18.0') # noqa
|
||||
assert not name_parsed_correctly(
|
||||
MyPackage('oce', []), 'oce-0.18.0')
|
||||
|
||||
|
||||
def test_version_parsed_correctly():
|
||||
@ -70,7 +72,8 @@ def test_version_parsed_correctly():
|
||||
assert not version_parsed_correctly(MyPackage('', ['1.2.3']), '1.2.4')
|
||||
assert not version_parsed_correctly(MyPackage('', ['3.4a']), '3.4')
|
||||
assert not version_parsed_correctly(MyPackage('', ['3.4']), '3.4b')
|
||||
assert not version_parsed_correctly(MyPackage('', ['0.18.0']), 'oce-0.18.0') # noqa
|
||||
assert not version_parsed_correctly(
|
||||
MyPackage('', ['0.18.0']), 'oce-0.18.0')
|
||||
|
||||
|
||||
def test_url_parse():
|
||||
@ -120,8 +123,10 @@ def test_url_summary():
|
||||
(total_urls, correct_names, correct_versions,
|
||||
name_count_dict, version_count_dict) = url_summary(None)
|
||||
|
||||
assert 0 < correct_names <= sum(name_count_dict.values()) <= total_urls # noqa
|
||||
assert 0 < correct_versions <= sum(version_count_dict.values()) <= total_urls # noqa
|
||||
assert (0 < correct_names <=
|
||||
sum(name_count_dict.values()) <= total_urls)
|
||||
assert (0 < correct_versions <=
|
||||
sum(version_count_dict.values()) <= total_urls)
|
||||
|
||||
# make sure it agrees with the actual command.
|
||||
out = url('summary')
|
||||
|
@ -22,17 +22,18 @@
|
||||
# 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 os
|
||||
import collections
|
||||
import getpass
|
||||
import os
|
||||
import tempfile
|
||||
|
||||
import spack.util.ordereddict
|
||||
import pytest
|
||||
import spack
|
||||
import spack.config
|
||||
import yaml
|
||||
|
||||
import spack.paths
|
||||
import spack.config
|
||||
from spack.util.path import canonicalize_path
|
||||
from spack.util.ordereddict import OrderedDict
|
||||
|
||||
# Some sample compiler config data
|
||||
a_comps = {
|
||||
@ -242,7 +243,7 @@ def config(tmpdir):
|
||||
"""Mocks the configuration scope."""
|
||||
spack.config.clear_config_caches()
|
||||
real_scope = spack.config.config_scopes
|
||||
spack.config.config_scopes = spack.util.ordereddict.OrderedDict()
|
||||
spack.config.config_scopes = OrderedDict()
|
||||
for priority in ['low', 'high']:
|
||||
spack.config.ConfigScope(priority, str(tmpdir.join(priority)))
|
||||
Config = collections.namedtuple('Config', ['real', 'mock'])
|
||||
@ -336,14 +337,14 @@ def check_canonical(self, var, expected):
|
||||
expected + path)
|
||||
|
||||
def test_substitute_config_variables(self):
|
||||
prefix = spack.prefix.lstrip('/')
|
||||
prefix = spack.paths.prefix.lstrip('/')
|
||||
|
||||
assert os.path.join(
|
||||
'/foo/bar/baz', prefix
|
||||
) == canonicalize_path('/foo/bar/baz/$spack')
|
||||
|
||||
assert os.path.join(
|
||||
spack.prefix, 'foo/bar/baz'
|
||||
spack.paths.prefix, 'foo/bar/baz'
|
||||
) == canonicalize_path('$spack/foo/bar/baz/')
|
||||
|
||||
assert os.path.join(
|
||||
@ -355,7 +356,7 @@ def test_substitute_config_variables(self):
|
||||
) == canonicalize_path('/foo/bar/baz/${spack}')
|
||||
|
||||
assert os.path.join(
|
||||
spack.prefix, 'foo/bar/baz'
|
||||
spack.paths.prefix, 'foo/bar/baz'
|
||||
) == canonicalize_path('${spack}/foo/bar/baz/')
|
||||
|
||||
assert os.path.join(
|
||||
@ -432,7 +433,7 @@ def test_keys_are_ordered():
|
||||
|
||||
config_scope = spack.config.ConfigScope(
|
||||
'modules',
|
||||
os.path.join(spack.test_path, 'data', 'config')
|
||||
os.path.join(spack.paths.test_path, 'data', 'config')
|
||||
)
|
||||
|
||||
data = config_scope.get_section('modules')
|
||||
|
@ -36,6 +36,7 @@
|
||||
from llnl.util.filesystem import remove_linked_tree
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
import spack.architecture
|
||||
import spack.database
|
||||
import spack.directory_layout
|
||||
@ -77,11 +78,11 @@ def no_chdir():
|
||||
@pytest.fixture(scope='session', autouse=True)
|
||||
def mock_stage(tmpdir_factory):
|
||||
"""Mocks up a fake stage directory for use by tests."""
|
||||
stage_path = spack.stage_path
|
||||
stage_path = spack.paths.stage_path
|
||||
new_stage = str(tmpdir_factory.mktemp('mock_stage'))
|
||||
spack.stage_path = new_stage
|
||||
spack.paths.stage_path = new_stage
|
||||
yield new_stage
|
||||
spack.stage_path = stage_path
|
||||
spack.paths.stage_path = stage_path
|
||||
|
||||
|
||||
@pytest.fixture(scope='session')
|
||||
@ -118,14 +119,14 @@ def check_for_leftover_stage_files(request, mock_stage, _ignore_stage_files):
|
||||
yield
|
||||
|
||||
files_in_stage = set()
|
||||
if os.path.exists(spack.stage_path):
|
||||
if os.path.exists(spack.paths.stage_path):
|
||||
files_in_stage = set(
|
||||
os.listdir(spack.stage_path)) - _ignore_stage_files
|
||||
os.listdir(spack.paths.stage_path)) - _ignore_stage_files
|
||||
|
||||
if 'disable_clean_stage_check' in request.keywords:
|
||||
# clean up after tests that are expected to be dirty
|
||||
for f in files_in_stage:
|
||||
path = os.path.join(spack.stage_path, f)
|
||||
path = os.path.join(spack.paths.stage_path, f)
|
||||
remove_whatever_it_is(path)
|
||||
else:
|
||||
_ignore_stage_files |= files_in_stage
|
||||
@ -134,7 +135,7 @@ def check_for_leftover_stage_files(request, mock_stage, _ignore_stage_files):
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def mock_fetch_cache(monkeypatch):
|
||||
"""Substitutes spack.fetch_cache with a mock object that does nothing
|
||||
"""Substitutes spack.paths.fetch_cache with a mock object that does nothing
|
||||
and raises on fetch.
|
||||
"""
|
||||
class MockCache(object):
|
||||
@ -171,7 +172,7 @@ def __str__(self):
|
||||
@pytest.fixture(scope='session')
|
||||
def repo_path():
|
||||
"""Session scoped RepoPath object pointing to the mock repository"""
|
||||
return spack.repository.RepoPath(spack.mock_packages_path)
|
||||
return spack.repository.RepoPath(spack.paths.mock_packages_path)
|
||||
|
||||
|
||||
@pytest.fixture(scope='module')
|
||||
@ -216,7 +217,7 @@ def configuration_dir(tmpdir_factory, linux_os):
|
||||
"""
|
||||
tmpdir = tmpdir_factory.mktemp('configurations')
|
||||
# Name of the yaml files in the test/data folder
|
||||
test_path = py.path.local(spack.test_path)
|
||||
test_path = py.path.local(spack.paths.test_path)
|
||||
compilers_yaml = test_path.join('data', 'compilers.yaml')
|
||||
packages_yaml = test_path.join('data', 'packages.yaml')
|
||||
config_yaml = test_path.join('data', 'config.yaml')
|
||||
|
@ -31,6 +31,7 @@
|
||||
from llnl.util.filesystem import join_path
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
from spack.directory_layout import YamlDirectoryLayout
|
||||
from spack.directory_layout import InvalidDirectoryLayoutParametersError
|
||||
from spack.repository import RepoPath
|
||||
@ -186,7 +187,7 @@ def test_handle_unknown_package(
|
||||
or query them again if the package goes away.
|
||||
"""
|
||||
layout, _ = layout_and_dir
|
||||
mock_db = RepoPath(spack.mock_packages_path)
|
||||
mock_db = RepoPath(spack.paths.mock_packages_path)
|
||||
|
||||
not_in_mock = set.difference(
|
||||
set(spack.repo.all_package_names()),
|
||||
|
@ -26,7 +26,7 @@
|
||||
|
||||
import pytest
|
||||
import spack.environment as environment
|
||||
from spack import spack_root
|
||||
from spack.paths import spack_root
|
||||
from spack.environment import EnvironmentModifications
|
||||
from spack.environment import RemovePath, PrependPath, AppendPath
|
||||
from spack.environment import SetEnv, UnsetEnv
|
||||
|
@ -22,16 +22,17 @@
|
||||
# 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 fnmatch
|
||||
import os
|
||||
import fnmatch
|
||||
|
||||
import pytest
|
||||
import six
|
||||
import spack
|
||||
import pytest
|
||||
|
||||
from llnl.util.filesystem import LibraryList, HeaderList
|
||||
from llnl.util.filesystem import find_libraries, find_headers, find
|
||||
|
||||
import spack.paths
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def library_list():
|
||||
@ -211,7 +212,7 @@ def test_add(self, header_list):
|
||||
|
||||
|
||||
#: Directory where the data for the test below is stored
|
||||
search_dir = os.path.join(spack.test_path, 'data', 'directory_search')
|
||||
search_dir = os.path.join(spack.paths.test_path, 'data', 'directory_search')
|
||||
|
||||
|
||||
@pytest.mark.parametrize('search_fn,search_list,root,kwargs', [
|
||||
|
@ -22,16 +22,17 @@
|
||||
# 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 os.path
|
||||
import collections
|
||||
import contextlib
|
||||
import inspect
|
||||
import os.path
|
||||
import yaml
|
||||
|
||||
from six import StringIO
|
||||
import yaml
|
||||
import pytest
|
||||
import spack
|
||||
from six import StringIO
|
||||
|
||||
import spack.paths
|
||||
import spack.spec
|
||||
import spack.modules.common
|
||||
import spack.util.path
|
||||
|
||||
@ -110,7 +111,7 @@ def patch_configuration(monkeypatch, request):
|
||||
writer_key = str(writer_mod.__name__).split('.')[-1]
|
||||
# Root folder for configuration
|
||||
root_for_conf = os.path.join(
|
||||
spack.test_path, 'data', 'modules', writer_key
|
||||
spack.paths.test_path, 'data', 'modules', writer_key
|
||||
)
|
||||
|
||||
def _impl(filename):
|
||||
|
@ -23,12 +23,12 @@
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
##############################################################################
|
||||
"""This test does sanity checks on Spack's builtin package database."""
|
||||
|
||||
import re
|
||||
|
||||
import pytest
|
||||
|
||||
import spack
|
||||
from spack.paths import mock_packages_path
|
||||
from spack.repository import RepoPath
|
||||
|
||||
|
||||
@ -46,7 +46,7 @@ def test_get_all_packages():
|
||||
|
||||
def test_get_all_mock_packages():
|
||||
"""Get the mock packages once each too."""
|
||||
db = RepoPath(spack.mock_packages_path)
|
||||
db = RepoPath(mock_packages_path)
|
||||
spack.repo.swap(db)
|
||||
check_db()
|
||||
spack.repo.swap(db)
|
||||
|
@ -22,10 +22,12 @@
|
||||
# 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 spack
|
||||
import pytest
|
||||
|
||||
from llnl.util.filesystem import join_path
|
||||
|
||||
import spack
|
||||
from spack.paths import mock_packages_path
|
||||
from spack.repository import Repo
|
||||
from spack.util.naming import mod_to_class
|
||||
from spack.spec import Spec
|
||||
@ -42,20 +44,20 @@ def test_package_name(self):
|
||||
assert pkg.name == 'mpich'
|
||||
|
||||
def test_package_filename(self):
|
||||
repo = Repo(spack.mock_packages_path)
|
||||
repo = Repo(mock_packages_path)
|
||||
filename = repo.filename_for_package_name('mpich')
|
||||
assert filename == join_path(
|
||||
spack.mock_packages_path,
|
||||
mock_packages_path,
|
||||
'packages',
|
||||
'mpich',
|
||||
'package.py'
|
||||
)
|
||||
|
||||
def test_nonexisting_package_filename(self):
|
||||
repo = Repo(spack.mock_packages_path)
|
||||
repo = Repo(mock_packages_path)
|
||||
filename = repo.filename_for_package_name('some-nonexisting-package')
|
||||
assert filename == join_path(
|
||||
spack.mock_packages_path,
|
||||
mock_packages_path,
|
||||
'packages',
|
||||
'some-nonexisting-package',
|
||||
'package.py'
|
||||
|
@ -39,6 +39,7 @@
|
||||
import spack.binary_distribution as bindist
|
||||
import spack.cmd.buildcache as buildcache
|
||||
from spack.spec import Spec
|
||||
from spack.paths import mock_gpg_keys_path
|
||||
from spack.fetch_strategy import URLFetchStrategy, FetchStrategyComposite
|
||||
from spack.util.executable import ProcessError
|
||||
from spack.relocate import needs_binary_relocation, needs_text_relocation
|
||||
@ -201,7 +202,7 @@ def test_buildcache(mock_archive, tmpdir):
|
||||
buildcache.buildcache(parser, args)
|
||||
|
||||
# Copy a key to the mirror to have something to download
|
||||
shutil.copyfile(spack.mock_gpg_keys_path + '/external.key',
|
||||
shutil.copyfile(mock_gpg_keys_path + '/external.key',
|
||||
mirror_path + '/external.key')
|
||||
|
||||
args = parser.parse_args(['keys'])
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
from llnl.util.filesystem import working_dir, mkdirp
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
import spack.util.compression
|
||||
from spack.stage import Stage
|
||||
from spack.spec import Spec
|
||||
@ -39,11 +39,11 @@
|
||||
def mock_stage(tmpdir, monkeypatch):
|
||||
# don't disrupt the spack install directory with tests.
|
||||
mock_path = str(tmpdir)
|
||||
monkeypatch.setattr(spack, 'stage_path', mock_path)
|
||||
monkeypatch.setattr(spack.paths, 'stage_path', mock_path)
|
||||
return mock_path
|
||||
|
||||
|
||||
data_path = os.path.join(spack.test_path, 'data', 'patch')
|
||||
data_path = os.path.join(spack.paths.test_path, 'data', 'patch')
|
||||
|
||||
|
||||
@pytest.mark.parametrize('filename, sha256, archive_sha256', [
|
||||
|
@ -40,7 +40,10 @@
|
||||
import pytest
|
||||
|
||||
import llnl.util.tty as tty
|
||||
import spack
|
||||
|
||||
import spack.paths
|
||||
from spack.paths import lib_path as spack_lib_path
|
||||
|
||||
|
||||
#
|
||||
# This test uses pyqver, by Greg Hewgill, which is a dual-source module.
|
||||
@ -55,10 +58,10 @@
|
||||
exclude_paths = [
|
||||
# Jinja 2 has some 'async def' functions that are not treated correctly
|
||||
# by pyqver.py
|
||||
os.path.join(spack.lib_path, 'external', 'jinja2', 'asyncfilters.py'),
|
||||
os.path.join(spack.lib_path, 'external', 'jinja2', 'asyncsupport.py'),
|
||||
os.path.join(spack.lib_path, 'external', 'yaml', 'lib3'),
|
||||
os.path.join(spack.lib_path, 'external', 'pyqver3.py')]
|
||||
os.path.join(spack_lib_path, 'external', 'jinja2', 'asyncfilters.py'),
|
||||
os.path.join(spack_lib_path, 'external', 'jinja2', 'asyncsupport.py'),
|
||||
os.path.join(spack_lib_path, 'external', 'yaml', 'lib3'),
|
||||
os.path.join(spack_lib_path, 'external', 'pyqver3.py')]
|
||||
|
||||
else:
|
||||
import pyqver3 as pyqver
|
||||
@ -68,10 +71,10 @@
|
||||
exclude_paths = [
|
||||
# Jinja 2 has some 'async def' functions that are not treated correctly
|
||||
# by pyqver.py
|
||||
os.path.join(spack.lib_path, 'external', 'jinja2', 'asyncfilters.py'),
|
||||
os.path.join(spack.lib_path, 'external', 'jinja2', 'asyncsupport.py'),
|
||||
os.path.join(spack.lib_path, 'external', 'yaml', 'lib'),
|
||||
os.path.join(spack.lib_path, 'external', 'pyqver2.py')]
|
||||
os.path.join(spack_lib_path, 'external', 'jinja2', 'asyncfilters.py'),
|
||||
os.path.join(spack_lib_path, 'external', 'jinja2', 'asyncsupport.py'),
|
||||
os.path.join(spack_lib_path, 'external', 'yaml', 'lib'),
|
||||
os.path.join(spack_lib_path, 'external', 'pyqver2.py')]
|
||||
|
||||
|
||||
def pyfiles(search_paths, exclude=()):
|
||||
@ -85,7 +88,7 @@ def pyfiles(search_paths, exclude=()):
|
||||
python files in the search path.
|
||||
"""
|
||||
# first file is the spack script.
|
||||
yield spack.spack_file
|
||||
yield spack.paths.spack_script
|
||||
|
||||
# Iterate through the whole spack source tree.
|
||||
for path in search_paths:
|
||||
@ -135,8 +138,8 @@ def check_python_versions(files):
|
||||
messages = []
|
||||
for path in sorted(all_issues[v].keys()):
|
||||
short_path = path
|
||||
if path.startswith(spack.prefix):
|
||||
short_path = path[len(spack.prefix):]
|
||||
if path.startswith(spack.paths.prefix):
|
||||
short_path = path[len(spack.paths.prefix):]
|
||||
|
||||
reasons = [r for r in set(all_issues[v][path]) if r]
|
||||
for lineno, cause in reasons:
|
||||
@ -159,10 +162,11 @@ def check_python_versions(files):
|
||||
@pytest.mark.maybeslow
|
||||
def test_core_module_compatibility():
|
||||
"""Test that all core spack modules work with supported Python versions."""
|
||||
check_python_versions(pyfiles([spack.lib_path], exclude=exclude_paths))
|
||||
check_python_versions(
|
||||
pyfiles([spack_lib_path], exclude=exclude_paths))
|
||||
|
||||
|
||||
@pytest.mark.maybeslow
|
||||
def test_package_module_compatibility():
|
||||
"""Test that all spack packages work with supported Python versions."""
|
||||
check_python_versions(pyfiles([spack.packages_path]))
|
||||
check_python_versions(pyfiles([spack.paths.packages_path]))
|
||||
|
@ -22,17 +22,18 @@
|
||||
# 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 spack
|
||||
|
||||
import pytest
|
||||
|
||||
import spack.repository
|
||||
import spack.paths
|
||||
|
||||
|
||||
# Unlike the repo_path fixture defined in conftest, this has a test-level
|
||||
# scope rather than a session level scope, since we want to edit the
|
||||
# given RepoPath
|
||||
@pytest.fixture()
|
||||
def repo_for_test():
|
||||
return spack.repository.RepoPath(spack.mock_packages_path)
|
||||
return spack.repository.RepoPath(spack.paths.mock_packages_path)
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
|
@ -34,7 +34,7 @@
|
||||
|
||||
from llnl.util.filesystem import mkdirp
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
from spack.hooks.sbang import shebang_too_long, filter_shebangs_in_directory
|
||||
from spack.util.executable import which
|
||||
|
||||
@ -47,7 +47,7 @@
|
||||
node_line = "#!/this/" + ('x' * 200) + "/is/node\n"
|
||||
node_in_text = ("line\n") * 100 + "lua\n" + ("line\n" * 100)
|
||||
node_line_patched = "//!/this/" + ('x' * 200) + "/is/node\n"
|
||||
sbang_line = '#!/bin/bash %s/bin/sbang\n' % spack.spack_root
|
||||
sbang_line = '#!/bin/bash %s/bin/sbang\n' % spack.paths.prefix
|
||||
last_line = "last!\n"
|
||||
|
||||
|
||||
|
@ -23,13 +23,14 @@
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
##############################################################################
|
||||
"""Test that the Stage class works correctly."""
|
||||
import collections
|
||||
import os
|
||||
import collections
|
||||
|
||||
import pytest
|
||||
|
||||
from llnl.util.filesystem import join_path, working_dir
|
||||
|
||||
import pytest
|
||||
import spack
|
||||
import spack.paths
|
||||
import spack.stage
|
||||
import spack.util.executable
|
||||
from spack.stage import Stage
|
||||
@ -101,18 +102,18 @@ def get_stage_path(stage, stage_name):
|
||||
"""
|
||||
if stage_name is not None:
|
||||
# If it is a named stage, we know where the stage should be
|
||||
return join_path(spack.stage_path, stage_name)
|
||||
return os.path.join(spack.paths.stage_path, stage_name)
|
||||
else:
|
||||
# If it's unnamed, ensure that we ran mkdtemp in the right spot.
|
||||
assert stage.path is not None
|
||||
assert stage.path.startswith(spack.stage_path)
|
||||
assert stage.path.startswith(spack.paths.stage_path)
|
||||
return stage.path
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def tmpdir_for_stage(mock_archive):
|
||||
"""Uses a temporary directory for staging"""
|
||||
current = spack.stage_path
|
||||
current = spack.paths.stage_path
|
||||
spack.config.update_config(
|
||||
'config',
|
||||
{'build_stage': [str(mock_archive.test_tmp_dir)]},
|
||||
|
@ -25,12 +25,12 @@
|
||||
"""Tests for web.py."""
|
||||
import os
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
from spack.util.web import spider, find_versions_of_archive
|
||||
from spack.version import ver
|
||||
|
||||
|
||||
web_data_path = os.path.join(spack.test_path, 'data', 'web')
|
||||
web_data_path = os.path.join(spack.paths.test_path, 'data', 'web')
|
||||
|
||||
root = 'file://' + web_data_path + '/index.html'
|
||||
root_tarball = 'file://' + web_data_path + '/foo-0.0.0.tar.gz'
|
||||
|
@ -29,7 +29,7 @@
|
||||
import sys
|
||||
|
||||
import llnl.util.tty as tty
|
||||
import spack
|
||||
|
||||
import spack.error
|
||||
|
||||
__all__ = ['Executable', 'which', 'ProcessError']
|
||||
|
@ -22,14 +22,13 @@
|
||||
# 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 os
|
||||
|
||||
import spack
|
||||
import spack.paths
|
||||
from spack.util.executable import Executable
|
||||
|
||||
|
||||
GNUPGHOME = spack.gpg_path
|
||||
GNUPGHOME = spack.paths.gpg_path
|
||||
|
||||
|
||||
class Gpg(object):
|
||||
|
@ -29,7 +29,7 @@
|
||||
import re
|
||||
from six import StringIO
|
||||
|
||||
import spack
|
||||
import spack.error
|
||||
|
||||
__all__ = [
|
||||
'mod_to_class',
|
||||
|
@ -28,17 +28,19 @@
|
||||
"""
|
||||
import os
|
||||
import re
|
||||
import spack
|
||||
import getpass
|
||||
import tempfile
|
||||
|
||||
import spack.paths
|
||||
|
||||
|
||||
__all__ = [
|
||||
'substitute_config_variables',
|
||||
'canonicalize_path']
|
||||
|
||||
# Substitutions to perform
|
||||
replacements = {
|
||||
'spack': spack.prefix,
|
||||
'spack': spack.paths.prefix,
|
||||
'user': getpass.getuser(),
|
||||
'tempdir': tempfile.gettempdir(),
|
||||
}
|
||||
|
@ -25,14 +25,14 @@
|
||||
from spack import *
|
||||
|
||||
import os
|
||||
import spack
|
||||
import spack.paths
|
||||
|
||||
|
||||
class UrlListTest(Package):
|
||||
"""Mock package with url_list."""
|
||||
homepage = "http://www.url-list-example.com"
|
||||
|
||||
web_data_path = os.path.join(spack.test_path, 'data', 'web')
|
||||
web_data_path = os.path.join(spack.paths.test_path, 'data', 'web')
|
||||
url = 'file://' + web_data_path + '/foo-0.0.0.tar.gz'
|
||||
list_url = 'file://' + web_data_path + '/index.html'
|
||||
list_depth = 3
|
||||
|
@ -41,7 +41,6 @@
|
||||
##########################################################################
|
||||
|
||||
from spack import *
|
||||
import spack
|
||||
import spack.store
|
||||
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
##############################################################################
|
||||
from spack import *
|
||||
from spack import spack_root
|
||||
from spack.paths import spack_root
|
||||
|
||||
|
||||
class GobjectIntrospection(Package):
|
||||
|
@ -42,7 +42,6 @@
|
||||
|
||||
from spack import *
|
||||
|
||||
import spack
|
||||
import spack.store
|
||||
|
||||
import os
|
||||
|
@ -30,12 +30,14 @@
|
||||
# Author: Justin Too <justin@doubleotoo.com>
|
||||
# Date: September 6, 2015
|
||||
#
|
||||
from spack import *
|
||||
import os
|
||||
from contextlib import contextmanager
|
||||
import spack
|
||||
|
||||
from llnl.util.lang import match_predicate
|
||||
|
||||
import spack.store
|
||||
from spack import *
|
||||
|
||||
|
||||
class Perl(Package): # Perl doesn't use Autotools, it should subclass Package
|
||||
"""Perl 5 is a highly capable, feature-rich programming language with over
|
||||
|
@ -32,11 +32,11 @@
|
||||
from llnl.util.lang import match_predicate
|
||||
from llnl.util.filesystem import force_remove
|
||||
|
||||
import spack
|
||||
from spack import *
|
||||
import spack.store
|
||||
import spack.util.spack_json as sjson
|
||||
from spack.util.environment import is_system_path
|
||||
from spack.util.prefix import Prefix
|
||||
import spack.util.spack_json as sjson
|
||||
from spack import *
|
||||
|
||||
|
||||
class Python(AutotoolsPackage):
|
||||
|
Loading…
Reference in New Issue
Block a user