From 8e53b0b00ca3d1fe00104846eb31f0bb53866d9e Mon Sep 17 00:00:00 2001 From: rafael Date: Thu, 16 Sep 2021 11:19:59 +0200 Subject: [PATCH 1/2] always set spack env --- reframe/core/buildsystems.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/reframe/core/buildsystems.py b/reframe/core/buildsystems.py index e4100902fe..5c02a106c8 100644 --- a/reframe/core/buildsystems.py +++ b/reframe/core/buildsystems.py @@ -845,10 +845,13 @@ class Spack(BuildSystem): #: :default: ``[]`` install_opts = variable(typ.List[str], value=[]) + def __init__(self): + self._rfm_spack_env = False + def emit_build_commands(self, environ): ret = self._env_activate_cmds() - if not self.environment: + if self._rfm_spack_env: install_tree = self.install_tree or 'opt/spack' ret.append(f'spack config add ' f'"config:install_tree:root:{install_tree}"') @@ -866,13 +869,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._rfm_spack_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): From 5944c20eb3759176d3e8ef654a7363f88c99b232 Mon Sep 17 00:00:00 2001 From: Vasileios Karakasis Date: Thu, 16 Sep 2021 22:33:40 +0200 Subject: [PATCH 2/2] Fine tune PR --- reframe/core/buildsystems.py | 7 ++++--- unittests/test_buildsystems.py | 3 +++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/reframe/core/buildsystems.py b/reframe/core/buildsystems.py index 5c02a106c8..19e4e77a5e 100644 --- a/reframe/core/buildsystems.py +++ b/reframe/core/buildsystems.py @@ -846,12 +846,13 @@ class Spack(BuildSystem): install_opts = variable(typ.List[str], value=[]) def __init__(self): - self._rfm_spack_env = False + # 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 self._rfm_spack_env: + 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}"') @@ -872,7 +873,7 @@ def _env_activate_cmds(self): if not self.environment: self.environment = 'rfm_spack_env' cmds.append(f'spack env create -d {self.environment}') - self._rfm_spack_env = True + self._auto_env = True cmds.append(f'spack env activate -V -d {self.environment}') return cmds 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']