diff --git a/reframe/core/buildsystems.py b/reframe/core/buildsystems.py index e4100902fe..19e4e77a5e 100644 --- a/reframe/core/buildsystems.py +++ b/reframe/core/buildsystems.py @@ -845,10 +845,14 @@ class Spack(BuildSystem): #: :default: ``[]`` install_opts = variable(typ.List[str], value=[]) + def __init__(self): + # Set to True if the environment was auto-generated + self._auto_env = False + def emit_build_commands(self, environ): ret = self._env_activate_cmds() - if not self.environment: + if self._auto_env: install_tree = self.install_tree or 'opt/spack' ret.append(f'spack config add ' f'"config:install_tree:root:{install_tree}"') @@ -866,13 +870,12 @@ def emit_build_commands(self, environ): def _env_activate_cmds(self): cmds = ['. "$(spack location --spack-root)/share/spack/setup-env.sh"'] - if self.environment: - environment = self.environment - else: - environment = 'rfm_spack_env' - cmds.append(f'spack env create -d {environment}') + if not self.environment: + self.environment = 'rfm_spack_env' + cmds.append(f'spack env create -d {self.environment}') + self._auto_env = True - cmds.append(f'spack env activate -V -d {environment}') + cmds.append(f'spack env activate -V -d {self.environment}') return cmds def prepare_cmds(self): diff --git a/unittests/test_buildsystems.py b/unittests/test_buildsystems.py index 16b7abb5ba..2652abee22 100644 --- a/unittests/test_buildsystems.py +++ b/unittests/test_buildsystems.py @@ -289,6 +289,9 @@ def test_spack_no_env(environ, tmp_path): f'spack install' ] + assert build_system.environment == 'rfm_spack_env' + + def test_easybuild(environ, tmp_path): build_system = bs.EasyBuild() build_system.easyconfigs = ['ec1.eb', 'ec2.eb']