handle use of an unconfigured compiler (#41213)

This commit is contained in:
Robert Cohn 2023-11-27 13:57:10 -05:00 committed by Massimiliano Culpo
parent 125085c580
commit 2d5ccd3068
2 changed files with 19 additions and 1 deletions

View file

@ -324,19 +324,29 @@ def set_compiler_environment_variables(pkg, env):
# ttyout, ttyerr, etc. # ttyout, ttyerr, etc.
link_dir = spack.paths.build_env_path link_dir = spack.paths.build_env_path
# Set SPACK compiler variables so that our wrapper knows what to call # Set SPACK compiler variables so that our wrapper knows what to
# call. If there is no compiler configured then use a default
# wrapper which will emit an error if it is used.
if compiler.cc: if compiler.cc:
env.set("SPACK_CC", compiler.cc) env.set("SPACK_CC", compiler.cc)
env.set("CC", os.path.join(link_dir, compiler.link_paths["cc"])) env.set("CC", os.path.join(link_dir, compiler.link_paths["cc"]))
else:
env.set("CC", os.path.join(link_dir, "cc"))
if compiler.cxx: if compiler.cxx:
env.set("SPACK_CXX", compiler.cxx) env.set("SPACK_CXX", compiler.cxx)
env.set("CXX", os.path.join(link_dir, compiler.link_paths["cxx"])) env.set("CXX", os.path.join(link_dir, compiler.link_paths["cxx"]))
else:
env.set("CC", os.path.join(link_dir, "c++"))
if compiler.f77: if compiler.f77:
env.set("SPACK_F77", compiler.f77) env.set("SPACK_F77", compiler.f77)
env.set("F77", os.path.join(link_dir, compiler.link_paths["f77"])) env.set("F77", os.path.join(link_dir, compiler.link_paths["f77"]))
else:
env.set("F77", os.path.join(link_dir, "f77"))
if compiler.fc: if compiler.fc:
env.set("SPACK_FC", compiler.fc) env.set("SPACK_FC", compiler.fc)
env.set("FC", os.path.join(link_dir, compiler.link_paths["fc"])) env.set("FC", os.path.join(link_dir, compiler.link_paths["fc"]))
else:
env.set("FC", os.path.join(link_dir, "fc"))
# Set SPACK compiler rpath flags so that our wrapper knows what to use # Set SPACK compiler rpath flags so that our wrapper knows what to use
env.set("SPACK_CC_RPATH_ARG", compiler.cc_rpath_arg) env.set("SPACK_CC_RPATH_ARG", compiler.cc_rpath_arg)

View file

@ -154,6 +154,14 @@ def add_compilers_to_config(compilers, scope=None, init_config=True):
""" """
compiler_config = get_compiler_config(scope, init_config) compiler_config = get_compiler_config(scope, init_config)
for compiler in compilers: for compiler in compilers:
if not compiler.cc:
tty.debug(f"{compiler.spec} does not have a C compiler")
if not compiler.cxx:
tty.debug(f"{compiler.spec} does not have a C++ compiler")
if not compiler.f77:
tty.debug(f"{compiler.spec} does not have a Fortran77 compiler")
if not compiler.fc:
tty.debug(f"{compiler.spec} does not have a Fortran compiler")
compiler_config.append(_to_dict(compiler)) compiler_config.append(_to_dict(compiler))
spack.config.set("compilers", compiler_config, scope=scope) spack.config.set("compilers", compiler_config, scope=scope)