llvm: don't detect +flang multiple times (#49876)

fixes #49831

Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
This commit is contained in:
Massimiliano Culpo 2025-04-08 09:12:34 +02:00 committed by GitHub
parent 357089f347
commit 9e6e478ccf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 34 additions and 6 deletions

View File

@ -68,6 +68,34 @@ paths:
cxx: ".*/bin/clang[+][+]"
fortran: ".*/bin/flang"
# flang and flang-new in the same directory
- layout:
- executables:
- "bin/clang"
- "bin/clang++"
script: |
echo "clang version 20.1.0-rc1 (https://github.com/llvm/llvm-project af7f483a9d801252247b6c72e3763c1f55c5a506)"
echo "Target: x86_64-unknown-linux-gnu"
echo "Thread model: posix"
echo "InstalledDir: /tmp/clang/LLVM-20.1.0-rc1-Linux-X64/bin"
- executables:
- "bin/flang"
- "bin/flang-new"
script: |
echo "flang version 20.1.0-rc1 (https://github.com/llvm/llvm-project af7f483a9d801252247b6c72e3763c1f55c5a506)"
echo "Target: x86_64-unknown-linux-gnu"
echo "Thread model: posix"
echo "InstalledDir: /tmp/clang/LLVM-20.1.0-rc1-Linux-X64/bin"
platforms: ["darwin", "linux"]
results:
- spec: 'llvm@20.1.0 +flang+clang~lld~lldb'
extra_attributes:
compilers:
c: ".*/bin/clang"
cxx: ".*/bin/clang[+][+]"
fortran: ".*/bin/flang"
# `~` and other weird characters in the version string
- layout:
- executables:

View File

@ -801,7 +801,7 @@ def determine_version(cls, exe):
def determine_variants(cls, exes, version_str):
# Do not need to reuse more general logic from CompilerPackage
# because LLVM has kindly named compilers
variants, compilers = ["+clang"], {}
variants, compilers = {"+clang"}, {}
lld_found, lldb_found = False, False
for exe in sorted(exes, key=len):
name = os.path.basename(exe)
@ -809,18 +809,18 @@ def determine_variants(cls, exes, version_str):
compilers.setdefault("cxx", exe)
elif "clang" in name:
compilers.setdefault("c", exe)
elif "flang" in name:
variants.append("+flang")
elif "flang" in name and "fortran" not in compilers:
variants.add("+flang")
compilers.setdefault("fortran", exe)
elif "ld.lld" in name:
lld_found = True
elif "lldb" in name:
lldb_found = True
variants.append("+lld" if lld_found else "~lld")
variants.append("+lldb" if lldb_found else "~lldb")
variants.add("+lld" if lld_found else "~lld")
variants.add("+lldb" if lldb_found else "~lldb")
return "".join(variants), {"compilers": compilers}
return "".join(sorted(variants)), {"compilers": compilers}
@classmethod
def validate_detected_spec(cls, spec, extra_attributes):