Fix compilation on Cray (target: any) (#37011)
fixes #36628 Fix using compilers that declare "target: any" in their configuration. This should happen only on Cray with the module based programming environment.
This commit is contained in:
parent
5960d74dca
commit
d92c21ec97
2 changed files with 29 additions and 0 deletions
|
@ -968,6 +968,9 @@ def compiler_facts(self):
|
||||||
if compiler.operating_system:
|
if compiler.operating_system:
|
||||||
self.gen.fact(fn.compiler_os(compiler_id, compiler.operating_system))
|
self.gen.fact(fn.compiler_os(compiler_id, compiler.operating_system))
|
||||||
|
|
||||||
|
if compiler.target == "any":
|
||||||
|
compiler.target = None
|
||||||
|
|
||||||
if compiler.target is not None:
|
if compiler.target is not None:
|
||||||
self.gen.fact(fn.compiler_target(compiler_id, compiler.target))
|
self.gen.fact(fn.compiler_target(compiler_id, compiler.target))
|
||||||
|
|
||||||
|
|
|
@ -2150,3 +2150,29 @@ def test_compiler_with_custom_non_numeric_version(self, mock_executable):
|
||||||
spack.config.set("compilers", compiler_configuration)
|
spack.config.set("compilers", compiler_configuration)
|
||||||
s = spack.spec.Spec("a %gcc@foo").concretized()
|
s = spack.spec.Spec("a %gcc@foo").concretized()
|
||||||
assert s.compiler.version == ver("foo")
|
assert s.compiler.version == ver("foo")
|
||||||
|
|
||||||
|
@pytest.mark.regression("36628")
|
||||||
|
def test_concretization_with_compilers_supporting_target_any(self):
|
||||||
|
"""Tests that a compiler with 'target: any' can satisfy any target, and is a viable
|
||||||
|
candidate for concretization.
|
||||||
|
"""
|
||||||
|
compiler_configuration = [
|
||||||
|
{
|
||||||
|
"compiler": {
|
||||||
|
"spec": "gcc@12.1.0",
|
||||||
|
"paths": {
|
||||||
|
"cc": "/some/path/gcc",
|
||||||
|
"cxx": "/some/path/g++",
|
||||||
|
"f77": None,
|
||||||
|
"fc": None,
|
||||||
|
},
|
||||||
|
"operating_system": "debian6",
|
||||||
|
"target": "any",
|
||||||
|
"modules": [],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
with spack.config.override("compilers", compiler_configuration):
|
||||||
|
s = spack.spec.Spec("a").concretized()
|
||||||
|
assert s.satisfies("%gcc@12.1.0")
|
||||||
|
|
Loading…
Reference in a new issue