Rework path access strategy
This commit is contained in:
parent
3f2e77e5fa
commit
490b5eef7c
@ -77,7 +77,7 @@ config:
|
|||||||
|
|
||||||
|
|
||||||
## Directory where spack managed environments are created and stored
|
## Directory where spack managed environments are created and stored
|
||||||
environments_root: $spack/var/spack/environments
|
# environments_root: $spack/var/spack/environments
|
||||||
|
|
||||||
|
|
||||||
# Cache directory for miscellaneous files, like the package index.
|
# Cache directory for miscellaneous files, like the package index.
|
||||||
|
@ -62,11 +62,8 @@
|
|||||||
_active_environment = None
|
_active_environment = None
|
||||||
|
|
||||||
|
|
||||||
#: path where environments are stored in the spack tree
|
#: default path where environments are stored in the spack tree
|
||||||
# circular dependency to use canonicalize_path but we want to ignore an active env anyways
|
env_path = os.path.join(spack.paths.var_path, "environments")
|
||||||
# env_path = spack.config.get(os.path.expandvars(os.path.expanduser("config:environments_root")))
|
|
||||||
def env_path():
|
|
||||||
return spack.util.path.canonicalize_path(spack.config.get("config:environments_root"), False)
|
|
||||||
|
|
||||||
|
|
||||||
#: Name of the input yaml file for an environment
|
#: Name of the input yaml file for an environment
|
||||||
@ -80,6 +77,14 @@ def env_path():
|
|||||||
#: Name of the directory where environments store repos, logs, views
|
#: Name of the directory where environments store repos, logs, views
|
||||||
env_subdir_name = ".spack-env"
|
env_subdir_name = ".spack-env"
|
||||||
|
|
||||||
|
def env_root_path():
|
||||||
|
"""Override default root path if the user specified it"""
|
||||||
|
config_path = spack.config.get("config:environments_root", default = None)
|
||||||
|
if config_path:
|
||||||
|
return config_path
|
||||||
|
else:
|
||||||
|
return env_path
|
||||||
|
|
||||||
|
|
||||||
def default_manifest_yaml():
|
def default_manifest_yaml():
|
||||||
"""default spack.yaml file to put in new environments"""
|
"""default spack.yaml file to put in new environments"""
|
||||||
@ -208,7 +213,7 @@ def active_environment():
|
|||||||
|
|
||||||
def _root(name):
|
def _root(name):
|
||||||
"""Non-validating version of root(), to be used internally."""
|
"""Non-validating version of root(), to be used internally."""
|
||||||
return os.path.join(env_path(), name)
|
return os.path.join(env_root_path(), name)
|
||||||
|
|
||||||
|
|
||||||
def root(name):
|
def root(name):
|
||||||
@ -260,10 +265,10 @@ def all_environment_names():
|
|||||||
"""List the names of environments that currently exist."""
|
"""List the names of environments that currently exist."""
|
||||||
# just return empty if the env path does not exist. A read-only
|
# just return empty if the env path does not exist. A read-only
|
||||||
# operation like list should not try to create a directory.
|
# operation like list should not try to create a directory.
|
||||||
if not os.path.exists(env_path()):
|
if not os.path.exists(env_root_path()):
|
||||||
return []
|
return []
|
||||||
|
|
||||||
candidates = sorted(os.listdir(env_path()))
|
candidates = sorted(os.listdir(env_root_path()))
|
||||||
names = []
|
names = []
|
||||||
for candidate in candidates:
|
for candidate in candidates:
|
||||||
yaml_path = os.path.join(_root(candidate), manifest_name)
|
yaml_path = os.path.join(_root(candidate), manifest_name)
|
||||||
@ -845,7 +850,7 @@ def clear(self, re_read=False):
|
|||||||
@property
|
@property
|
||||||
def internal(self):
|
def internal(self):
|
||||||
"""Whether this environment is managed by Spack."""
|
"""Whether this environment is managed by Spack."""
|
||||||
return self.path.startswith(env_path())
|
return self.path.startswith(env_root_path())
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
|
@ -1493,13 +1493,11 @@ def get_rev():
|
|||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def mutable_mock_env_path(tmpdir_factory):
|
def mutable_mock_env_path(tmpdir_factory):
|
||||||
"""Fixture for mocking the internal spack environments directory."""
|
"""Fixture for mocking the internal spack environments directory."""
|
||||||
saved_path_fun = ev.environment.env_path
|
saved_path = ev.environment.env_path
|
||||||
mock_path = tmpdir_factory.mktemp("mock-env-path")
|
mock_path = tmpdir_factory.mktemp("mock-env-path")
|
||||||
def mock_fun():
|
ev.environment.env_path = str(mock_path)
|
||||||
return str(mock_path)
|
|
||||||
ev.environment.env_path = mock_fun
|
|
||||||
yield mock_path
|
yield mock_path
|
||||||
ev.environment.env_path = saved_path_fun
|
ev.environment.env_path = saved_path
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
|
Loading…
Reference in New Issue
Block a user