summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/spack/llnl/util/lang.py21
-rw-r--r--lib/spack/spack/binary_distribution.py26
-rw-r--r--lib/spack/spack/bootstrap/_common.py4
-rw-r--r--lib/spack/spack/build_systems/_checks.py2
-rw-r--r--lib/spack/spack/build_systems/python.py2
-rw-r--r--lib/spack/spack/cmd/__init__.py6
-rw-r--r--lib/spack/spack/cmd/clean.py2
-rw-r--r--lib/spack/spack/cmd/common/arguments.py4
-rw-r--r--lib/spack/spack/cmd/common/env_utility.py2
-rw-r--r--lib/spack/spack/cmd/config.py4
-rw-r--r--lib/spack/spack/cmd/debug.py6
-rw-r--r--lib/spack/spack/cmd/dependencies.py2
-rw-r--r--lib/spack/spack/cmd/dependents.py2
-rw-r--r--lib/spack/spack/cmd/deprecate.py2
-rw-r--r--lib/spack/spack/cmd/extensions.py2
-rw-r--r--lib/spack/spack/cmd/gc.py2
-rw-r--r--lib/spack/spack/cmd/graph.py2
-rw-r--r--lib/spack/spack/cmd/install.py2
-rw-r--r--lib/spack/spack/cmd/load.py2
-rw-r--r--lib/spack/spack/cmd/mark.py4
-rw-r--r--lib/spack/spack/cmd/reindex.py2
-rw-r--r--lib/spack/spack/cmd/spec.py2
-rw-r--r--lib/spack/spack/cmd/test.py6
-rw-r--r--lib/spack/spack/cmd/uninstall.py4
-rw-r--r--lib/spack/spack/cmd/unload.py2
-rw-r--r--lib/spack/spack/cmd/verify.py2
-rw-r--r--lib/spack/spack/cmd/view.py4
-rw-r--r--lib/spack/spack/cray_manifest.py2
-rw-r--r--lib/spack/spack/database.py6
-rw-r--r--lib/spack/spack/directory_layout.py2
-rw-r--r--lib/spack/spack/environment/environment.py16
-rw-r--r--lib/spack/spack/environment/shell.py4
-rw-r--r--lib/spack/spack/filesystem_view.py28
-rw-r--r--lib/spack/spack/hooks/sbang.py2
-rw-r--r--lib/spack/spack/installer.py52
-rw-r--r--lib/spack/spack/main.py2
-rw-r--r--lib/spack/spack/modules/common.py4
-rw-r--r--lib/spack/spack/package_base.py38
-rw-r--r--lib/spack/spack/relocate.py2
-rw-r--r--lib/spack/spack/rewiring.py12
-rw-r--r--lib/spack/spack/solver/asp.py4
-rw-r--r--lib/spack/spack/spec.py20
-rw-r--r--lib/spack/spack/store.py80
-rw-r--r--lib/spack/spack/subprocess_context.py10
-rw-r--r--lib/spack/spack/test/bindist.py20
-rw-r--r--lib/spack/spack/test/bootstrap.py10
-rw-r--r--lib/spack/spack/test/cmd/config.py2
-rw-r--r--lib/spack/spack/test/cmd/dependencies.py6
-rw-r--r--lib/spack/spack/test/cmd/dependents.py8
-rw-r--r--lib/spack/spack/test/cmd/deprecate.py46
-rw-r--r--lib/spack/spack/test/cmd/dev_build.py4
-rw-r--r--lib/spack/spack/test/cmd/env.py16
-rw-r--r--lib/spack/spack/test/cmd/external.py2
-rw-r--r--lib/spack/spack/test/cmd/find.py2
-rw-r--r--lib/spack/spack/test/cmd/install.py16
-rw-r--r--lib/spack/spack/test/cmd/mark.py10
-rw-r--r--lib/spack/spack/test/cmd/reindex.py20
-rw-r--r--lib/spack/spack/test/cmd/spec.py2
-rw-r--r--lib/spack/spack/test/cmd/uninstall.py32
-rw-r--r--lib/spack/spack/test/cmd/verify.py4
-rw-r--r--lib/spack/spack/test/concretize.py6
-rw-r--r--lib/spack/spack/test/conftest.py4
-rw-r--r--lib/spack/spack/test/cray_manifest.py2
-rw-r--r--lib/spack/spack/test/database.py100
-rw-r--r--lib/spack/spack/test/install.py4
-rw-r--r--lib/spack/spack/test/installer.py24
-rw-r--r--lib/spack/spack/test/rewiring.py24
-rw-r--r--lib/spack/spack/test/sbang.py8
-rw-r--r--lib/spack/spack/test/spec_semantics.py2
-rw-r--r--lib/spack/spack/test/spec_syntax.py4
-rw-r--r--lib/spack/spack/test/verification.py8
-rw-r--r--lib/spack/spack/verify.py10
-rw-r--r--var/spack/repos/builtin.mock/packages/old-sbang/package.py2
73 files changed, 377 insertions, 426 deletions
diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py
index ae75db621f..607b093de8 100644
--- a/lib/spack/llnl/util/lang.py
+++ b/lib/spack/llnl/util/lang.py
@@ -843,27 +843,6 @@ class Singleton:
return repr(self.instance)
-class LazyReference:
- """Lazily evaluated reference to part of a singleton."""
-
- def __init__(self, ref_function):
- self.ref_function = ref_function
-
- def __getattr__(self, name):
- if name == "ref_function":
- raise AttributeError()
- return getattr(self.ref_function(), name)
-
- def __getitem__(self, name):
- return self.ref_function()[name]
-
- def __str__(self):
- return str(self.ref_function())
-
- def __repr__(self):
- return repr(self.ref_function())
-
-
def load_module_from_file(module_name, module_path):
"""Loads a python module from the path of the corresponding file.
diff --git a/lib/spack/spack/binary_distribution.py b/lib/spack/spack/binary_distribution.py
index 407ee4d029..ccdfd5cab9 100644
--- a/lib/spack/spack/binary_distribution.py
+++ b/lib/spack/spack/binary_distribution.py
@@ -718,7 +718,7 @@ def get_buildfile_manifest(spec):
# look for them to decide if text file needs to be relocated or not
prefixes = [d.prefix for d in spec.traverse(root=True, deptype="all") if not d.external]
prefixes.append(spack.hooks.sbang.sbang_install_path())
- prefixes.append(str(spack.store.layout.root))
+ prefixes.append(str(spack.store.STORE.layout.root))
# Create a giant regex that matches all prefixes
regex = utf8_paths_to_single_binary_regex(prefixes)
@@ -731,7 +731,7 @@ def get_buildfile_manifest(spec):
for rel_path in visitor.symlinks:
abs_path = os.path.join(root, rel_path)
link = os.readlink(abs_path)
- if os.path.isabs(link) and link.startswith(spack.store.layout.root):
+ if os.path.isabs(link) and link.startswith(spack.store.STORE.layout.root):
data["link_to_relocate"].append(rel_path)
# Non-symlinks.
@@ -779,9 +779,9 @@ def get_buildinfo_dict(spec):
return {
"sbang_install_path": spack.hooks.sbang.sbang_install_path(),
- "buildpath": spack.store.layout.root,
+ "buildpath": spack.store.STORE.layout.root,
"spackprefix": spack.paths.prefix,
- "relative_prefix": os.path.relpath(spec.prefix, spack.store.layout.root),
+ "relative_prefix": os.path.relpath(spec.prefix, spack.store.STORE.layout.root),
"relocate_textfiles": manifest["text_to_relocate"],
"relocate_binaries": manifest["binary_to_relocate"],
"relocate_links": manifest["link_to_relocate"],
@@ -1262,7 +1262,7 @@ def _build_tarball_in_stage_dir(spec: Spec, out_url: str, stage_dir: str, option
# without concretizing with the current spack packages
# and preferences
- spec_file = spack.store.layout.spec_file_path(spec)
+ spec_file = spack.store.STORE.layout.spec_file_path(spec)
specfile_name = tarball_name(spec, ".spec.json")
specfile_path = os.path.realpath(os.path.join(cache_prefix, specfile_name))
signed_specfile_path = "{0}.sig".format(specfile_path)
@@ -1311,7 +1311,7 @@ def _build_tarball_in_stage_dir(spec: Spec, out_url: str, stage_dir: str, option
# Add original install prefix relative to layout root to spec.json.
# This will be used to determine is the directory layout has changed.
buildinfo = {}
- buildinfo["relative_prefix"] = os.path.relpath(spec.prefix, spack.store.layout.root)
+ buildinfo["relative_prefix"] = os.path.relpath(spec.prefix, spack.store.STORE.layout.root)
spec_dict["buildinfo"] = buildinfo
with open(specfile_path, "w") as outfile:
@@ -1369,7 +1369,7 @@ def specs_to_be_packaged(
packageable = lambda n: not n.external and n.installed
# Mass install check
- with spack.store.db.read_transaction():
+ with spack.store.STORE.db.read_transaction():
return list(filter(packageable, nodes))
@@ -1606,7 +1606,7 @@ def relocate_package(spec):
"""
workdir = str(spec.prefix)
buildinfo = read_buildinfo_file(workdir)
- new_layout_root = str(spack.store.layout.root)
+ new_layout_root = str(spack.store.STORE.layout.root)
new_prefix = str(spec.prefix)
new_rel_prefix = str(os.path.relpath(new_prefix, new_layout_root))
new_spack_prefix = str(spack.paths.prefix)
@@ -1854,7 +1854,7 @@ def extract_tarball(spec, download_result, unsigned=False, force=False):
tarfile_path, size, contents, "sha256", expected, local_checksum
)
- new_relative_prefix = str(os.path.relpath(spec.prefix, spack.store.layout.root))
+ new_relative_prefix = str(os.path.relpath(spec.prefix, spack.store.STORE.layout.root))
# if the original relative prefix is in the spec file use it
buildinfo = spec_dict.get("buildinfo", {})
old_relative_prefix = buildinfo.get("relative_prefix", new_relative_prefix)
@@ -1866,7 +1866,7 @@ def extract_tarball(spec, download_result, unsigned=False, force=False):
# The directory created is the base directory name of the old prefix.
# Moving the old prefix name to the new prefix location should preserve
# hard links and symbolic links.
- extract_tmp = os.path.join(spack.store.layout.root, ".tmp")
+ extract_tmp = os.path.join(spack.store.STORE.layout.root, ".tmp")
mkdirp(extract_tmp)
extracted_dir = os.path.join(extract_tmp, old_relative_prefix.split(os.path.sep)[-1])
@@ -1893,7 +1893,9 @@ def extract_tarball(spec, download_result, unsigned=False, force=False):
raise e
else:
manifest_file = os.path.join(
- spec.prefix, spack.store.layout.metadata_dir, spack.store.layout.manifest_file_name
+ spec.prefix,
+ spack.store.STORE.layout.metadata_dir,
+ spack.store.STORE.layout.manifest_file_name,
)
if not os.path.exists(manifest_file):
spec_id = spec.format("{name}/{hash:7}")
@@ -1952,7 +1954,7 @@ def install_root_node(spec, unsigned=False, force=False, sha256=None):
tty.msg('Installing "{0}" from a buildcache'.format(spec.format()))
extract_tarball(spec, download_result, unsigned, force)
spack.hooks.post_install(spec, False)
- spack.store.db.add(spec, spack.store.layout)
+ spack.store.STORE.db.add(spec, spack.store.STORE.layout)
def install_single_spec(spec, unsigned=False, force=False):
diff --git a/lib/spack/spack/bootstrap/_common.py b/lib/spack/spack/bootstrap/_common.py
index 555c11d809..69f32d6263 100644
--- a/lib/spack/spack/bootstrap/_common.py
+++ b/lib/spack/spack/bootstrap/_common.py
@@ -50,7 +50,7 @@ def _try_import_from_store(
# We have to run as part of this python interpreter
query_spec += " ^" + spec_for_current_python()
- installed_specs = spack.store.db.query(query_spec, installed=True)
+ installed_specs = spack.store.STORE.db.query(query_spec, installed=True)
for candidate_spec in installed_specs:
pkg = candidate_spec["python"].package
@@ -183,7 +183,7 @@ def _executables_in_store(
executables_str = ", ".join(executables)
msg = "[BOOTSTRAP EXECUTABLES {0}] Try installed specs with query '{1}'"
tty.debug(msg.format(executables_str, query_spec))
- installed_specs = spack.store.db.query(query_spec, installed=True)
+ installed_specs = spack.store.STORE.db.query(query_spec, installed=True)
if installed_specs:
for concrete_spec in installed_specs:
bin_dir = concrete_spec.prefix.bin
diff --git a/lib/spack/spack/build_systems/_checks.py b/lib/spack/spack/build_systems/_checks.py
index 94c59aaa05..38fada308f 100644
--- a/lib/spack/spack/build_systems/_checks.py
+++ b/lib/spack/spack/build_systems/_checks.py
@@ -39,7 +39,7 @@ def sanity_check_prefix(builder: spack.builder.Builder):
check_paths(pkg.sanity_check_is_file, "file", os.path.isfile)
check_paths(pkg.sanity_check_is_dir, "directory", os.path.isdir)
- ignore_file = llnl.util.lang.match_predicate(spack.store.layout.hidden_file_regexes)
+ ignore_file = llnl.util.lang.match_predicate(spack.store.STORE.layout.hidden_file_regexes)
if all(map(ignore_file, os.listdir(pkg.prefix))):
msg = "Install failed for {0}. Nothing was installed!"
raise spack.installer.InstallError(msg.format(pkg.name))
diff --git a/lib/spack/spack/build_systems/python.py b/lib/spack/spack/build_systems/python.py
index 5575379b8b..5a685763d6 100644
--- a/lib/spack/spack/build_systems/python.py
+++ b/lib/spack/spack/build_systems/python.py
@@ -286,7 +286,7 @@ class PythonPackage(PythonExtension):
spack.spec.Spec: The external Spec for python most likely to be compatible with self.spec
"""
python_externals_installed = [
- s for s in spack.store.db.query("python") if s.prefix == self.spec.external_path
+ s for s in spack.store.STORE.db.query("python") if s.prefix == self.spec.external_path
]
if python_externals_installed:
return python_externals_installed[0]
diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py
index 74daeb6243..e9369ead64 100644
--- a/lib/spack/spack/cmd/__init__.py
+++ b/lib/spack/spack/cmd/__init__.py
@@ -273,9 +273,9 @@ def disambiguate_spec_from_hashes(spec, hashes, local=False, installed=True, fir
See ``spack.database.Database._query`` for details.
"""
if local:
- matching_specs = spack.store.db.query_local(spec, hashes=hashes, installed=installed)
+ matching_specs = spack.store.STORE.db.query_local(spec, hashes=hashes, installed=installed)
else:
- matching_specs = spack.store.db.query(spec, hashes=hashes, installed=installed)
+ matching_specs = spack.store.STORE.db.query(spec, hashes=hashes, installed=installed)
if not matching_specs:
tty.die("Spec '%s' matches no installed packages." % spec)
@@ -473,7 +473,7 @@ def display_specs(specs, args=None, **kwargs):
out = ""
# getting lots of prefixes requires DB lookups. Ensure
# all spec.prefix calls are in one transaction.
- with spack.store.db.read_transaction():
+ with spack.store.STORE.db.read_transaction():
for string, spec in formatted:
if not string:
# print newline from above
diff --git a/lib/spack/spack/cmd/clean.py b/lib/spack/spack/cmd/clean.py
index eeb37f909d..44e7f8e49e 100644
--- a/lib/spack/spack/cmd/clean.py
+++ b/lib/spack/spack/cmd/clean.py
@@ -115,7 +115,7 @@ def clean(parser, args):
tty.msg("Removing all temporary build stages")
spack.stage.purge()
# Temp directory where buildcaches are extracted
- extract_tmp = os.path.join(spack.store.layout.root, ".tmp")
+ extract_tmp = os.path.join(spack.store.STORE.layout.root, ".tmp")
if os.path.exists(extract_tmp):
tty.debug("Removing {0}".format(extract_tmp))
shutil.rmtree(extract_tmp)
diff --git a/lib/spack/spack/cmd/common/arguments.py b/lib/spack/spack/cmd/common/arguments.py
index fbb963e0c7..9427707002 100644
--- a/lib/spack/spack/cmd/common/arguments.py
+++ b/lib/spack/spack/cmd/common/arguments.py
@@ -82,12 +82,12 @@ class ConstraintAction(argparse.Action):
# return everything for an empty query.
if not qspecs:
- return spack.store.db.query(**kwargs)
+ return spack.store.STORE.db.query(**kwargs)
# Return only matching stuff otherwise.
specs = {}
for spec in qspecs:
- for s in spack.store.db.query(spec, **kwargs):
+ for s in spack.store.STORE.db.query(spec, **kwargs):
# This is fast for already-concrete specs
specs[s.dag_hash()] = s
diff --git a/lib/spack/spack/cmd/common/env_utility.py b/lib/spack/spack/cmd/common/env_utility.py
index a616b79d8f..a0459a4439 100644
--- a/lib/spack/spack/cmd/common/env_utility.py
+++ b/lib/spack/spack/cmd/common/env_utility.py
@@ -106,7 +106,7 @@ def emulate_env_utility(cmd_name, context, args):
visitor = AreDepsInstalledVisitor(context=context)
# Mass install check needs read transaction.
- with spack.store.db.read_transaction():
+ with spack.store.STORE.db.read_transaction():
traverse.traverse_breadth_first_with_visitor([spec], traverse.CoverNodesVisitor(visitor))
if visitor.has_uninstalled_deps:
diff --git a/lib/spack/spack/cmd/config.py b/lib/spack/spack/cmd/config.py
index 89461e5ea7..1d85876af7 100644
--- a/lib/spack/spack/cmd/config.py
+++ b/lib/spack/spack/cmd/config.py
@@ -399,8 +399,8 @@ def config_prefer_upstream(args):
if scope is None:
scope = spack.config.default_modify_scope("packages")
- all_specs = set(spack.store.db.query(installed=True))
- local_specs = set(spack.store.db.query_local(installed=True))
+ all_specs = set(spack.store.STORE.db.query(installed=True))
+ local_specs = set(spack.store.STORE.db.query_local(installed=True))
pref_specs = local_specs if args.local else all_specs - local_specs
conflicting_variants = set()
diff --git a/lib/spack/spack/cmd/debug.py b/lib/spack/spack/cmd/debug.py
index b3224f0b1b..7f729ad83e 100644
--- a/lib/spack/spack/cmd/debug.py
+++ b/lib/spack/spack/cmd/debug.py
@@ -60,16 +60,16 @@ def create_db_tarball(args):
tarball_name = "spack-db.%s.tar.gz" % _debug_tarball_suffix()
tarball_path = os.path.abspath(tarball_name)
- base = os.path.basename(str(spack.store.root))
+ base = os.path.basename(str(spack.store.STORE.root))
transform_args = []
if "GNU" in tar("--version", output=str):
transform_args = ["--transform", "s/^%s/%s/" % (base, tarball_name)]
else:
transform_args = ["-s", "/^%s/%s/" % (base, tarball_name)]
- wd = os.path.dirname(str(spack.store.root))
+ wd = os.path.dirname(str(spack.store.STORE.root))
with working_dir(wd):
- files = [spack.store.db._index_path]
+ files = [spack.store.STORE.db._index_path]
files += glob("%s/*/*/*/.spack/spec.json" % base)
files += glob("%s/*/*/*/.spack/spec.yaml" % base)
files = [os.path.relpath(f) for f in files]
diff --git a/lib/spack/spack/cmd/dependencies.py b/lib/spack/spack/cmd/dependencies.py
index 29bec72825..b537fad000 100644
--- a/lib/spack/spack/cmd/dependencies.py
+++ b/lib/spack/spack/cmd/dependencies.py
@@ -60,7 +60,7 @@ def dependencies(parser, args):
format_string = "{name}{@version}{%compiler}{/hash:7}"
if sys.stdout.isatty():
tty.msg("Dependencies of %s" % spec.format(format_string, color=True))
- deps = spack.store.db.installed_relatives(
+ deps = spack.store.STORE.db.installed_relatives(
spec, "children", args.transitive, deptype=args.deptype
)
if deps:
diff --git a/lib/spack/spack/cmd/dependents.py b/lib/spack/spack/cmd/dependents.py
index e7e6375253..b327e9f8e5 100644
--- a/lib/spack/spack/cmd/dependents.py
+++ b/lib/spack/spack/cmd/dependents.py
@@ -96,7 +96,7 @@ def dependents(parser, args):
format_string = "{name}{@version}{%compiler}{/hash:7}"
if sys.stdout.isatty():
tty.msg("Dependents of %s" % spec.cformat(format_string))
- deps = spack.store.db.installed_relatives(spec, "parents", args.transitive)
+ deps = spack.store.STORE.db.installed_relatives(spec, "parents", args.transitive)
if deps:
spack.cmd.display_specs(deps, long=True)
else:
diff --git a/lib/spack/spack/cmd/deprecate.py b/lib/spack/spack/cmd/deprecate.py
index 09576f8f95..dca9b49756 100644
--- a/lib/spack/spack/cmd/deprecate.py
+++ b/lib/spack/spack/cmd/deprecate.py
@@ -130,7 +130,7 @@ def deprecate(parser, args):
already_deprecated = []
already_deprecated_for = []
for spec in all_deprecate:
- deprecated_for = spack.store.db.deprecator(spec)
+ deprecated_for = spack.store.STORE.db.deprecator(spec)
if deprecated_for:
already_deprecated.append(spec)
already_deprecated_for.append(deprecated_for)
diff --git a/lib/spack/spack/cmd/extensions.py b/lib/spack/spack/cmd/extensions.py
index 691840e8c0..cb41826169 100644
--- a/lib/spack/spack/cmd/extensions.py
+++ b/lib/spack/spack/cmd/extensions.py
@@ -91,7 +91,7 @@ def extensions(parser, args):
if args.show in ("installed", "all"):
# List specs of installed extensions.
- installed = [s.spec for s in spack.store.db.installed_extensions_for(spec)]
+ installed = [s.spec for s in spack.store.STORE.db.installed_extensions_for(spec)]
if args.show == "all":
print
diff --git a/lib/spack/spack/cmd/gc.py b/lib/spack/spack/cmd/gc.py
index bbeb8882ba..e4da6a103d 100644
--- a/lib/spack/spack/cmd/gc.py
+++ b/lib/spack/spack/cmd/gc.py
@@ -20,7 +20,7 @@ def setup_parser(subparser):
def gc(parser, args):
- specs = spack.store.db.unused_specs
+ specs = spack.store.STORE.db.unused_specs
# Restrict garbage collection to the active environment
# speculating over roots that are yet to be installed
diff --git a/lib/spack/spack/cmd/graph.py b/lib/spack/spack/cmd/graph.py
index a0fd16f19f..69c2833217 100644
--- a/lib/spack/spack/cmd/graph.py
+++ b/lib/spack/spack/cmd/graph.py
@@ -63,7 +63,7 @@ def graph(parser, args):
if env:
specs = env.all_specs()
else:
- specs = spack.store.db.query()
+ specs = spack.store.STORE.db.query()
else:
specs = spack.cmd.parse_specs(args.specs, concretize=not args.static)
diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py
index e0711031b9..2f49732094 100644
--- a/lib/spack/spack/cmd/install.py
+++ b/lib/spack/spack/cmd/install.py
@@ -266,7 +266,7 @@ def require_user_confirmation_for_overwrite(concrete_specs, args):
if args.yes_to_all:
return
- installed = list(filter(lambda x: x, map(spack.store.db.query_one, concrete_specs)))
+ installed = list(filter(lambda x: x, map(spack.store.STORE.db.query_one, concrete_specs)))
display_args = {"long": True, "show_flags": True, "variants": True}
if installed:
diff --git a/lib/spack/spack/cmd/load.py b/lib/spack/spack/cmd/load.py
index 19b25ab406..e4cc7443f8 100644
--- a/lib/spack/spack/cmd/load.py
+++ b/lib/spack/spack/cmd/load.py
@@ -101,7 +101,7 @@ def load(parser, args):
)
return 1
- with spack.store.db.read_transaction():
+ with spack.store.STORE.db.read_transaction():
if "dependencies" in args.things_to_load:
include_roots = "package" in args.things_to_load
specs = [
diff --git a/lib/spack/spack/cmd/mark.py b/lib/spack/spack/cmd/mark.py
index 967e8a06ff..61939c9458 100644
--- a/lib/spack/spack/cmd/mark.py
+++ b/lib/spack/spack/cmd/mark.py
@@ -71,7 +71,7 @@ def find_matching_specs(specs, allow_multiple_matches=False):
for spec in specs:
install_query = [InstallStatuses.INSTALLED]
- matching = spack.store.db.query_local(spec, installed=install_query)
+ matching = spack.store.STORE.db.query_local(spec, installed=install_query)
# For each spec provided, make sure it refers to only one package.
# Fail and ask user to be unambiguous if it doesn't
if not allow_multiple_matches and len(matching) > 1:
@@ -102,7 +102,7 @@ def do_mark(specs, explicit):
explicit (bool): whether to mark specs as explicitly installed
"""
for spec in specs:
- spack.store.db.update_explicit(spec, explicit)
+ spack.store.STORE.db.update_explicit(spec, explicit)
def mark_specs(args, specs):
diff --git a/lib/spack/spack/cmd/reindex.py b/lib/spack/spack/cmd/reindex.py
index d8a8ae7466..e2fd0d559a 100644
--- a/lib/spack/spack/cmd/reindex.py
+++ b/lib/spack/spack/cmd/reindex.py
@@ -11,4 +11,4 @@ level = "long"
def reindex(parser, args):
- spack.store.store.reindex()
+ spack.store.STORE.reindex()
diff --git a/lib/spack/spack/cmd/spec.py b/lib/spack/spack/cmd/spec.py
index eef1888e7f..3026cffd65 100644
--- a/lib/spack/spack/cmd/spec.py
+++ b/lib/spack/spack/cmd/spec.py
@@ -100,7 +100,7 @@ def spec(parser, args):
# spec in the DAG. This avoids repeatedly querying the DB.
tree_context = lang.nullcontext
if args.install_status:
- tree_context = spack.store.db.read_transaction
+ tree_context = spack.store.STORE.db.read_transaction
# Use command line specified specs, otherwise try to use environment specs.
if args.specs:
diff --git a/lib/spack/spack/cmd/test.py b/lib/spack/spack/cmd/test.py
index f9843cc669..30ef71d6aa 100644
--- a/lib/spack/spack/cmd/test.py
+++ b/lib/spack/spack/cmd/test.py
@@ -174,7 +174,7 @@ def test_run(args):
specs = spack.cmd.parse_specs(args.specs) if args.specs else [None]
specs_to_test = []
for spec in specs:
- matching = spack.store.db.query_local(spec, hashes=hashes, explicit=explicit)
+ matching = spack.store.STORE.db.query_local(spec, hashes=hashes, explicit=explicit)
if spec and not matching:
tty.warn("No {0}installed packages match spec {1}".format(explicit_str, spec))
"""
@@ -252,7 +252,7 @@ def test_list(args):
env = ev.active_environment()
hashes = env.all_hashes() if env else None
- specs = spack.store.db.query(hashes=hashes)
+ specs = spack.store.STORE.db.query(hashes=hashes)
specs = list(filter(lambda s: has_test_and_tags(s.package_class), specs))
spack.cmd.display_specs(specs, long=True)
@@ -329,7 +329,7 @@ def _report_suite_results(test_suite, args, constraints):
qspecs = spack.cmd.parse_specs(constraints)
specs = {}
for spec in qspecs:
- for s in spack.store.db.query(spec, installed=True):
+ for s in spack.store.STORE.db.query(spec, installed=True):
specs[s.dag_hash()] = s
specs = sorted(specs.values())
test_specs = dict((test_suite.test_pkg_id(s), s) for s in test_suite.specs if s in specs)
diff --git a/lib/spack/spack/cmd/uninstall.py b/lib/spack/spack/cmd/uninstall.py
index dfa521d5f2..bc6a71cef1 100644
--- a/lib/spack/spack/cmd/uninstall.py
+++ b/lib/spack/spack/cmd/uninstall.py
@@ -103,7 +103,7 @@ def find_matching_specs(
has_errors = False
for spec in specs:
install_query = [InstallStatuses.INSTALLED, InstallStatuses.DEPRECATED]
- matching = spack.store.db.query_local(
+ matching = spack.store.STORE.db.query_local(
spec, hashes=hashes, installed=install_query, origin=origin
)
# For each spec provided, make sure it refers to only one package.
@@ -139,7 +139,7 @@ def installed_dependents(specs: List[spack.spec.Spec]) -> List[spack.spec.Spec]:
# input; in that case we return an empty list.
def is_installed(spec):
- record = spack.store.db.query_local_by_spec_hash(spec.dag_hash())
+ record = spack.store.STORE.db.query_local_by_spec_hash(spec.dag_hash())
return record and record.installed
specs = traverse.traverse_nodes(
diff --git a/lib/spack/spack/cmd/unload.py b/lib/spack/spack/cmd/unload.py
index 0febdb8862..667cd4804c 100644
--- a/lib/spack/spack/cmd/unload.py
+++ b/lib/spack/spack/cmd/unload.py
@@ -71,7 +71,7 @@ def unload(parser, args):
for spec in spack.cmd.parse_specs(args.specs)
]
else:
- specs = spack.store.db.query(hashes=hashes)
+ specs = spack.store.STORE.db.query(hashes=hashes)
if not args.shell:
specs_str = " ".join(args.specs) or "SPECS"
diff --git a/lib/spack/spack/cmd/verify.py b/lib/spack/spack/cmd/verify.py
index 0043372995..88a52b6918 100644
--- a/lib/spack/spack/cmd/verify.py
+++ b/lib/spack/spack/cmd/verify.py
@@ -71,7 +71,7 @@ def verify(parser, args):
spec_args = spack.cmd.parse_specs(args.specs_or_files)
if args.all:
- query = spack.store.db.query_local if local else spack.store.db.query
+ query = spack.store.STORE.db.query_local if local else spack.store.STORE.db.query
# construct spec list
if spec_args:
diff --git a/lib/spack/spack/cmd/view.py b/lib/spack/spack/cmd/view.py
index 41095260a4..de847bd9f6 100644
--- a/lib/spack/spack/cmd/view.py
+++ b/lib/spack/spack/cmd/view.py
@@ -70,7 +70,7 @@ def disambiguate_in_view(specs, view):
return matching_in_view[0] if matching_in_view else matching_specs[0]
# make function always return a list to keep consistency between py2/3
- return list(map(squash, map(spack.store.db.query, specs)))
+ return list(map(squash, map(spack.store.STORE.db.query, specs)))
def setup_parser(sp):
@@ -200,7 +200,7 @@ def view(parser, args):
view = YamlFilesystemView(
path,
- spack.store.layout,
+ spack.store.STORE.layout,
projections=ordered_projections,
ignore_conflicts=getattr(args, "ignore_conflicts", False),
link=link_fn,
diff --git a/lib/spack/spack/cray_manifest.py b/lib/spack/spack/cray_manifest.py
index 9a64342434..f3c06f63f1 100644
--- a/lib/spack/spack/cray_manifest.py
+++ b/lib/spack/spack/cray_manifest.py
@@ -194,7 +194,7 @@ def read(path, apply_updates):
spack.compilers.add_compilers_to_config(compilers, init_config=False)
if apply_updates:
for spec in specs.values():
- spack.store.db.add(spec, directory_layout=None)
+ spack.store.STORE.db.add(spec, directory_layout=None)
class ManifestValidationError(spack.error.SpackError):
diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py
index 0d075d7f51..cc3a586218 100644
--- a/lib/spack/spack/database.py
+++ b/lib/spack/spack/database.py
@@ -542,7 +542,7 @@ class Database:
containing the spec, in a subdirectory of the database to enable
persistence across overlapping but separate related build processes.
- The failure lock file, ``spack.store.db.prefix_failures``, lives
+ The failure lock file, ``spack.store.STORE.db.prefix_failures``, lives
alongside the install DB. ``n`` is the sys.maxsize-bit prefix of the
associated DAG hash to make the likelihood of collision very low with
no cleanup required.
@@ -620,7 +620,7 @@ class Database:
Prefix lock is a byte range lock on the nth byte of a file.
- The lock file is ``spack.store.db.prefix_lock`` -- the DB
+ The lock file is ``spack.store.STORE.db.prefix_lock`` -- the DB
tells us what to call it and it lives alongside the install DB.
n is the sys.maxsize-bit prefix of the DAG hash. This makes
@@ -844,7 +844,7 @@ class Database:
% (version, _DB_VERSION)
)
- self.reindex(spack.store.layout)
+ self.reindex(spack.store.STORE.layout)
installs = dict(
(k, v.to_dict(include_fields=self._record_fields))
for k, v in self._data.items()
diff --git a/lib/spack/spack/directory_layout.py b/lib/spack/spack/directory_layout.py
index 4d4952ee38..8f07ecdb42 100644
--- a/lib/spack/spack/directory_layout.py
+++ b/lib/spack/spack/directory_layout.py
@@ -325,7 +325,7 @@ class DirectoryLayout:
if spec.external:
return spec.external_path
if self.check_upstream:
- upstream, record = spack.store.db.query_by_spec_hash(spec.dag_hash())
+ upstream, record = spack.store.STORE.db.query_by_spec_hash(spec.dag_hash())
if upstream:
raise SpackError(
"Internal error: attempted to call path_for_spec on"
diff --git a/lib/spack/spack/environment/environment.py b/lib/spack/spack/environment/environment.py
index 1602e4369d..79268321fb 100644
--- a/lib/spack/spack/environment/environment.py
+++ b/lib/spack/spack/environment/environment.py
@@ -153,7 +153,7 @@ def installed_specs():
"""
env = spack.environment.active_environment()
hashes = env.all_hashes() if env else None
- return spack.store.db.query(hashes=hashes)
+ return spack.store.STORE.db.query(hashes=hashes)
def valid_env_name(name):
@@ -421,7 +421,7 @@ def _is_dev_spec_and_has_changed(spec):
# Not installed -> nothing to compare against
return False
- _, record = spack.store.db.query_by_spec_hash(spec.dag_hash())
+ _, record = spack.store.STORE.db.query_by_spec_hash(spec.dag_hash())
mtime = fs.last_modification_time_recursive(dev_path_var.value)
return mtime > record.installation_time
@@ -582,7 +582,7 @@ class ViewDescriptor:
raise SpackEnvironmentViewError(msg)
return SimpleFilesystemView(
root,
- spack.store.layout,
+ spack.store.STORE.layout,
ignore_conflicts=True,
projections=self.projections,
link=self.link_type,
@@ -622,7 +622,7 @@ class ViewDescriptor:
specs = list(dedupe(concretized_root_specs, key=traverse.by_dag_hash))
# Filter selected, installed specs
- with spack.store.db.read_transaction():
+ with spack.store.STORE.db.read_transaction():
specs = [s for s in specs if s in self and s.installed]
return specs
@@ -1840,7 +1840,7 @@ class Environment:
specs. This is done in a single read transaction per environment instead
of per spec."""
installed, uninstalled = [], []
- with spack.store.db.read_transaction():
+ with spack.store.STORE.db.read_transaction():
for concretized_hash in self.concretized_order:
spec = self.specs_by_hash[concretized_hash]
if not spec.installed or (
@@ -1885,9 +1885,9 @@ class Environment:
# Already installed root specs should be marked explicitly installed in the
# database.
if specs_dropped:
- with spack.store.db.write_transaction(): # do all in one transaction
+ with spack.store.STORE.db.write_transaction(): # do all in one transaction
for spec in specs_dropped:
- spack.store.db.update_explicit(spec, True)
+ spack.store.STORE.db.update_explicit(spec, True)
if not specs_to_install:
tty.msg("All of the packages are already installed")
@@ -1950,7 +1950,7 @@ class Environment:
"""
# use a transaction to avoid overhead of repeated calls
# to `package.spec.installed`
- with spack.store.db.read_transaction():
+ with spack.store.STORE.db.read_transaction():
concretized = dict(self.concretized_specs())
for spec in self.user_specs:
concrete = concretized.get(spec)
diff --git a/lib/spack/spack/environment/shell.py b/lib/spack/spack/environment/shell.py
index c6d2b06c98..1ae2acd3c4 100644
--- a/lib/spack/spack/environment/shell.py
+++ b/lib/spack/spack/environment/shell.py
@@ -130,7 +130,7 @@ def activate(env, use_env_repo=False, add_view=True):
#
try:
if add_view and ev.default_view_name in env.views:
- with spack.store.db.read_transaction():
+ with spack.store.STORE.db.read_transaction():
env.add_default_view_to_env(env_mods)
except (spack.repo.UnknownPackageError, spack.repo.UnknownNamespaceError) as e:
tty.error(e)
@@ -165,7 +165,7 @@ def deactivate():
if ev.default_view_name in active.views:
try:
- with spack.store.db.read_transaction():
+ with spack.store.STORE.db.read_transaction():
active.rm_default_view_from_env(env_mods)
except (spack.repo.UnknownPackageError, spack.repo.UnknownNamespaceError) as e:
tty.warn(e)
diff --git a/lib/spack/spack/filesystem_view.py b/lib/spack/spack/filesystem_view.py
index 4df8df3cef..4397eedfba 100644
--- a/lib/spack/spack/filesystem_view.py
+++ b/lib/spack/spack/filesystem_view.py
@@ -88,7 +88,7 @@ def view_copy(src: str, dst: str, view, spec: Optional[spack.spec.Spec] = None):
elif spack.relocate.is_binary(dst):
spack.relocate.relocate_text_bin(binaries=[dst], prefixes=prefix_to_projection)
else:
- prefix_to_projection[spack.store.layout.root] = view._root
+ prefix_to_projection[spack.store.STORE.layout.root] = view._root
# This is vestigial code for the *old* location of sbang.
prefix_to_projection[
@@ -379,7 +379,7 @@ class YamlFilesystemView(FilesystemView):
# check if this spec owns a file of that name (through the
# manifest in the metadata dir, which we have in the view).
manifest_file = os.path.join(
- self.get_path_meta_folder(spec), spack.store.layout.manifest_file_name
+ self.get_path_meta_folder(spec), spack.store.STORE.layout.manifest_file_name
)
try:
with open(manifest_file, "r") as f:
@@ -506,14 +506,16 @@ class YamlFilesystemView(FilesystemView):
def get_all_specs(self):
md_dirs = []
for root, dirs, files in os.walk(self._root):
- if spack.store.layout.metadata_dir in dirs:
- md_dirs.append(os.path.join(root, spack.store.layout.metadata_dir))
+ if spack.store.STORE.layout.metadata_dir in dirs:
+ md_dirs.append(os.path.join(root, spack.store.STORE.layout.metadata_dir))
specs = []
for md_dir in md_dirs:
if os.path.exists(md_dir):
for name_dir in os.listdir(md_dir):
- filename = os.path.join(md_dir, name_dir, spack.store.layout.spec_file_name)
+ filename = os.path.join(
+ md_dir, name_dir, spack.store.STORE.layout.spec_file_name
+ )
spec = get_spec_from_file(filename)
if spec:
specs.append(spec)
@@ -531,18 +533,18 @@ class YamlFilesystemView(FilesystemView):
"Get path to meta folder for either spec or spec name."
return os.path.join(
self.get_projection_for_spec(spec),
- spack.store.layout.metadata_dir,
+ spack.store.STORE.layout.metadata_dir,
getattr(spec, "name", spec),
)
def get_spec(self, spec):
dotspack = self.get_path_meta_folder(spec)
- filename = os.path.join(dotspack, spack.store.layout.spec_file_name)
+ filename = os.path.join(dotspack, spack.store.STORE.layout.spec_file_name)
return get_spec_from_file(filename)
def link_meta_folder(self, spec):
- src = spack.store.layout.metadata_path(spec)
+ src = spack.store.STORE.layout.metadata_path(spec)
tgt = self.get_path_meta_folder(spec)
tree = LinkTree(src)
@@ -673,7 +675,7 @@ class SimpleFilesystemView(FilesystemView):
# Ignore spack meta data folder.
def skip_list(file):
- return os.path.basename(file) == spack.store.layout.metadata_dir
+ return os.path.basename(file) == spack.store.STORE.layout.metadata_dir
visitor = SourceMergeVisitor(ignore=skip_list)
@@ -735,14 +737,18 @@ class SimpleFilesystemView(FilesystemView):
def relative_metadata_dir_for_spec(self, spec):
return os.path.join(
- self.get_relative_projection_for_spec(spec), spack.store.layout.metadata_dir, spec.name
+ self.get_relative_projection_for_spec(spec),
+ spack.store.STORE.layout.metadata_dir,
+ spec.name,
)
def link_metadata(self, specs):
metadata_visitor = SourceMergeVisitor()
for spec in specs:
- src_prefix = os.path.join(spec.package.view_source(), spack.store.layout.metadata_dir)
+ src_prefix = os.path.join(
+ spec.package.view_source(), spack.store.STORE.layout.metadata_dir
+ )
proj = self.relative_metadata_dir_for_spec(spec)
metadata_visitor.set_projection(proj)
visit_directory_tree(src_prefix, metadata_visitor)
diff --git a/lib/spack/spack/hooks/sbang.py b/lib/spack/spack/hooks/sbang.py
index 7a6334dcc2..11e2d12f74 100644
--- a/lib/spack/spack/hooks/sbang.py
+++ b/lib/spack/spack/hooks/sbang.py
@@ -41,7 +41,7 @@ interpreter_regex = re.compile(b"#![ \t]*?([^ \t\0\n]+)")
def sbang_install_path():
"""Location sbang should be installed within Spack's ``install_tree``."""
- sbang_root = str(spack.store.unpadded_root)
+ sbang_root = str(spack.store.STORE.unpadded_root)
install_path = os.path.join(sbang_root, "bin", "sbang")
path_length = len(install_path)
if path_length > system_shebang_limit:
diff --git a/lib/spack/spack/installer.py b/lib/spack/spack/installer.py
index 3b8e76c101..4b352d9293 100644
--- a/lib/spack/spack/installer.py
+++ b/lib/spack/spack/installer.py
@@ -261,7 +261,7 @@ def _do_fake_install(pkg: "spack.package_base.PackageBase") -> None:
# Install fake man page
fs.mkdirp(pkg.prefix.man.man1)
- packages_dir = spack.store.layout.build_packages_path(pkg.spec)
+ packages_dir = spack.store.STORE.layout.build_packages_path(pkg.spec)
dump_packages(pkg.spec, packages_dir)
@@ -430,9 +430,9 @@ def _process_external_package(pkg: "spack.package_base.PackageBase", explicit: b
# Check if the package was already registered in the DB.
# If this is the case, then only make explicit if required.
tty.debug("{0} already registered in DB".format(pre))
- record = spack.store.db.get_record(spec)
+ record = spack.store.STORE.db.get_record(spec)
if explicit and not record.explicit:
- spack.store.db.update_explicit(spec, explicit)
+ spack.store.STORE.db.update_explicit(spec, explicit)
except KeyError:
# If not, register it and generate the module file.
@@ -443,7 +443,7 @@ def _process_external_package(pkg: "spack.package_base.PackageBase", explicit: b
# Add to the DB
tty.debug("{0} registering into DB".format(pre))
- spack.store.db.add(spec, None, explicit=explicit)
+ spack.store.STORE.db.add(spec, None, explicit=explicit)
def _process_binary_cache_tarball(
@@ -485,7 +485,7 @@ def _process_binary_cache_tarball(
)
pkg.installed_from_binary_cache = True
- spack.store.db.add(pkg.spec, spack.store.layout, explicit=explicit)
+ spack.store.STORE.db.add(pkg.spec, spack.store.STORE.layout, explicit=explicit)
return True
@@ -523,7 +523,7 @@ def clear_failures() -> None:
"""
Remove all failure tracking markers for the Spack instance.
"""
- spack.store.db.clear_all_failures()
+ spack.store.STORE.db.clear_all_failures()
def combine_phase_logs(phase_log_files: List[str], log_path: str) -> None:
@@ -566,7 +566,7 @@ def dump_packages(spec: "spack.spec.Spec", path: str) -> None:
if node is not spec:
# Locate the dependency package in the install tree and find
# its provenance information.
- source = spack.store.layout.build_packages_path(node)
+ source = spack.store.STORE.layout.build_packages_path(node)
source_repo_root = os.path.join(source, node.namespace)
# If there's no provenance installed for the package, skip it.
@@ -659,7 +659,7 @@ def log(pkg: "spack.package_base.PackageBase") -> None:
Args:
pkg: the package that was built and installed
"""
- packages_dir = spack.store.layout.build_packages_path(pkg.spec)
+ packages_dir = spack.store.STORE.layout.build_packages_path(pkg.spec)
# Remove first if we're overwriting another build
try:
@@ -681,7 +681,9 @@ def log(pkg: "spack.package_base.PackageBase") -> None:
# Finally, archive files that are specific to each package
with fs.working_dir(pkg.stage.path):
errors = io.StringIO()
- target_dir = os.path.join(spack.store.layout.metadata_path(pkg.spec), "archived-files")
+ target_dir = os.path.join(
+ spack.store.STORE.layout.metadata_path(pkg.spec), "archived-files"
+ )
for glob_expr in pkg.builder.archive_files:
# Check that we are trying to copy things that are
@@ -1153,7 +1155,7 @@ class PackageInstaller:
self.installed: Set[str] = set()
# Data store layout
- self.layout = spack.store.layout
+ self.layout = spack.store.STORE.layout
# Locks on specs being built, keyed on the package's unique id
self.locks: Dict[str, Tuple[str, Optional[lk.Lock]]] = {}
@@ -1264,7 +1266,7 @@ class PackageInstaller:
that's ``True`` iff the spec is considered installed
"""
try:
- rec = spack.store.db.get_record(spec)
+ rec = spack.store.STORE.db.get_record(spec)
installed_in_db = rec.installed if rec else False
except KeyError:
# KeyError is raised if there is no matching spec in the database
@@ -1285,7 +1287,7 @@ class PackageInstaller:
dep_id = package_id(dep_pkg)
# Check for failure since a prefix lock is not required
- if spack.store.db.prefix_failed(dep):
+ if spack.store.STORE.db.prefix_failed(dep):
action = "'spack install' the dependency"
msg = "{0} is marked as an install failure: {1}".format(dep_id, action)
raise InstallError(err.format(request.pkg_id, msg), pkg=dep_pkg)
@@ -1349,7 +1351,7 @@ class PackageInstaller:
if not installed_in_db:
# Ensure there is no other installed spec with the same prefix dir
- if spack.store.db.is_occupied_install_prefix(task.pkg.spec.prefix):
+ if spack.store.STORE.db.is_occupied_install_prefix(task.pkg.spec.prefix):
raise InstallError(
"Install prefix collision for {0}".format(task.pkg_id),
long_msg="Prefix directory {0} already used by another "
@@ -1381,7 +1383,7 @@ class PackageInstaller:
# Only update the explicit entry once for the explicit package
if task.explicit:
- spack.store.db.update_explicit(task.pkg.spec, True)
+ spack.store.STORE.db.update_explicit(task.pkg.spec, True)
def _cleanup_all_tasks(self) -> None:
"""Cleanup all build tasks to include releasing their locks."""
@@ -1500,7 +1502,7 @@ class PackageInstaller:
if lock is None:
tty.debug(msg.format("Acquiring", desc, pkg_id, pretty_seconds(timeout or 0)))
op = "acquire"
- lock = spack.store.db.prefix_lock(pkg.spec, timeout)
+ lock = spack.store.STORE.db.prefix_lock(pkg.spec, timeout)
if timeout != lock.default_timeout:
tty.warn(
"Expected prefix lock timeout {0}, not {1}".format(
@@ -1625,12 +1627,12 @@ class PackageInstaller:
# Clear any persistent failure markings _unless_ they are
# associated with another process in this parallel build
# of the spec.
- spack.store.db.clear_failure(dep, force=False)
+ spack.store.STORE.db.clear_failure(dep, force=False)
install_package = request.install_args.get("install_package")
if install_package and request.pkg_id not in self.build_tasks:
# Be sure to clear any previous failure
- spack.store.db.clear_failure(request.spec, force=True)
+ spack.store.STORE.db.clear_failure(request.spec, force=True)
# If not installing dependencies, then determine their
# installation status before proceeding
@@ -1705,7 +1707,7 @@ class PackageInstaller:
pkg.windows_establish_runtime_linkage()
# Note: PARENT of the build process adds the new package to
# the database, so that we don't need to re-read from file.
- spack.store.db.add(pkg.spec, spack.store.layout, explicit=explicit)
+ spack.store.STORE.db.add(pkg.spec, spack.store.STORE.layout, explicit=explicit)
# If a compiler, ensure it is added to the configuration
if task.compiler:
@@ -1848,7 +1850,7 @@ class PackageInstaller:
if not os.path.exists(pkg.spec.prefix):
path = spack.util.path.debug_padded_filter(pkg.spec.prefix)
tty.debug("Creating the installation directory {0}".format(path))
- spack.store.layout.create_install_directory(pkg.spec)
+ spack.store.STORE.layout.create_install_directory(pkg.spec)
else:
# Set the proper group for the prefix
group = prefs.get_package_group(pkg.spec)
@@ -1864,10 +1866,10 @@ class PackageInstaller:
os.chmod(pkg.spec.prefix, perms)
# Ensure the metadata path exists as well
- fs.mkdirp(spack.store.layout.metadata_path(pkg.spec), mode=perms)
+ fs.mkdirp(spack.store.STORE.layout.metadata_path(pkg.spec), mode=perms)
# Always write host environment - we assume this can change
- spack.store.layout.write_host_environment(pkg.spec)
+ spack.store.STORE.layout.write_host_environment(pkg.spec)
def _update_failed(
self, task: BuildTask, mark: bool = False, exc: Optional[BaseException] = None
@@ -1886,7 +1888,7 @@ class PackageInstaller:
err = "" if exc is None else ": {0}".format(str(exc))
tty.debug("Flagging {0} as failed{1}".format(pkg_id, err))
if mark:
- self.failed[pkg_id] = spack.store.db.mark_failed(task.pkg.spec)
+ self.failed[pkg_id] = spack.store.STORE.db.mark_failed(task.pkg.spec)
else:
self.failed[pkg_id] = None
task.status = STATUS_FAILED
@@ -2072,7 +2074,7 @@ class PackageInstaller:
# Flag a failed spec. Do not need an (install) prefix lock since
# assume using a separate (failed) prefix lock file.
- if pkg_id in self.failed or spack.store.db.prefix_failed(spec):
+ if pkg_id in self.failed or spack.store.STORE.db.prefix_failed(spec):
term_status.clear()
tty.warn("{0} failed to install".format(pkg_id))
self._update_failed(task)
@@ -2168,9 +2170,9 @@ class PackageInstaller:
if action == InstallAction.INSTALL:
self._install_task(task, install_status)
elif action == InstallAction.OVERWRITE:
- # spack.store.db is not really a Database object, but a small
+ # spack.store.STORE.db is not really a Database object, but a small
# wrapper -- silence mypy
- OverwriteInstall(self, spack.store.db, task, install_status).install() # type: ignore[arg-type] # noqa: E501
+ OverwriteInstall(self, spack.store.STORE.db, task, install_status).install() # type: ignore[arg-type] # noqa: E501
self._update_installed(task)
diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py
index 312a2ec8bf..a0705aae3a 100644
--- a/lib/spack/spack/main.py
+++ b/lib/spack/spack/main.py
@@ -847,7 +847,7 @@ def print_setup_info(*info):
if "modules" in info:
generic_arch = archspec.cpu.host().family
module_spec = "environment-modules target={0}".format(generic_arch)
- specs = spack.store.db.query(module_spec)
+ specs = spack.store.STORE.db.query(module_spec)
if specs:
shell_set("_sp_module_prefix", specs[-1].prefix)
else:
diff --git a/lib/spack/spack/modules/common.py b/lib/spack/spack/modules/common.py
index dac08fdd0d..d2eedc7230 100644
--- a/lib/spack/spack/modules/common.py
+++ b/lib/spack/spack/modules/common.py
@@ -249,7 +249,7 @@ def generate_module_index(root, modules, overwrite=False):
def _generate_upstream_module_index():
module_indices = read_module_indices()
- return UpstreamModuleIndex(spack.store.db, module_indices)
+ return UpstreamModuleIndex(spack.store.STORE.db, module_indices)
upstream_module_index = llnl.util.lang.Singleton(_generate_upstream_module_index)
@@ -354,7 +354,7 @@ def get_module(module_type, spec, get_full_path, module_set_name="default", requ
try:
upstream = spec.installed_upstream
except spack.repo.UnknownPackageError:
- upstream, record = spack.store.db.query_by_spec_hash(spec.dag_hash())
+ upstream, record = spack.store.STORE.db.query_by_spec_hash(spec.dag_hash())
if upstream:
module = spack.modules.common.upstream_module_index.upstream_module(spec, module_type)
if not module:
diff --git a/lib/spack/spack/package_base.py b/lib/spack/spack/package_base.py
index 149aaf3623..370f90aff8 100644
--- a/lib/spack/spack/package_base.py
+++ b/lib/spack/spack/package_base.py
@@ -1081,7 +1081,7 @@ class PackageBase(WindowsRPath, PackageViewMixin, metaclass=PackageMeta):
@property
def metadata_dir(self):
"""Return the install metadata directory."""
- return spack.store.layout.metadata_path(self.spec)
+ return spack.store.STORE.layout.metadata_path(self.spec)
@property
def install_env_path(self):
@@ -1352,7 +1352,7 @@ class PackageBase(WindowsRPath, PackageViewMixin, metaclass=PackageMeta):
Removes the prefix for a package along with any empty parent
directories
"""
- spack.store.layout.remove_install_directory(self.spec)
+ spack.store.STORE.layout.remove_install_directory(self.spec)
@property
def download_instr(self):
@@ -2207,20 +2207,20 @@ class PackageBase(WindowsRPath, PackageViewMixin, metaclass=PackageMeta):
if not os.path.isdir(spec.prefix):
# prefix may not exist, but DB may be inconsistent. Try to fix by
# removing, but omit hooks.
- specs = spack.store.db.query(spec, installed=True)
+ specs = spack.store.STORE.db.query(spec, installed=True)
if specs:
if deprecator:
- spack.store.db.deprecate(specs[0], deprecator)
+ spack.store.STORE.db.deprecate(specs[0], deprecator)
tty.debug("Deprecating stale DB entry for {0}".format(spec.short_spec))
else:
- spack.store.db.remove(specs[0])
+ spack.store.STORE.db.remove(specs[0])
tty.debug("Removed stale DB entry for {0}".format(spec.short_spec))
return
else:
raise InstallError(str(spec) + " is not installed.")
if not force:
- dependents = spack.store.db.installed_relatives(
+ dependents = spack.store.STORE.db.installed_relatives(
spec, direction="parents", transitive=True, deptype=("link", "run")
)
if dependents:
@@ -2233,7 +2233,7 @@ class PackageBase(WindowsRPath, PackageViewMixin, metaclass=PackageMeta):
pkg = None
# Pre-uninstall hook runs first.
- with spack.store.db.prefix_write_lock(spec):
+ with spack.store.STORE.db.prefix_write_lock(spec):
if pkg is not None:
try:
spack.hooks.pre_uninstall(spec)
@@ -2259,17 +2259,17 @@ class PackageBase(WindowsRPath, PackageViewMixin, metaclass=PackageMeta):
tty.debug(msg.format(spec.short_spec))
# test if spec is already deprecated, not whether we want to
# deprecate it now
- deprecated = bool(spack.store.db.deprecator(spec))
- spack.store.layout.remove_install_directory(spec, deprecated)
+ deprecated = bool(spack.store.STORE.db.deprecator(spec))
+ spack.store.STORE.layout.remove_install_directory(spec, deprecated)
# Delete DB entry
if deprecator:
msg = "deprecating DB entry [{0}] in favor of [{1}]"
tty.debug(msg.format(spec.short_spec, deprecator.short_spec))
- spack.store.db.deprecate(spec, deprecator)
+ spack.store.STORE.db.deprecate(spec, deprecator)
else:
msg = "Deleting DB entry [{0}]"
tty.debug(msg.format(spec.short_spec))
- spack.store.db.remove(spec)
+ spack.store.STORE.db.remove(spec)
if pkg is not None:
try:
@@ -2300,24 +2300,24 @@ class PackageBase(WindowsRPath, PackageViewMixin, metaclass=PackageMeta):
spec = self.spec
# Install deprecator if it isn't installed already
- if not spack.store.db.query(deprecator):
+ if not spack.store.STORE.db.query(deprecator):
deprecator.package.do_install()
- old_deprecator = spack.store.db.deprecator(spec)
+ old_deprecator = spack.store.STORE.db.deprecator(spec)
if old_deprecator:
# Find this specs yaml file from its old deprecation
- self_yaml = spack.store.layout.deprecated_file_path(spec, old_deprecator)
+ self_yaml = spack.store.STORE.layout.deprecated_file_path(spec, old_deprecator)
else:
- self_yaml = spack.store.layout.spec_file_path(spec)
+ self_yaml = spack.store.STORE.layout.spec_file_path(spec)
# copy spec metadata to "deprecated" dir of deprecator
- depr_yaml = spack.store.layout.deprecated_file_path(spec, deprecator)
+ depr_yaml = spack.store.STORE.layout.deprecated_file_path(spec, deprecator)
fsys.mkdirp(os.path.dirname(depr_yaml))
shutil.copy2(self_yaml, depr_yaml)
# Any specs deprecated in favor of this spec are re-deprecated in
# favor of its new deprecator
- for deprecated in spack.store.db.specs_deprecated_by(spec):
+ for deprecated in spack.store.STORE.db.specs_deprecated_by(spec):
deprecated.package.do_deprecate(deprecator, link_fn)
# Now that we've handled metadata, uninstall and replace with link
@@ -2333,7 +2333,7 @@ class PackageBase(WindowsRPath, PackageViewMixin, metaclass=PackageMeta):
Extensions added to this view will modify the installation prefix of
this package.
"""
- return YamlFilesystemView(self.prefix, spack.store.layout)
+ return YamlFilesystemView(self.prefix, spack.store.STORE.layout)
def do_restage(self):
"""Reverts expanded/checked out source to a pristine state."""
@@ -2460,7 +2460,7 @@ def flatten_dependencies(spec, flat_dir):
for dep in spec.traverse(root=False):
name = dep.name
- dep_path = spack.store.layout.path_for_spec(dep)
+ dep_path = spack.store.STORE.layout.path_for_spec(dep)
dep_files = LinkTree(dep_path)
os.mkdir(flat_dir + "/" + name)
diff --git a/lib/spack/spack/relocate.py b/lib/spack/spack/relocate.py
index 6c29ea69b3..756e3fa9dc 100644
--- a/lib/spack/spack/relocate.py
+++ b/lib/spack/spack/relocate.py
@@ -703,7 +703,7 @@ def fixup_macos_rpath(root, filename):
args = []
# Check dependencies for non-rpath entries
- spack_root = spack.store.layout.root
+ spack_root = spack.store.STORE.layout.root
for name in deps:
if name.startswith(spack_root):
tty.debug("Spack-installed dependency for {0}: {1}".format(abspath, name))
diff --git a/lib/spack/spack/rewiring.py b/lib/spack/spack/rewiring.py
index 75684f7a2a..2c18827e87 100644
--- a/lib/spack/spack/rewiring.py
+++ b/lib/spack/spack/rewiring.py
@@ -80,8 +80,8 @@ def rewire_node(spec, explicit):
if "macho" in platform.binary_formats:
relocate.relocate_macho_binaries(
bins_to_relocate,
- str(spack.store.layout.root),
- str(spack.store.layout.root),
+ str(spack.store.STORE.layout.root),
+ str(spack.store.STORE.layout.root),
prefix_to_prefix,
False,
spec.build_spec.prefix,
@@ -90,8 +90,8 @@ def rewire_node(spec, explicit):
if "elf" in platform.binary_formats:
relocate.relocate_elf_binaries(
bins_to_relocate,
- str(spack.store.layout.root),
- str(spack.store.layout.root),
+ str(spack.store.STORE.layout.root),
+ str(spack.store.STORE.layout.root),
prefix_to_prefix,
False,
spec.build_spec.prefix,
@@ -114,9 +114,9 @@ def rewire_node(spec, explicit):
# (spliced) spec into spec.json, without this, Database.add would fail on
# the next line (because it checks the spec.json in the prefix against the
# spec being added to look for mismatches)
- spack.store.layout.write_spec(spec, spack.store.layout.spec_file_path(spec))
+ spack.store.STORE.layout.write_spec(spec, spack.store.STORE.layout.spec_file_path(spec))
# add to database, not sure about explicit
- spack.store.db.add(spec, spack.store.layout, explicit=explicit)
+ spack.store.STORE.db.add(spec, spack.store.STORE.layout, explicit=explicit)
# run post install hooks
spack.hooks.post_install(spec, explicit)
diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py
index 4ff4f402a3..4612f3aeb3 100644
--- a/lib/spack/spack/solver/asp.py
+++ b/lib/spack/spack/solver/asp.py
@@ -2733,11 +2733,11 @@ class Solver:
reusable_specs = []
if self.reuse:
# Specs from the local Database
- with spack.store.db.read_transaction():
+ with spack.store.STORE.db.read_transaction():
reusable_specs.extend(
[
s
- for s in spack.store.db.query(installed=True)
+ for s in spack.store.STORE.db.query(installed=True)
if not s.satisfies("dev_path=*")
]
)
diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py
index 95ee9deac0..4a8ba6ae5b 100644
--- a/lib/spack/spack/spec.py
+++ b/lib/spack/spack/spec.py
@@ -1780,7 +1780,7 @@ class Spec:
try:
# If the spec is in the DB, check the installed
# attribute of the record
- return spack.store.db.get_record(self).installed
+ return spack.store.STORE.db.get_record(self).installed
except KeyError:
# If the spec is not in the DB, the method
# above raises a Key error
@@ -1796,7 +1796,7 @@ class Spec:
if not self.concrete:
return False
- upstream, _ = spack.store.db.query_by_spec_hash(self.dag_hash())
+ upstream, _ = spack.store.STORE.db.query_by_spec_hash(self.dag_hash())
return upstream
def traverse(self, **kwargs):
@@ -1828,11 +1828,11 @@ class Spec:
raise spack.error.SpecError("Spec is not concrete: " + str(self))
if self._prefix is None:
- upstream, record = spack.store.db.query_by_spec_hash(self.dag_hash())
+ upstream, record = spack.store.STORE.db.query_by_spec_hash(self.dag_hash())
if record and record.path:
self.prefix = record.path
else:
- self.prefix = spack.store.layout.path_for_spec(self)
+ self.prefix = spack.store.STORE.layout.path_for_spec(self)
return self._prefix
@prefix.setter
@@ -1933,7 +1933,7 @@ class Spec:
env_matches = active_env.get_by_hash(self.abstract_hash) or []
matches = [m for m in env_matches if m._satisfies(self)]
if not matches:
- db_matches = spack.store.db.get_by_hash(self.abstract_hash) or []
+ db_matches = spack.store.STORE.db.get_by_hash(self.abstract_hash) or []
matches = [m for m in db_matches if m._satisfies(self)]
if not matches:
query = spack.binary_distribution.BinaryCacheQuery(True)
@@ -2942,9 +2942,9 @@ class Spec:
SpecDeprecatedError: if any deprecated spec is found
"""
deprecated = []
- with spack.store.db.read_transaction():
+ with spack.store.STORE.db.read_transaction():
for x in root.traverse():
- _, rec = spack.store.db.query_by_spec_hash(x.dag_hash())
+ _, rec = spack.store.STORE.db.query_by_spec_hash(x.dag_hash())
if rec and rec.deprecated_for:
deprecated.append(rec)
if deprecated:
@@ -4377,7 +4377,7 @@ class Spec:
write(morph(spec, spack.paths.spack_root))
return
elif attribute == "spack_install":
- write(morph(spec, spack.store.layout.root))
+ write(morph(spec, spack.store.STORE.layout.root))
return
elif re.match(r"hash(:\d)?", attribute):
col = "#"
@@ -4497,7 +4497,7 @@ class Spec:
if self.external:
return InstallStatus.external
- upstream, record = spack.store.db.query_by_spec_hash(self.dag_hash())
+ upstream, record = spack.store.STORE.db.query_by_spec_hash(self.dag_hash())
if not record:
return InstallStatus.absent
elif upstream and record.installed:
@@ -4512,7 +4512,7 @@ class Spec:
if not self.concrete:
return None
try:
- record = spack.store.db.get_record(self)
+ record = spack.store.STORE.db.get_record(self)
return record.explicit
except KeyError:
return None
diff --git a/lib/spack/spack/store.py b/lib/spack/spack/store.py
index 4b673077ef..3ecee2229f 100644
--- a/lib/spack/spack/store.py
+++ b/lib/spack/spack/store.py
@@ -217,78 +217,30 @@ def create(configuration: ConfigurationType) -> Store:
def _create_global() -> Store:
- # Check that the user is not trying to install software into the store
- # reserved by Spack to bootstrap its own dependencies, since this would
- # lead to bizarre behaviors (e.g. cleaning the bootstrap area would wipe
- # user installed software)
- import spack.bootstrap
-
- enable_bootstrap = spack.config.config.get("bootstrap:enable", True)
- if enable_bootstrap and spack.bootstrap.store_path() == root:
- msg = (
- 'please change the install tree root "{0}" in your '
- "configuration [path reserved for Spack internal use]"
- )
- raise ValueError(msg.format(root))
- return create(configuration=spack.config.config)
+ result = create(configuration=spack.config.config)
+ return result
#: Singleton store instance
-store: Union[Store, llnl.util.lang.Singleton] = llnl.util.lang.Singleton(_create_global)
-
-
-def _store_root() -> str:
- return store.root
-
-
-def _store_unpadded_root() -> str:
- return store.unpadded_root
-
-
-def _store_db() -> spack.database.Database:
- return store.db
-
-
-def _store_layout() -> spack.directory_layout.DirectoryLayout:
- return store.layout
-
-
-# convenience accessors for parts of the singleton store
-root: Union[llnl.util.lang.LazyReference, str] = llnl.util.lang.LazyReference(_store_root)
-unpadded_root: Union[llnl.util.lang.LazyReference, str] = llnl.util.lang.LazyReference(
- _store_unpadded_root
-)
-db: Union[llnl.util.lang.LazyReference, spack.database.Database] = llnl.util.lang.LazyReference(
- _store_db
-)
-layout: Union[
- llnl.util.lang.LazyReference, "spack.directory_layout.DirectoryLayout"
-] = llnl.util.lang.LazyReference(_store_layout)
+STORE: Union[Store, llnl.util.lang.Singleton] = llnl.util.lang.Singleton(_create_global)
def reinitialize():
"""Restore globals to the same state they would have at start-up. Return a token
containing the state of the store before reinitialization.
"""
- global store
- global root, unpadded_root, db, layout
-
- token = store, root, unpadded_root, db, layout
+ global STORE
- store = llnl.util.lang.Singleton(_create_global)
- root = llnl.util.lang.LazyReference(_store_root)
- unpadded_root = llnl.util.lang.LazyReference(_store_unpadded_root)
- db = llnl.util.lang.LazyReference(_store_db)
- layout = llnl.util.lang.LazyReference(_store_layout)
+ token = STORE
+ STORE = llnl.util.lang.Singleton(_create_global)
return token
def restore(token):
"""Restore the environment from a token returned by reinitialize"""
- global store
- global root, unpadded_root, db, layout
- store, root, unpadded_root, db, layout = token
+ global STORE
+ STORE = token
def _construct_upstream_dbs_from_install_roots(
@@ -330,7 +282,7 @@ def find(
constraints: spec(s) to be matched against installed packages
multiple: if True multiple matches per constraint are admitted
query_fn (Callable): query function to get matching specs. By default,
- ``spack.store.db.query``
+ ``spack.store.STORE.db.query``
**kwargs: keyword arguments forwarded to the query function
"""
if isinstance(constraints, str):
@@ -338,7 +290,7 @@ def find(
matching_specs: List[spack.spec.Spec] = []
errors = []
- query_fn = query_fn or spack.store.db.query
+ query_fn = query_fn or spack.store.STORE.db.query
for spec in constraints:
current_matches = query_fn(spec, **kwargs)
@@ -388,7 +340,7 @@ def use_store(
Yields:
Store object associated with the context manager's store
"""
- global store, db, layout, root, unpadded_root
+ global STORE
assert not isinstance(path, Store), "cannot pass a store anymore"
scope_name = "use-store-{}".format(uuid.uuid4())
@@ -397,22 +349,18 @@ def use_store(
data.update(extra_data)
# Swap the store with the one just constructed and return it
- _ = store.db
+ _ = STORE.db
spack.config.config.push_scope(
spack.config.InternalConfigScope(name=scope_name, data={"config": {"install_tree": data}})
)
temporary_store = create(configuration=spack.config.config)
- original_store, store = store, temporary_store
- db, layout = store.db, store.layout
- root, unpadded_root = store.root, store.unpadded_root
+ original_store, STORE = STORE, temporary_store
try:
yield temporary_store
finally:
# Restore the original store
- store = original_store
- db, layout = original_store.db, original_store.layout
- root, unpadded_root = original_store.root, original_store.unpadded_root
+ STORE = original_store
spack.config.config.remove_scope(scope_name=scope_name)
diff --git a/lib/spack/spack/subprocess_context.py b/lib/spack/spack/subprocess_context.py
index 86a7f15ebe..7a9a5f4132 100644
--- a/lib/spack/spack/subprocess_context.py
+++ b/lib/spack/spack/subprocess_context.py
@@ -97,20 +97,14 @@ class TestState:
self.config = spack.config.config
self.platform = spack.platforms.host
self.test_patches = store_patches()
- self.store = spack.store.store
+ self.store = spack.store.STORE
def restore(self):
if _SERIALIZE:
spack.config.config = self.config
spack.repo.path = spack.repo.create(self.config)
spack.platforms.host = self.platform
-
- spack.store.store = self.store
- spack.store.root = self.store.root
- spack.store.unpadded_root = self.store.unpadded_root
- spack.store.db = self.store.db
- spack.store.layout = self.store.layout
-
+ spack.store.STORE = self.store
self.test_patches.restore()
diff --git a/lib/spack/spack/test/bindist.py b/lib/spack/spack/test/bindist.py
index cf2eb932ce..b578c05887 100644
--- a/lib/spack/spack/test/bindist.py
+++ b/lib/spack/spack/test/bindist.py
@@ -148,15 +148,15 @@ def install_dir_default_layout(tmpdir):
scheme = os.path.join(
"${architecture}", "${compiler.name}-${compiler.version}", "${name}-${version}-${hash}"
)
- real_store, real_layout = spack.store.store, spack.store.layout
+ real_store, real_layout = spack.store.STORE, spack.store.STORE.layout
opt_dir = tmpdir.join("opt")
- spack.store.store = spack.store.Store(str(opt_dir))
- spack.store.layout = DirectoryLayout(str(opt_dir), path_scheme=scheme)
+ spack.store.STORE = spack.store.Store(str(opt_dir))
+ spack.store.STORE.layout = DirectoryLayout(str(opt_dir), path_scheme=scheme)
try:
yield spack.store
finally:
- spack.store.store = real_store
- spack.store.layout = real_layout
+ spack.store.STORE = real_store
+ spack.store.STORE.layout = real_layout
@pytest.fixture(scope="function")
@@ -165,15 +165,15 @@ def install_dir_non_default_layout(tmpdir):
scheme = os.path.join(
"${name}", "${version}", "${architecture}-${compiler.name}-${compiler.version}-${hash}"
)
- real_store, real_layout = spack.store.store, spack.store.layout
+ real_store, real_layout = spack.store.STORE, spack.store.STORE.layout
opt_dir = tmpdir.join("opt")
- spack.store.store = spack.store.Store(str(opt_dir))
- spack.store.layout = DirectoryLayout(str(opt_dir), path_scheme=scheme)
+ spack.store.STORE = spack.store.Store(str(opt_dir))
+ spack.store.STORE.layout = DirectoryLayout(str(opt_dir), path_scheme=scheme)
try:
yield spack.store
finally:
- spack.store.store = real_store
- spack.store.layout = real_layout
+ spack.store.STORE = real_store
+ spack.store.STORE.layout = real_layout
args = ["file"]
diff --git a/lib/spack/spack/test/bootstrap.py b/lib/spack/spack/test/bootstrap.py
index d19807457f..0c65846135 100644
--- a/lib/spack/spack/test/bootstrap.py
+++ b/lib/spack/spack/test/bootstrap.py
@@ -25,11 +25,11 @@ def test_store_is_restored_correctly_after_bootstrap(mutable_config, tmpdir):
"""Tests that the store is correctly swapped during bootstrapping, and restored afterward."""
user_path = str(tmpdir.join("store"))
with spack.store.use_store(user_path):
- assert spack.store.root == user_path
+ assert spack.store.STORE.root == user_path
assert spack.config.config.get("config:install_tree:root") == user_path
with spack.bootstrap.ensure_bootstrap_configuration():
- assert spack.store.root == spack.bootstrap.config.store_path()
- assert spack.store.root == user_path
+ assert spack.store.STORE.root == spack.bootstrap.config.store_path()
+ assert spack.store.STORE.root == user_path
assert spack.config.config.get("config:install_tree:root") == user_path
@@ -42,7 +42,7 @@ def test_store_padding_length_is_zero_during_bootstrapping(mutable_config, tmpdi
with spack.store.use_store(user_path, extra_data={"padded_length": 512}):
assert spack.config.config.get("config:install_tree:padded_length") == 512
with spack.bootstrap.ensure_bootstrap_configuration():
- assert spack.store.root == spack.bootstrap.config.store_path()
+ assert spack.store.STORE.root == spack.bootstrap.config.store_path()
assert spack.config.config.get("config:install_tree:padded_length") == 0
assert spack.config.config.get("config:install_tree:padded_length") == 512
@@ -161,7 +161,7 @@ spack:
# Don't trigger evaluation here
with spack.bootstrap.ensure_bootstrap_configuration():
pass
- assert str(spack.store.root) == install_root
+ assert str(spack.store.STORE.root) == install_root
def test_nested_use_of_context_manager(mutable_config):
diff --git a/lib/spack/spack/test/cmd/config.py b/lib/spack/spack/test/cmd/config.py
index c410fcfc76..26203dbec8 100644
--- a/lib/spack/spack/test/cmd/config.py
+++ b/lib/spack/spack/test/cmd/config.py
@@ -623,7 +623,7 @@ def test_config_prefer_upstream(
downstream_db_root = str(tmpdir_factory.mktemp("mock_downstream_db_root"))
db_for_test = spack.database.Database(downstream_db_root, upstream_dbs=[prepared_db])
- monkeypatch.setattr(spack.store, "db", db_for_test)
+ monkeypatch.setattr(spack.store.STORE, "db", db_for_test)
output = config("prefer-upstream")
scope = spack.config.default_modify_scope("packages")
diff --git a/lib/spack/spack/test/cmd/dependencies.py b/lib/spack/spack/test/cmd/dependencies.py
index 3d4671f638..f61c19a7f1 100644
--- a/lib/spack/spack/test/cmd/dependencies.py
+++ b/lib/spack/spack/test/cmd/dependencies.py
@@ -54,7 +54,9 @@ def test_direct_installed_dependencies(mock_packages, database):
lines = [line for line in out.strip().split("\n") if not line.startswith("--")]
hashes = set([re.split(r"\s+", line)[0] for line in lines])
- expected = set([spack.store.db.query_one(s).dag_hash(7) for s in ["mpich", "callpath^mpich"]])
+ expected = set(
+ [spack.store.STORE.db.query_one(s).dag_hash(7) for s in ["mpich", "callpath^mpich"]]
+ )
assert expected == hashes
@@ -69,7 +71,7 @@ def test_transitive_installed_dependencies(mock_packages, database):
expected = set(
[
- spack.store.db.query_one(s).dag_hash(7)
+ spack.store.STORE.db.query_one(s).dag_hash(7)
for s in ["zmpi", "callpath^zmpi", "fake", "dyninst", "libdwarf", "libelf"]
]
)
diff --git a/lib/spack/spack/test/cmd/dependents.py b/lib/spack/spack/test/cmd/dependents.py
index 16b81f1361..9d124c0a2c 100644
--- a/lib/spack/spack/test/cmd/dependents.py
+++ b/lib/spack/spack/test/cmd/dependents.py
@@ -57,9 +57,11 @@ def test_immediate_installed_dependents(mock_packages, database):
lines = [li for li in out.strip().split("\n") if not li.startswith("--")]
hashes = set([re.split(r"\s+", li)[0] for li in lines])
- expected = set([spack.store.db.query_one(s).dag_hash(7) for s in ["dyninst", "libdwarf"]])
+ expected = set(
+ [spack.store.STORE.db.query_one(s).dag_hash(7) for s in ["dyninst", "libdwarf"]]
+ )
- libelf = spack.store.db.query_one("libelf")
+ libelf = spack.store.STORE.db.query_one("libelf")
expected = set([d.dag_hash(7) for d in libelf.dependents()])
assert expected == hashes
@@ -75,7 +77,7 @@ def test_transitive_installed_dependents(mock_packages, database):
expected = set(
[
- spack.store.db.query_one(s).dag_hash(7)
+ spack.store.STORE.db.query_one(s).dag_hash(7)
for s in ["zmpi", "callpath^zmpi", "mpileaks^zmpi"]
]
)
diff --git a/lib/spack/spack/test/cmd/deprecate.py b/lib/spack/spack/test/cmd/deprecate.py
index 0978bc66ea..bd6455b5d3 100644
--- a/lib/spack/spack/test/cmd/deprecate.py
+++ b/lib/spack/spack/test/cmd/deprecate.py
@@ -23,15 +23,15 @@ def test_deprecate(mock_packages, mock_archive, mock_fetch, install_mockery):
install("libelf@0.8.13")
install("libelf@0.8.10")
- all_installed = spack.store.db.query()
+ all_installed = spack.store.STORE.db.query()
assert len(all_installed) == 2
deprecate("-y", "libelf@0.8.10", "libelf@0.8.13")
- non_deprecated = spack.store.db.query()
- all_available = spack.store.db.query(installed=any)
+ non_deprecated = spack.store.STORE.db.query()
+ all_available = spack.store.STORE.db.query(installed=any)
assert all_available == all_installed
- assert non_deprecated == spack.store.db.query("libelf@0.8.13")
+ assert non_deprecated == spack.store.STORE.db.query("libelf@0.8.13")
def test_deprecate_fails_no_such_package(mock_packages, mock_archive, mock_fetch, install_mockery):
@@ -53,13 +53,13 @@ def test_deprecate_install(mock_packages, mock_archive, mock_fetch, install_mock
that is not yet installed."""
install("libelf@0.8.10")
- to_deprecate = spack.store.db.query()
+ to_deprecate = spack.store.STORE.db.query()
assert len(to_deprecate) == 1
deprecate("-y", "-i", "libelf@0.8.10", "libelf@0.8.13")
- non_deprecated = spack.store.db.query()
- deprecated = spack.store.db.query(installed=InstallStatuses.DEPRECATED)
+ non_deprecated = spack.store.STORE.db.query()
+ deprecated = spack.store.STORE.db.query(installed=InstallStatuses.DEPRECATED)
assert deprecated == to_deprecate
assert len(non_deprecated) == 1
assert non_deprecated[0].satisfies("libelf@0.8.13")
@@ -73,13 +73,13 @@ def test_deprecate_deps(mock_packages, mock_archive, mock_fetch, install_mockery
new_spec = spack.spec.Spec("libdwarf@20130729^libelf@0.8.13").concretized()
old_spec = spack.spec.Spec("libdwarf@20130207^libelf@0.8.10").concretized()
- all_installed = spack.store.db.query()
+ all_installed = spack.store.STORE.db.query()
deprecate("-y", "-d", "libdwarf@20130207", "libdwarf@20130729")
- non_deprecated = spack.store.db.query()
- all_available = spack.store.db.query(installed=any)
- deprecated = spack.store.db.query(installed=InstallStatuses.DEPRECATED)
+ non_deprecated = spack.store.STORE.db.query()
+ all_available = spack.store.STORE.db.query(installed=any)
+ deprecated = spack.store.STORE.db.query(installed=InstallStatuses.DEPRECATED)
assert all_available == all_installed
assert sorted(all_available) == sorted(deprecated + non_deprecated)
@@ -95,12 +95,12 @@ def test_uninstall_deprecated(mock_packages, mock_archive, mock_fetch, install_m
deprecate("-y", "libelf@0.8.10", "libelf@0.8.13")
- non_deprecated = spack.store.db.query()
+ non_deprecated = spack.store.STORE.db.query()
uninstall("-y", "libelf@0.8.10")
- assert spack.store.db.query() == spack.store.db.query(installed=any)
- assert spack.store.db.query() == non_deprecated
+ assert spack.store.STORE.db.query() == spack.store.STORE.db.query(installed=any)
+ assert spack.store.STORE.db.query() == non_deprecated
def test_deprecate_already_deprecated(mock_packages, mock_archive, mock_fetch, install_mockery):
@@ -113,17 +113,17 @@ def test_deprecate_already_deprecated(mock_packages, mock_archive, mock_fetch, i
deprecate("-y", "libelf@0.8.10", "libelf@0.8.12")
- deprecator = spack.store.db.deprecator(deprecated_spec)
+ deprecator = spack.store.STORE.db.deprecator(deprecated_spec)
assert deprecator == spack.spec.Spec("libelf@0.8.12").concretized()
deprecate("-y", "libelf@0.8.10", "libelf@0.8.13")
- non_deprecated = spack.store.db.query()
- all_available = spack.store.db.query(installed=any)
+ non_deprecated = spack.store.STORE.db.query()
+ all_available = spack.store.STORE.db.query(installed=any)
assert len(non_deprecated) == 2
assert len(all_available) == 3
- deprecator = spack.store.db.deprecator(deprecated_spec)
+ deprecator = spack.store.STORE.db.deprecator(deprecated_spec)
assert deprecator == spack.spec.Spec("libelf@0.8.13").concretized()
@@ -140,19 +140,19 @@ def test_deprecate_deprecator(mock_packages, mock_archive, mock_fetch, install_m
deprecate("-y", "libelf@0.8.10", "libelf@0.8.12")
- deprecator = spack.store.db.deprecator(first_deprecated_spec)
+ deprecator = spack.store.STORE.db.deprecator(first_deprecated_spec)
assert deprecator == second_deprecated_spec
deprecate("-y", "libelf@0.8.12", "libelf@0.8.13")
- non_deprecated = spack.store.db.query()
- all_available = spack.store.db.query(installed=any)
+ non_deprecated = spack.store.STORE.db.query()
+ all_available = spack.store.STORE.db.query(installed=any)
assert len(non_deprecated) == 1
assert len(all_available) == 3
- first_deprecator = spack.store.db.deprecator(first_deprecated_spec)
+ first_deprecator = spack.store.STORE.db.deprecator(first_deprecated_spec)
assert first_deprecator == final_deprecator
- second_deprecator = spack.store.db.deprecator(second_deprecated_spec)
+ second_deprecator = spack.store.STORE.db.deprecator(second_deprecated_spec)
assert second_deprecator == final_deprecator
diff --git a/lib/spack/spack/test/cmd/dev_build.py b/lib/spack/spack/test/cmd/dev_build.py
index 00848e8524..296f8336e4 100644
--- a/lib/spack/spack/test/cmd/dev_build.py
+++ b/lib/spack/spack/test/cmd/dev_build.py
@@ -72,7 +72,7 @@ def test_dev_build_until(tmpdir, mock_packages, install_mockery):
assert f.read() == spec.package.replacement_string
assert not os.path.exists(spec.prefix)
- assert not spack.store.db.query(spec, installed=True)
+ assert not spack.store.STORE.db.query(spec, installed=True)
def test_dev_build_until_last_phase(tmpdir, mock_packages, install_mockery):
@@ -91,7 +91,7 @@ def test_dev_build_until_last_phase(tmpdir, mock_packages, install_mockery):
assert f.read() == spec.package.replacement_string
assert os.path.exists(spec.prefix)
- assert spack.store.db.query(spec, installed=True)
+ assert spack.store.STORE.db.query(spec, installed=True)
assert os.path.exists(str(tmpdir))
diff --git a/lib/spack/spack/test/cmd/env.py b/lib/spack/spack/test/cmd/env.py
index 6eed2dfc74..89f74a5d02 100644
--- a/lib/spack/spack/test/cmd/env.py
+++ b/lib/spack/spack/test/cmd/env.py
@@ -250,8 +250,8 @@ def test_env_roots_marked_explicit(install_mockery, mock_fetch):
install("dependent-install")
# Check one explicit, one implicit install
- dependent = spack.store.db.query(explicit=True)
- dependency = spack.store.db.query(explicit=False)
+ dependent = spack.store.STORE.db.query(explicit=True)
+ dependency = spack.store.STORE.db.query(explicit=False)
assert len(dependent) == 1
assert len(dependency) == 1
@@ -262,7 +262,7 @@ def test_env_roots_marked_explicit(install_mockery, mock_fetch):
e.concretize()
e.install_all()
- explicit = spack.store.db.query(explicit=True)
+ explicit = spack.store.STORE.db.query(explicit=True)
assert len(explicit) == 2
@@ -362,10 +362,10 @@ spack:
assert "depb: Executing phase:" in out
assert "a: Executing phase:" in out
- depb = spack.store.db.query_one("depb", installed=True)
+ depb = spack.store.STORE.db.query_one("depb", installed=True)
assert depb, "Expected depb to be installed"
- a = spack.store.db.query_one("a", installed=True)
+ a = spack.store.STORE.db.query_one("a", installed=True)
assert a, "Expected a to be installed"
@@ -2802,11 +2802,11 @@ spack:
install_root
)
)
- current_store_root = str(spack.store.root)
+ current_store_root = str(spack.store.STORE.root)
assert str(current_store_root) != install_root
with spack.environment.Environment(str(tmpdir)):
- assert str(spack.store.root) == install_root
- assert str(spack.store.root) == current_store_root
+ assert str(spack.store.STORE.root) == install_root
+ assert str(spack.store.STORE.root) == current_store_root
def test_activate_temp(monkeypatch, tmpdir):
diff --git a/lib/spack/spack/test/cmd/external.py b/lib/spack/spack/test/cmd/external.py
index 135ed026cb..1a0c6d36ab 100644
--- a/lib/spack/spack/test/cmd/external.py
+++ b/lib/spack/spack/test/cmd/external.py
@@ -275,7 +275,7 @@ def test_find_external_nonempty_default_manifest_dir(
monkeypatch.setenv("PATH", "")
monkeypatch.setattr(spack.cray_manifest, "default_path", str(directory_with_manifest))
external("find")
- specs = spack.store.db.query("hwloc")
+ specs = spack.store.STORE.db.query("hwloc")
assert any(x.dag_hash() == "hwlocfakehashaaa" for x in specs)
diff --git a/lib/spack/spack/test/cmd/find.py b/lib/spack/spack/test/cmd/find.py
index 249f93257f..cf702c0989 100644
--- a/lib/spack/spack/test/cmd/find.py
+++ b/lib/spack/spack/test/cmd/find.py
@@ -352,7 +352,7 @@ def test_find_loaded(database, working_env):
assert output == ""
os.environ[uenv.spack_loaded_hashes_var] = ":".join(
- [x.dag_hash() for x in spack.store.db.query()]
+ [x.dag_hash() for x in spack.store.STORE.db.query()]
)
output = find("--loaded")
expected = find()
diff --git a/lib/spack/spack/test/cmd/install.py b/lib/spack/spack/test/cmd/install.py
index 5c162a30e2..e0518ab73d 100644
--- a/lib/spack/spack/test/cmd/install.py
+++ b/lib/spack/spack/test/cmd/install.py
@@ -216,7 +216,9 @@ def test_install_overwrite(mock_packages, mock_archive, mock_fetch, config, inst
# Ignore manifest and install times
manifest = os.path.join(
- spec.prefix, spack.store.layout.metadata_dir, spack.store.layout.manifest_file_name
+ spec.prefix,
+ spack.store.STORE.layout.metadata_dir,
+ spack.store.STORE.layout.manifest_file_name,
)
ignores = [manifest, spec.package.times_log_path]
@@ -291,7 +293,9 @@ def test_install_overwrite_multiple(
install("cmake")
ld_manifest = os.path.join(
- libdwarf.prefix, spack.store.layout.metadata_dir, spack.store.layout.manifest_file_name
+ libdwarf.prefix,
+ spack.store.STORE.layout.metadata_dir,
+ spack.store.STORE.layout.manifest_file_name,
)
ld_ignores = [ld_manifest, libdwarf.package.times_log_path]
@@ -300,7 +304,9 @@ def test_install_overwrite_multiple(
expected_libdwarf_md5 = fs.hash_directory(libdwarf.prefix, ignore=ld_ignores)
cm_manifest = os.path.join(
- cmake.prefix, spack.store.layout.metadata_dir, spack.store.layout.manifest_file_name
+ cmake.prefix,
+ spack.store.STORE.layout.metadata_dir,
+ spack.store.STORE.layout.manifest_file_name,
)
cm_ignores = [cm_manifest, cmake.package.times_log_path]
@@ -512,7 +518,7 @@ def test_extra_files_are_archived(
install("archive-files")
- archive_dir = os.path.join(spack.store.layout.metadata_path(s), "archived-files")
+ archive_dir = os.path.join(spack.store.STORE.layout.metadata_path(s), "archived-files")
config_log = os.path.join(archive_dir, mock_archive.expanded_archive_basedir, "config.log")
assert os.path.exists(config_log)
@@ -699,7 +705,7 @@ def test_cache_only_fails(tmpdir, mock_fetch, install_mockery, capfd):
assert "was not installed" in out
# Check that failure prefix locks are still cached
- failure_lock_prefixes = ",".join(spack.store.db._prefix_failures.keys())
+ failure_lock_prefixes = ",".join(spack.store.STORE.db._prefix_failures.keys())
assert "libelf" in failure_lock_prefixes
assert "libdwarf" in failure_lock_prefixes
diff --git a/lib/spack/spack/test/cmd/mark.py b/lib/spack/spack/test/cmd/mark.py
index 1779ed8083..d7d93c267c 100644
--- a/lib/spack/spack/test/cmd/mark.py
+++ b/lib/spack/spack/test/cmd/mark.py
@@ -30,7 +30,7 @@ def test_mark_spec_required(mutable_database):
def test_mark_all_explicit(mutable_database):
mark("-e", "-a")
gc("-y")
- all_specs = spack.store.layout.all_specs()
+ all_specs = spack.store.STORE.layout.all_specs()
assert len(all_specs) == 15
@@ -38,7 +38,7 @@ def test_mark_all_explicit(mutable_database):
def test_mark_all_implicit(mutable_database):
mark("-i", "-a")
gc("-y")
- all_specs = spack.store.layout.all_specs()
+ all_specs = spack.store.STORE.layout.all_specs()
assert len(all_specs) == 0
@@ -47,7 +47,7 @@ def test_mark_one_explicit(mutable_database):
mark("-e", "libelf")
uninstall("-y", "-a", "mpileaks")
gc("-y")
- all_specs = spack.store.layout.all_specs()
+ all_specs = spack.store.STORE.layout.all_specs()
assert len(all_specs) == 3
@@ -55,7 +55,7 @@ def test_mark_one_explicit(mutable_database):
def test_mark_one_implicit(mutable_database):
mark("-i", "externaltest")
gc("-y")
- all_specs = spack.store.layout.all_specs()
+ all_specs = spack.store.STORE.layout.all_specs()
assert len(all_specs) == 14
@@ -64,5 +64,5 @@ def test_mark_all_implicit_then_explicit(mutable_database):
mark("-i", "-a")
mark("-e", "-a")
gc("-y")
- all_specs = spack.store.layout.all_specs()
+ all_specs = spack.store.STORE.layout.all_specs()
assert len(all_specs) == 15
diff --git a/lib/spack/spack/test/cmd/reindex.py b/lib/spack/spack/test/cmd/reindex.py
index 3b611c03b6..78d5070296 100644
--- a/lib/spack/spack/test/cmd/reindex.py
+++ b/lib/spack/spack/test/cmd/reindex.py
@@ -21,23 +21,23 @@ def test_reindex_basic(mock_packages, mock_archive, mock_fetch, install_mockery)
install("libelf@0.8.13")
install("libelf@0.8.12")
- all_installed = spack.store.db.query()
+ all_installed = spack.store.STORE.db.query()
reindex()
- assert spack.store.db.query() == all_installed
+ assert spack.store.STORE.db.query() == all_installed
def test_reindex_db_deleted(mock_packages, mock_archive, mock_fetch, install_mockery):
install("libelf@0.8.13")
install("libelf@0.8.12")
- all_installed = spack.store.db.query()
+ all_installed = spack.store.STORE.db.query()
- os.remove(spack.store.db._index_path)
+ os.remove(spack.store.STORE.db._index_path)
reindex()
- assert spack.store.db.query() == all_installed
+ assert spack.store.STORE.db.query() == all_installed
def test_reindex_with_deprecated_packages(
@@ -48,11 +48,11 @@ def test_reindex_with_deprecated_packages(
deprecate("-y", "libelf@0.8.12", "libelf@0.8.13")
- all_installed = spack.store.db.query(installed=any)
- non_deprecated = spack.store.db.query(installed=True)
+ all_installed = spack.store.STORE.db.query(installed=any)
+ non_deprecated = spack.store.STORE.db.query(installed=True)
- os.remove(spack.store.db._index_path)
+ os.remove(spack.store.STORE.db._index_path)
reindex()
- assert spack.store.db.query(installed=any) == all_installed
- assert spack.store.db.query(installed=True) == non_deprecated
+ assert spack.store.STORE.db.query(installed=any) == all_installed
+ assert spack.store.STORE.db.query(installed=True) == non_deprecated
diff --git a/lib/spack/spack/test/cmd/spec.py b/lib/spack/spack/test/cmd/spec.py
index 7e4401f313..865447f3e8 100644
--- a/lib/spack/spack/test/cmd/spec.py
+++ b/lib/spack/spack/test/cmd/spec.py
@@ -49,7 +49,7 @@ def test_spec_concretizer_args(mutable_config, mutable_database):
uninstall("-y", "mpileaks^mpich2")
# get the hash of mpileaks^zmpi
- mpileaks_zmpi = spack.store.db.query_one("mpileaks^zmpi")
+ mpileaks_zmpi = spack.store.STORE.db.query_one("mpileaks^zmpi")
h = mpileaks_zmpi.dag_hash()[:7]
output = spec("--fresh", "-l", "mpileaks")
diff --git a/lib/spack/spack/test/cmd/uninstall.py b/lib/spack/spack/test/cmd/uninstall.py
index 48a2028f24..15af4659d6 100644
--- a/lib/spack/spack/test/cmd/uninstall.py
+++ b/lib/spack/spack/test/cmd/uninstall.py
@@ -46,7 +46,7 @@ def test_correct_installed_dependents(mutable_database):
# Test whether we return the right dependents.
# Take callpath from the database
- callpath = spack.store.db.query_local("callpath")[0]
+ callpath = spack.store.STORE.db.query_local("callpath")[0]
# Ensure it still has dependents and dependencies
dependents = callpath.dependents(deptype=("run", "link"))
@@ -78,7 +78,7 @@ def test_recursive_uninstall(mutable_database):
"""Test recursive uninstall."""
uninstall("-y", "-a", "--dependents", "callpath")
- all_specs = spack.store.layout.all_specs()
+ all_specs = spack.store.STORE.layout.all_specs()
assert len(all_specs) == 9
# query specs with multiple configurations
mpileaks_specs = [s for s in all_specs if s.satisfies("mpileaks")]
@@ -98,7 +98,7 @@ def test_uninstall_spec_with_multiple_roots(
):
uninstall("-y", "-a", "--dependents", constraint)
- all_specs = spack.store.layout.all_specs()
+ all_specs = spack.store.STORE.layout.all_specs()
assert len(all_specs) == expected_number_of_specs
@@ -109,7 +109,7 @@ def test_force_uninstall_spec_with_ref_count_not_zero(
):
uninstall("-f", "-y", constraint)
- all_specs = spack.store.layout.all_specs()
+ all_specs = spack.store.STORE.layout.all_specs()
assert len(all_specs) == expected_number_of_specs
@@ -117,41 +117,41 @@ def test_force_uninstall_spec_with_ref_count_not_zero(
def test_force_uninstall_and_reinstall_by_hash(mutable_database):
"""Test forced uninstall and reinstall of old specs."""
# this is the spec to be removed
- callpath_spec = spack.store.db.query_one("callpath ^mpich")
+ callpath_spec = spack.store.STORE.db.query_one("callpath ^mpich")
dag_hash = callpath_spec.dag_hash()
# ensure can look up by hash and that it's a dependent of mpileaks
def validate_callpath_spec(installed):
assert installed is True or installed is False
- specs = spack.store.db.get_by_hash(dag_hash, installed=installed)
+ specs = spack.store.STORE.db.get_by_hash(dag_hash, installed=installed)
assert len(specs) == 1 and specs[0] == callpath_spec
- specs = spack.store.db.get_by_hash(dag_hash[:7], installed=installed)
+ specs = spack.store.STORE.db.get_by_hash(dag_hash[:7], installed=installed)
assert len(specs) == 1 and specs[0] == callpath_spec
- specs = spack.store.db.get_by_hash(dag_hash, installed=any)
+ specs = spack.store.STORE.db.get_by_hash(dag_hash, installed=any)
assert len(specs) == 1 and specs[0] == callpath_spec
- specs = spack.store.db.get_by_hash(dag_hash[:7], installed=any)
+ specs = spack.store.STORE.db.get_by_hash(dag_hash[:7], installed=any)
assert len(specs) == 1 and specs[0] == callpath_spec
- specs = spack.store.db.get_by_hash(dag_hash, installed=not installed)
+ specs = spack.store.STORE.db.get_by_hash(dag_hash, installed=not installed)
assert specs is None
- specs = spack.store.db.get_by_hash(dag_hash[:7], installed=not installed)
+ specs = spack.store.STORE.db.get_by_hash(dag_hash[:7], installed=not installed)
assert specs is None
- mpileaks_spec = spack.store.db.query_one("mpileaks ^mpich")
+ mpileaks_spec = spack.store.STORE.db.query_one("mpileaks ^mpich")
assert callpath_spec in mpileaks_spec
- spec = spack.store.db.query_one("callpath ^mpich", installed=installed)
+ spec = spack.store.STORE.db.query_one("callpath ^mpich", installed=installed)
assert spec == callpath_spec
- spec = spack.store.db.query_one("callpath ^mpich", installed=any)
+ spec = spack.store.STORE.db.query_one("callpath ^mpich", installed=any)
assert spec == callpath_spec
- spec = spack.store.db.query_one("callpath ^mpich", installed=not installed)
+ spec = spack.store.STORE.db.query_one("callpath ^mpich", installed=not installed)
assert spec is None
validate_callpath_spec(True)
@@ -164,7 +164,7 @@ def test_force_uninstall_and_reinstall_by_hash(mutable_database):
# BUT, make sure that the removed callpath spec is not in queries
def db_specs():
- all_specs = spack.store.layout.all_specs()
+ all_specs = spack.store.STORE.layout.all_specs()
return (
all_specs,
[s for s in all_specs if s.satisfies("mpileaks")],
diff --git a/lib/spack/spack/test/cmd/verify.py b/lib/spack/spack/test/cmd/verify.py
index c66559e8db..1293df78e2 100644
--- a/lib/spack/spack/test/cmd/verify.py
+++ b/lib/spack/spack/test/cmd/verify.py
@@ -22,7 +22,7 @@ def test_single_file_verify_cmd(tmpdir):
# Test the verify command interface to verifying a single file.
filedir = os.path.join(str(tmpdir), "a", "b", "c", "d")
filepath = os.path.join(filedir, "file")
- metadir = os.path.join(str(tmpdir), spack.store.layout.metadata_dir)
+ metadir = os.path.join(str(tmpdir), spack.store.STORE.layout.metadata_dir)
fs.mkdirp(filedir)
fs.mkdirp(metadir)
@@ -32,7 +32,7 @@ def test_single_file_verify_cmd(tmpdir):
data = spack.verify.create_manifest_entry(filepath)
- manifest_file = os.path.join(metadir, spack.store.layout.manifest_file_name)
+ manifest_file = os.path.join(metadir, spack.store.STORE.layout.manifest_file_name)
with open(manifest_file, "w") as f:
sjson.dump({filepath: data}, f)
diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py
index b6c0e019ca..22baead777 100644
--- a/lib/spack/spack/test/concretize.py
+++ b/lib/spack/spack/test/concretize.py
@@ -1222,7 +1222,7 @@ class TestConcretize:
return [first_spec]
if mock_db:
- monkeypatch.setattr(spack.store.db, "query", mock_fn)
+ monkeypatch.setattr(spack.store.STORE.db, "query", mock_fn)
else:
monkeypatch.setattr(spack.binary_distribution, "update_cache_and_get_specs", mock_fn)
@@ -1275,7 +1275,7 @@ class TestConcretize:
spack.config.set("concretizer:reuse", True)
spec = Spec("a cflags=-g cxxflags=-g").concretized()
- spack.store.db.add(spec, None)
+ spack.store.STORE.db.add(spec, None)
testspec = Spec("a cflags=-g")
testspec.concretize()
@@ -2013,7 +2013,7 @@ class TestConcretize:
# install python external
python = Spec("python").concretized()
- monkeypatch.setattr(spack.store.db, "query", lambda x: [python])
+ monkeypatch.setattr(spack.store.STORE.db, "query", lambda x: [python])
# ensure that we can't be faking this by getting it from config
external_conf.pop("python")
diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py
index 2840f4dd78..2a64d71f4d 100644
--- a/lib/spack/spack/test/conftest.py
+++ b/lib/spack/spack/test/conftest.py
@@ -959,7 +959,7 @@ def install_mockery(temporary_store, mutable_config, mock_packages):
# Also wipe out any cached prefix failure locks (associated with
# the session-scoped mock archive).
for pkg_id in list(temporary_store.db._prefix_failures.keys()):
- lock = spack.store.db._prefix_failures.pop(pkg_id, None)
+ lock = spack.store.STORE.db._prefix_failures.pop(pkg_id, None)
if lock:
try:
lock.release_write()
@@ -1946,4 +1946,4 @@ def nullify_globals(request, monkeypatch):
monkeypatch.setattr(spack.config, "config", None)
monkeypatch.setattr(spack.caches, "misc_cache", None)
monkeypatch.setattr(spack.repo, "path", None)
- monkeypatch.setattr(spack.store, "store", None)
+ monkeypatch.setattr(spack.store, "STORE", None)
diff --git a/lib/spack/spack/test/cray_manifest.py b/lib/spack/spack/test/cray_manifest.py
index aa9b9c623c..1a2229f65b 100644
--- a/lib/spack/spack/test/cray_manifest.py
+++ b/lib/spack/spack/test/cray_manifest.py
@@ -338,7 +338,7 @@ def test_read_cray_manifest(tmpdir, mutable_config, mock_packages, mutable_datab
with open(test_db_fname, "w") as db_file:
json.dump(create_manifest_content(), db_file)
cray_manifest.read(test_db_fname, True)
- query_specs = spack.store.db.query("openmpi")
+ query_specs = spack.store.STORE.db.query("openmpi")
assert any(x.dag_hash() == "openmpifakehasha" for x in query_specs)
concretized_specs = spack.cmd.parse_specs(
diff --git a/lib/spack/spack/test/database.py b/lib/spack/spack/test/database.py
index 05c61c325a..3f5d7887b7 100644
--- a/lib/spack/spack/test/database.py
+++ b/lib/spack/spack/test/database.py
@@ -77,7 +77,7 @@ def test_spec_installed_upstream(
upstream_write_db.add(spec, upstream_layout)
upstream_db._read()
- monkeypatch.setattr(spack.store, "db", downstream_db)
+ monkeypatch.setattr(spack.store.STORE, "db", downstream_db)
assert spec.installed
assert spec.installed_upstream
assert spec.copy().installed
@@ -195,11 +195,11 @@ def test_add_to_upstream_after_downstream(upstream_and_downstream_db, tmpdir):
assert len(qresults) == 1
(queried_spec,) = qresults
try:
- orig_db = spack.store.db
- spack.store.db = downstream_db
+ orig_db = spack.store.STORE.db
+ spack.store.STORE.db = downstream_db
assert queried_spec.prefix == downstream_layout.path_for_spec(spec)
finally:
- spack.store.db = orig_db
+ spack.store.STORE.db = orig_db
@pytest.mark.usefixtures("config", "temporary_store")
@@ -294,16 +294,16 @@ def _print_ref_counts():
recs = []
def add_rec(spec):
- cspecs = spack.store.db.query(spec, installed=any)
+ cspecs = spack.store.STORE.db.query(spec, installed=any)
if not cspecs:
recs.append("[ %-7s ] %-20s-" % ("", spec))
else:
key = cspecs[0].dag_hash()
- rec = spack.store.db.get_record(cspecs[0])
+ rec = spack.store.STORE.db.get_record(cspecs[0])
recs.append("[ %-7s ] %-20s%d" % (key[:7], spec, rec.ref_count))
- with spack.store.db.read_transaction():
+ with spack.store.STORE.db.read_transaction():
add_rec("mpileaks ^mpich")
add_rec("callpath ^mpich")
add_rec("mpich")
@@ -326,7 +326,7 @@ def _print_ref_counts():
def _check_merkleiness():
"""Ensure the spack database is a valid merkle graph."""
- all_specs = spack.store.db.query(installed=any)
+ all_specs = spack.store.STORE.db.query(installed=any)
seen = {}
for spec in all_specs:
@@ -340,7 +340,7 @@ def _check_merkleiness():
def _check_db_sanity(database):
"""Utility function to check db against install layout."""
- pkg_in_layout = sorted(spack.store.layout.all_specs())
+ pkg_in_layout = sorted(spack.store.STORE.layout.all_specs())
actual = sorted(database.query())
externals = sorted([x for x in actual if x.external])
@@ -376,7 +376,7 @@ def _check_remove_and_add_package(database, spec):
assert concrete_spec not in remaining
# add it back and make sure everything is ok.
- database.add(concrete_spec, spack.store.layout)
+ database.add(concrete_spec, spack.store.STORE.layout)
installed = database.query()
assert concrete_spec in installed
assert installed == original
@@ -392,7 +392,7 @@ def _mock_install(spec):
def _mock_remove(spec):
- specs = spack.store.db.query(spec)
+ specs = spack.store.STORE.db.query(spec)
assert len(specs) == 1
spec = specs[0]
spec.package.do_uninstall(spec)
@@ -454,7 +454,7 @@ def test_005_db_exists(database):
def test_010_all_install_sanity(database):
"""Ensure that the install layout reflects what we think it does."""
- all_specs = spack.store.layout.all_specs()
+ all_specs = spack.store.STORE.layout.all_specs()
assert len(all_specs) == 15
# Query specs with multiple configurations
@@ -483,12 +483,12 @@ def test_010_all_install_sanity(database):
def test_015_write_and_read(mutable_database):
# write and read DB
- with spack.store.db.write_transaction():
- specs = spack.store.db.query()
- recs = [spack.store.db.get_record(s) for s in specs]
+ with spack.store.STORE.db.write_transaction():
+ specs = spack.store.STORE.db.query()
+ recs = [spack.store.STORE.db.get_record(s) for s in specs]
for spec, rec in zip(specs, recs):
- new_rec = spack.store.db.get_record(spec)
+ new_rec = spack.store.STORE.db.get_record(spec)
assert new_rec.ref_count == rec.ref_count
assert new_rec.spec == rec.spec
assert new_rec.path == rec.path
@@ -498,12 +498,12 @@ def test_015_write_and_read(mutable_database):
def test_017_write_and_read_without_uuid(mutable_database, monkeypatch):
monkeypatch.setattr(spack.database, "_use_uuid", False)
# write and read DB
- with spack.store.db.write_transaction():
- specs = spack.store.db.query()
- recs = [spack.store.db.get_record(s) for s in specs]
+ with spack.store.STORE.db.write_transaction():
+ specs = spack.store.STORE.db.query()
+ recs = [spack.store.STORE.db.get_record(s) for s in specs]
for spec, rec in zip(specs, recs):
- new_rec = spack.store.db.get_record(spec)
+ new_rec = spack.store.STORE.db.get_record(spec)
assert new_rec.ref_count == rec.ref_count
assert new_rec.spec == rec.spec
assert new_rec.path == rec.path
@@ -517,7 +517,7 @@ def test_020_db_sanity(database):
def test_025_reindex(mutable_database):
"""Make sure reindex works and ref counts are valid."""
- spack.store.store.reindex()
+ spack.store.STORE.reindex()
_check_db_sanity(mutable_database)
@@ -527,7 +527,7 @@ def test_026_reindex_after_deprecate(mutable_database):
zmpi = mutable_database.query_one("zmpi")
mutable_database.deprecate(mpich, zmpi)
- spack.store.store.reindex()
+ spack.store.STORE.reindex()
_check_db_sanity(mutable_database)
@@ -538,8 +538,8 @@ class ReadModify:
def __call__(self):
# check that other process can read DB
- _check_db_sanity(spack.store.db)
- with spack.store.db.write_transaction():
+ _check_db_sanity(spack.store.STORE.db)
+ with spack.store.STORE.db.write_transaction():
_mock_remove("mpileaks ^zmpi")
@@ -571,7 +571,7 @@ def test_041_ref_counts_deprecate(mutable_database):
def test_050_basic_query(database):
"""Ensure querying database is consistent with what is installed."""
# query everything
- total_specs = len(spack.store.db.query())
+ total_specs = len(spack.store.STORE.db.query())
assert total_specs == 17
# query specs with multiple configurations
@@ -626,7 +626,7 @@ def test_080_root_ref_counts(mutable_database):
assert mutable_database.get_record("mpich").ref_count == 1
# Put the spec back
- mutable_database.add(rec.spec, spack.store.layout)
+ mutable_database.add(rec.spec, spack.store.STORE.layout)
# record is present again
assert len(mutable_database.query("mpileaks ^mpich", installed=any)) == 1
@@ -702,7 +702,7 @@ def test_115_reindex_with_packages_not_in_repo(mutable_database, tmpdir):
# packages should not have to be defined in the repository once they
# are installed
with spack.repo.use_repositories(spack.repo.MockRepositoryBuilder(tmpdir).root):
- spack.store.store.reindex()
+ spack.store.STORE.reindex()
_check_db_sanity(mutable_database)
@@ -740,7 +740,7 @@ def test_regression_issue_8036(mutable_database, usr_folder_exists):
@pytest.mark.regression("11118")
def test_old_external_entries_prefix(mutable_database):
- with open(spack.store.db._index_path, "r") as f:
+ with open(spack.store.STORE.db._index_path, "r") as f:
db_obj = json.loads(f.read())
jsonschema.validate(db_obj, schema)
@@ -750,13 +750,13 @@ def test_old_external_entries_prefix(mutable_database):
db_obj["database"]["installs"][s.dag_hash()]["path"] = "None"
- with open(spack.store.db._index_path, "w") as f:
+ with open(spack.store.STORE.db._index_path, "w") as f:
f.write(json.dumps(db_obj))
if _use_uuid:
- with open(spack.store.db._verifier_path, "w") as f:
+ with open(spack.store.STORE.db._verifier_path, "w") as f:
f.write(str(uuid.uuid4()))
- record = spack.store.db.get_record(s)
+ record = spack.store.STORE.db.get_record(s)
assert record.path is None
assert record.spec._prefix is None
@@ -779,7 +779,7 @@ def test_query_unused_specs(mutable_database):
s.concretize()
s.package.do_install(fake=True, explicit=True)
- unused = spack.store.db.unused_specs
+ unused = spack.store.STORE.db.unused_specs
assert len(unused) == 1
assert unused[0].name == "cmake"
@@ -792,7 +792,7 @@ def test_query_spec_with_conditional_dependency(mutable_database):
s.concretize()
s.package.do_install(fake=True, explicit=True)
- results = spack.store.db.query_local("hdf5 ^mpich")
+ results = spack.store.STORE.db.query_local("hdf5 ^mpich")
assert not results
@@ -800,7 +800,7 @@ def test_query_spec_with_conditional_dependency(mutable_database):
def test_query_spec_with_non_conditional_virtual_dependency(database):
# Ensure the same issue doesn't come up for virtual
# dependency that are not conditional on variants
- results = spack.store.db.query_local("mpileaks ^mpich")
+ results = spack.store.STORE.db.query_local("mpileaks ^mpich")
assert len(results) == 1
@@ -808,7 +808,7 @@ def test_failed_spec_path_error(database):
"""Ensure spec not concrete check is covered."""
s = spack.spec.Spec("a")
with pytest.raises(ValueError, match="Concrete spec required"):
- spack.store.db._failed_spec_path(s)
+ spack.store.STORE.db._failed_spec_path(s)
@pytest.mark.db
@@ -822,7 +822,7 @@ def test_clear_failure_keep(mutable_database, monkeypatch, capfd):
monkeypatch.setattr(spack.database.Database, "prefix_failure_locked", _is)
s = spack.spec.Spec("a")
- spack.store.db.clear_failure(s)
+ spack.store.STORE.db.clear_failure(s)
out = capfd.readouterr()[0]
assert "Retaining failure marking" in out
@@ -840,7 +840,7 @@ def test_clear_failure_forced(default_mock_concretization, mutable_database, mon
monkeypatch.setattr(spack.database.Database, "prefix_failure_marked", _is)
s = default_mock_concretization("a")
- spack.store.db.clear_failure(s, force=True)
+ spack.store.STORE.db.clear_failure(s, force=True)
out = capfd.readouterr()[1]
assert "Removing failure marking despite lock" in out
assert "Unable to remove failure marking" in out
@@ -858,14 +858,14 @@ def test_mark_failed(default_mock_concretization, mutable_database, monkeypatch,
with tmpdir.as_cwd():
s = default_mock_concretization("a")
- spack.store.db.mark_failed(s)
+ spack.store.STORE.db.mark_failed(s)
out = str(capsys.readouterr()[1])
assert "Unable to mark a as failed" in out
# Clean up the failure mark to ensure it does not interfere with other
# tests using the same spec.
- del spack.store.db._prefix_failures[s.prefix]
+ del spack.store.STORE.db._prefix_failures[s.prefix]
@pytest.mark.db
@@ -878,19 +878,19 @@ def test_prefix_failed(default_mock_concretization, mutable_database, monkeypatc
s = default_mock_concretization("a")
# Confirm the spec is not already marked as failed
- assert not spack.store.db.prefix_failed(s)
+ assert not spack.store.STORE.db.prefix_failed(s)
# Check that a failure entry is sufficient
- spack.store.db._prefix_failures[s.prefix] = None
- assert spack.store.db.prefix_failed(s)
+ spack.store.STORE.db._prefix_failures[s.prefix] = None
+ assert spack.store.STORE.db.prefix_failed(s)
# Remove the entry and check again
- del spack.store.db._prefix_failures[s.prefix]
- assert not spack.store.db.prefix_failed(s)
+ del spack.store.STORE.db._prefix_failures[s.prefix]
+ assert not spack.store.STORE.db.prefix_failed(s)
# Now pretend that the prefix failure is locked
monkeypatch.setattr(spack.database.Database, "prefix_failure_locked", _is)
- assert spack.store.db.prefix_failed(s)
+ assert spack.store.STORE.db.prefix_failed(s)
def test_prefix_read_lock_error(default_mock_concretization, mutable_database, monkeypatch):
@@ -905,7 +905,7 @@ def test_prefix_read_lock_error(default_mock_concretization, mutable_database, m
monkeypatch.setattr(lk.Lock, "acquire_read", _raise)
with pytest.raises(Exception):
- with spack.store.db.prefix_read_lock(s):
+ with spack.store.STORE.db.prefix_read_lock(s):
assert False
@@ -921,7 +921,7 @@ def test_prefix_write_lock_error(default_mock_concretization, mutable_database,
monkeypatch.setattr(lk.Lock, "acquire_write", _raise)
with pytest.raises(Exception):
- with spack.store.db.prefix_write_lock(s):
+ with spack.store.STORE.db.prefix_write_lock(s):
assert False
@@ -969,7 +969,7 @@ def test_reindex_removed_prefix_is_not_installed(mutable_database, mock_store, c
shutil.rmtree(prefix)
# Reindex should pick up libelf as a dependency of libdwarf
- spack.store.store.reindex()
+ spack.store.STORE.reindex()
# Reindexing should warn about libelf not being found on the filesystem
err = capfd.readouterr()[1]
@@ -982,7 +982,7 @@ def test_reindex_removed_prefix_is_not_installed(mutable_database, mock_store, c
def test_reindex_when_all_prefixes_are_removed(mutable_database, mock_store):
# Remove all non-external installations from the filesystem
- for spec in spack.store.db.query_local():
+ for spec in spack.store.STORE.db.query_local():
if not spec.external:
assert spec.prefix.startswith(str(mock_store))
shutil.rmtree(spec.prefix)
@@ -992,7 +992,7 @@ def test_reindex_when_all_prefixes_are_removed(mutable_database, mock_store):
assert num > 0
# Reindex uses the current index to repopulate itself
- spack.store.store.reindex()
+ spack.store.STORE.reindex()
# Make sure all explicit specs are still there, but are now uninstalled.
specs = mutable_database.query_local(installed=False, explicit=True)
diff --git a/lib/spack/spack/test/install.py b/lib/spack/spack/test/install.py
index 8b1e91671d..a6ac33fe96 100644
--- a/lib/spack/spack/test/install.py
+++ b/lib/spack/spack/test/install.py
@@ -159,7 +159,7 @@ def test_partial_install_delete_prefix_and_stage(install_mockery, mock_fetch, wo
s.package.remove_prefix = rm_prefix_checker.remove_prefix
# must clear failure markings for the package before re-installing it
- spack.store.db.clear_failure(s, True)
+ spack.store.STORE.db.clear_failure(s, True)
s.package.set_install_succeed()
s.package.stage = MockStage(s.package.stage)
@@ -354,7 +354,7 @@ def test_partial_install_keep_prefix(install_mockery, mock_fetch, monkeypatch, w
assert os.path.exists(s.package.prefix)
# must clear failure markings for the package before re-installing it
- spack.store.db.clear_failure(s, True)
+ spack.store.STORE.db.clear_failure(s, True)
s.package.set_install_succeed()
s.package.stage = MockStage(s.package.stage)
diff --git a/lib/spack/spack/test/installer.py b/lib/spack/spack/test/installer.py
index 590754bfaf..49840814a0 100644
--- a/lib/spack/spack/test/installer.py
+++ b/lib/spack/spack/test/installer.py
@@ -557,7 +557,7 @@ def test_dump_packages_deps_ok(install_mockery, tmpdir, mock_packages):
def test_dump_packages_deps_errs(install_mockery, tmpdir, monkeypatch, capsys):
"""Test error paths for dump_packages with dependencies."""
- orig_bpp = spack.store.layout.build_packages_path
+ orig_bpp = spack.store.STORE.layout.build_packages_path
orig_dirname = spack.repo.Repo.dirname_for_package_name
repo_err_msg = "Mock dirname_for_package_name"
@@ -576,7 +576,7 @@ def test_dump_packages_deps_errs(install_mockery, tmpdir, monkeypatch, capsys):
# Now mock the creation of the required directory structure to cover
# the try-except block
- monkeypatch.setattr(spack.store.layout, "build_packages_path", bpp_path)
+ monkeypatch.setattr(spack.store.STORE.layout, "build_packages_path", bpp_path)
spec = spack.spec.Spec("simple-inheritance").concretized()
path = str(tmpdir)
@@ -601,29 +601,29 @@ def test_clear_failures_success(install_mockery):
# Set up a test prefix failure lock
lock = lk.Lock(
- spack.store.db.prefix_fail_path, start=1, length=1, default_timeout=1e-9, desc="test"
+ spack.store.STORE.db.prefix_fail_path, start=1, length=1, default_timeout=1e-9, desc="test"
)
try:
lock.acquire_write()
except lk.LockTimeoutError:
tty.warn("Failed to write lock the test install failure")
- spack.store.db._prefix_failures["test"] = lock
+ spack.store.STORE.db._prefix_failures["test"] = lock
# Set up a fake failure mark (or file)
- fs.touch(os.path.join(spack.store.db._failure_dir, "test"))
+ fs.touch(os.path.join(spack.store.STORE.db._failure_dir, "test"))
# Now clear failure tracking
inst.clear_failures()
# Ensure there are no cached failure locks or failure marks
- assert len(spack.store.db._prefix_failures) == 0
- assert len(os.listdir(spack.store.db._failure_dir)) == 0
+ assert len(spack.store.STORE.db._prefix_failures) == 0
+ assert len(os.listdir(spack.store.STORE.db._failure_dir)) == 0
# Ensure the core directory and failure lock file still exist
- assert os.path.isdir(spack.store.db._failure_dir)
+ assert os.path.isdir(spack.store.STORE.db._failure_dir)
# Locks on windows are a no-op
if sys.platform != "win32":
- assert os.path.isfile(spack.store.db.prefix_fail_path)
+ assert os.path.isfile(spack.store.STORE.db.prefix_fail_path)
def test_clear_failures_errs(install_mockery, monkeypatch, capsys):
@@ -635,7 +635,7 @@ def test_clear_failures_errs(install_mockery, monkeypatch, capsys):
raise OSError(err_msg)
# Set up a fake failure mark (or file)
- fs.touch(os.path.join(spack.store.db._failure_dir, "test"))
+ fs.touch(os.path.join(spack.store.STORE.db._failure_dir, "test"))
monkeypatch.setattr(os, "remove", _raise_except)
@@ -932,7 +932,7 @@ def test_setup_install_dir_grp(install_mockery, monkeypatch, capfd):
spec = installer.build_requests[0].pkg.spec
fs.touchp(spec.prefix)
- metadatadir = spack.store.layout.metadata_path(spec)
+ metadatadir = spack.store.STORE.layout.metadata_path(spec)
# Regex matching with Windows style paths typically fails
# so we skip the match check here
if sys.platform == "win32":
@@ -1388,7 +1388,7 @@ def test_single_external_implicit_install(install_mockery, explicit_args, is_exp
s = spack.spec.Spec(pkg).concretized()
s.external_path = "/usr"
create_installer([(s, explicit_args)]).install()
- assert spack.store.db.get_record(pkg).explicit == is_explicit
+ assert spack.store.STORE.db.get_record(pkg).explicit == is_explicit
@pytest.mark.parametrize("run_tests", [True, False])
diff --git a/lib/spack/spack/test/rewiring.py b/lib/spack/spack/test/rewiring.py
index 033318f15e..8c0286a243 100644
--- a/lib/spack/spack/test/rewiring.py
+++ b/lib/spack/spack/test/rewiring.py
@@ -38,7 +38,7 @@ def test_rewire_db(mock_fetch, install_mockery, transitive):
assert os.path.exists(spliced_spec.prefix)
# test that it made it into the database
- rec = spack.store.db.get_record(spliced_spec)
+ rec = spack.store.STORE.db.get_record(spliced_spec)
installed_in_db = rec.installed if rec else False
assert installed_in_db
@@ -68,7 +68,7 @@ def test_rewire_bin(mock_fetch, install_mockery, transitive):
assert os.path.exists(spliced_spec.prefix)
# test that it made it into the database
- rec = spack.store.db.get_record(spliced_spec)
+ rec = spack.store.STORE.db.get_record(spliced_spec)
installed_in_db = rec.installed if rec else False
assert installed_in_db
@@ -93,25 +93,31 @@ def test_rewire_writes_new_metadata(mock_fetch, install_mockery):
# test install manifests
for node in spliced_spec.traverse(root=True):
- spack.store.layout.ensure_installed(node)
+ spack.store.STORE.layout.ensure_installed(node)
manifest_file_path = os.path.join(
- node.prefix, spack.store.layout.metadata_dir, spack.store.layout.manifest_file_name
+ node.prefix,
+ spack.store.STORE.layout.metadata_dir,
+ spack.store.STORE.layout.manifest_file_name,
)
assert os.path.exists(manifest_file_path)
orig_node = spec[node.name]
orig_manifest_file_path = os.path.join(
orig_node.prefix,
- spack.store.layout.metadata_dir,
- spack.store.layout.manifest_file_name,
+ spack.store.STORE.layout.metadata_dir,
+ spack.store.STORE.layout.manifest_file_name,
)
assert os.path.exists(orig_manifest_file_path)
assert not filecmp.cmp(orig_manifest_file_path, manifest_file_path, shallow=False)
specfile_path = os.path.join(
- node.prefix, spack.store.layout.metadata_dir, spack.store.layout.spec_file_name
+ node.prefix,
+ spack.store.STORE.layout.metadata_dir,
+ spack.store.STORE.layout.spec_file_name,
)
assert os.path.exists(specfile_path)
orig_specfile_path = os.path.join(
- orig_node.prefix, spack.store.layout.metadata_dir, spack.store.layout.spec_file_name
+ orig_node.prefix,
+ spack.store.STORE.layout.metadata_dir,
+ spack.store.STORE.layout.spec_file_name,
)
assert os.path.exists(orig_specfile_path)
assert not filecmp.cmp(orig_specfile_path, specfile_path, shallow=False)
@@ -128,7 +134,7 @@ def test_uninstall_rewired_spec(mock_fetch, install_mockery, transitive):
spliced_spec = spec.splice(dep, transitive=transitive)
spack.rewiring.rewire(spliced_spec)
spliced_spec.package.do_uninstall()
- assert len(spack.store.db.query(spliced_spec)) == 0
+ assert len(spack.store.STORE.db.query(spliced_spec)) == 0
assert not os.path.exists(spliced_spec.prefix)
diff --git a/lib/spack/spack/test/sbang.py b/lib/spack/spack/test/sbang.py
index cd380fd35d..a1a37ed415 100644
--- a/lib/spack/spack/test/sbang.py
+++ b/lib/spack/spack/test/sbang.py
@@ -53,13 +53,13 @@ php_in_text = ("line\n") * 100 + "php\n" + ("line\n" * 100)
php_line_patched = "<?php #!/this/" + ("x" * too_long) + "/is/php\n"
php_line_patched2 = "?>\n"
-sbang_line = "#!/bin/sh %s/bin/sbang\n" % spack.store.store.unpadded_root
+sbang_line = "#!/bin/sh %s/bin/sbang\n" % spack.store.STORE.unpadded_root
last_line = "last!\n"
@pytest.fixture # type: ignore[no-redef]
def sbang_line():
- yield "#!/bin/sh %s/bin/sbang\n" % spack.store.layout.root
+ yield "#!/bin/sh %s/bin/sbang\n" % spack.store.STORE.layout.root
class ScriptDirectory:
@@ -309,7 +309,7 @@ all:
def check_sbang_installation(group=False):
sbang_path = sbang.sbang_install_path()
sbang_bin_dir = os.path.dirname(sbang_path)
- assert sbang_path.startswith(spack.store.store.unpadded_root)
+ assert sbang_path.startswith(spack.store.STORE.unpadded_root)
assert os.path.exists(sbang_path)
assert fs.is_exe(sbang_path)
@@ -333,7 +333,7 @@ def run_test_install_sbang(group):
sbang_path = sbang.sbang_install_path()
sbang_bin_dir = os.path.dirname(sbang_path)
- assert sbang_path.startswith(spack.store.store.unpadded_root)
+ assert sbang_path.startswith(spack.store.STORE.unpadded_root)
assert not os.path.exists(sbang_bin_dir)
sbang.install_sbang()
diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py
index 5c080e56c3..02ddc360f0 100644
--- a/lib/spack/spack/test/spec_semantics.py
+++ b/lib/spack/spack/test/spec_semantics.py
@@ -670,7 +670,7 @@ class TestSpecSemantics:
other_segments = [
("{spack_root}", spack.paths.spack_root),
- ("{spack_install}", spack.store.layout.root),
+ ("{spack_install}", spack.store.STORE.layout.root),
]
def depify(depname, fmt_str, sigil):
diff --git a/lib/spack/spack/test/spec_syntax.py b/lib/spack/spack/test/spec_syntax.py
index b026bf0101..4a55752fdd 100644
--- a/lib/spack/spack/test/spec_syntax.py
+++ b/lib/spack/spack/test/spec_syntax.py
@@ -730,8 +730,8 @@ def test_ambiguous_hash(mutable_database, default_mock_concretization, config):
x2 = x1.copy()
x1._hash = "xyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
x2._hash = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
- mutable_database.add(x1, spack.store.layout)
- mutable_database.add(x2, spack.store.layout)
+ mutable_database.add(x1, spack.store.STORE.layout)
+ mutable_database.add(x2, spack.store.STORE.layout)
# ambiguity in first hash character
with pytest.raises(spack.spec.AmbiguousHashError):
diff --git a/lib/spack/spack/test/verification.py b/lib/spack/spack/test/verification.py
index d23a430ab8..1ead7880ea 100644
--- a/lib/spack/spack/test/verification.py
+++ b/lib/spack/spack/test/verification.py
@@ -174,7 +174,9 @@ def test_check_prefix_manifest(tmpdir):
assert results.errors[malware] == ["added"]
manifest_file = os.path.join(
- spec.prefix, spack.store.layout.metadata_dir, spack.store.layout.manifest_file_name
+ spec.prefix,
+ spack.store.STORE.layout.metadata_dir,
+ spack.store.STORE.layout.manifest_file_name,
)
with open(manifest_file, "w") as f:
f.write("{This) string is not proper json")
@@ -189,7 +191,7 @@ def test_single_file_verification(tmpdir):
# to which it belongs
filedir = os.path.join(str(tmpdir), "a", "b", "c", "d")
filepath = os.path.join(filedir, "file")
- metadir = os.path.join(str(tmpdir), spack.store.layout.metadata_dir)
+ metadir = os.path.join(str(tmpdir), spack.store.STORE.layout.metadata_dir)
fs.mkdirp(filedir)
fs.mkdirp(metadir)
@@ -199,7 +201,7 @@ def test_single_file_verification(tmpdir):
data = spack.verify.create_manifest_entry(filepath)
- manifest_file = os.path.join(metadir, spack.store.layout.manifest_file_name)
+ manifest_file = os.path.join(metadir, spack.store.STORE.layout.manifest_file_name)
with open(manifest_file, "w") as f:
sjson.dump({filepath: data}, f)
diff --git a/lib/spack/spack/verify.py b/lib/spack/spack/verify.py
index 6abd1c9f66..01ca96fc7a 100644
--- a/lib/spack/spack/verify.py
+++ b/lib/spack/spack/verify.py
@@ -50,7 +50,9 @@ def create_manifest_entry(path: str) -> Dict[str, Any]:
def write_manifest(spec):
manifest_file = os.path.join(
- spec.prefix, spack.store.layout.metadata_dir, spack.store.layout.manifest_file_name
+ spec.prefix,
+ spack.store.STORE.layout.metadata_dir,
+ spack.store.STORE.layout.manifest_file_name,
)
if not os.path.exists(manifest_file):
@@ -107,14 +109,14 @@ def check_file_manifest(filename):
dirname = os.path.dirname(filename)
results = VerificationResults()
- while spack.store.layout.metadata_dir not in os.listdir(dirname):
+ while spack.store.STORE.layout.metadata_dir not in os.listdir(dirname):
if dirname == os.path.sep:
results.add_error(filename, "not owned by any package")
return results
dirname = os.path.dirname(dirname)
manifest_file = os.path.join(
- dirname, spack.store.layout.metadata_dir, spack.store.layout.manifest_file_name
+ dirname, spack.store.STORE.layout.metadata_dir, spack.store.STORE.layout.manifest_file_name
)
if not os.path.exists(manifest_file):
@@ -140,7 +142,7 @@ def check_spec_manifest(spec):
results = VerificationResults()
manifest_file = os.path.join(
- prefix, spack.store.layout.metadata_dir, spack.store.layout.manifest_file_name
+ prefix, spack.store.STORE.layout.metadata_dir, spack.store.STORE.layout.manifest_file_name
)
if not os.path.exists(manifest_file):
diff --git a/var/spack/repos/builtin.mock/packages/old-sbang/package.py b/var/spack/repos/builtin.mock/packages/old-sbang/package.py
index c82696460d..2f7e8505b0 100644
--- a/var/spack/repos/builtin.mock/packages/old-sbang/package.py
+++ b/var/spack/repos/builtin.mock/packages/old-sbang/package.py
@@ -30,7 +30,7 @@ class OldSbang(Package):
{1}
""".format(
- spack.store.unpadded_root, prefix.bin
+ spack.store.STORE.unpadded_root, prefix.bin
)
with open("%s/sbang-style-1.sh" % self.prefix.bin, "w") as f:
f.write(sbang_style_1)