compiler.py: fix early return (#43898)
This commit is contained in:
parent
859745f1a9
commit
3e6e9829da
2 changed files with 18 additions and 7 deletions
|
@ -20,6 +20,7 @@
|
||||||
|
|
||||||
import spack.compilers
|
import spack.compilers
|
||||||
import spack.error
|
import spack.error
|
||||||
|
import spack.schema.environment
|
||||||
import spack.spec
|
import spack.spec
|
||||||
import spack.util.executable
|
import spack.util.executable
|
||||||
import spack.util.libc
|
import spack.util.libc
|
||||||
|
@ -683,8 +684,8 @@ def __str__(self):
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def compiler_environment(self):
|
def compiler_environment(self):
|
||||||
# yield immediately if no modules
|
# Avoid modifying os.environ if possible.
|
||||||
if not self.modules:
|
if not self.modules and not self.environment:
|
||||||
yield
|
yield
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -701,13 +702,9 @@ def compiler_environment(self):
|
||||||
spack.util.module_cmd.load_module(module)
|
spack.util.module_cmd.load_module(module)
|
||||||
|
|
||||||
# apply other compiler environment changes
|
# apply other compiler environment changes
|
||||||
env = spack.util.environment.EnvironmentModifications()
|
spack.schema.environment.parse(self.environment).apply_modifications()
|
||||||
env.extend(spack.schema.environment.parse(self.environment))
|
|
||||||
env.apply_modifications()
|
|
||||||
|
|
||||||
yield
|
yield
|
||||||
except BaseException:
|
|
||||||
raise
|
|
||||||
finally:
|
finally:
|
||||||
# Restore environment regardless of whether inner code succeeded
|
# Restore environment regardless of whether inner code succeeded
|
||||||
os.environ.clear()
|
os.environ.clear()
|
||||||
|
|
|
@ -943,3 +943,17 @@ def test_detection_requires_c_compiler(detected_versions, expected_length):
|
||||||
"""
|
"""
|
||||||
result = spack.compilers.make_compiler_list(detected_versions)
|
result = spack.compilers.make_compiler_list(detected_versions)
|
||||||
assert len(result) == expected_length
|
assert len(result) == expected_length
|
||||||
|
|
||||||
|
|
||||||
|
def test_compiler_environment(working_env):
|
||||||
|
"""Test whether environment modifications from compilers are applied in compiler_environment"""
|
||||||
|
os.environ.pop("TEST", None)
|
||||||
|
compiler = Compiler(
|
||||||
|
"gcc@=13.2.0",
|
||||||
|
operating_system="ubuntu20.04",
|
||||||
|
target="x86_64",
|
||||||
|
paths=["/test/bin/gcc", "/test/bin/g++"],
|
||||||
|
environment={"set": {"TEST": "yes"}},
|
||||||
|
)
|
||||||
|
with compiler.compiler_environment():
|
||||||
|
assert os.environ["TEST"] == "yes"
|
||||||
|
|
Loading…
Reference in a new issue