diff --git a/var/spack/repos/builtin/packages/acfl/package.py b/var/spack/repos/builtin/packages/acfl/package.py index f123292c998..62e4d06945a 100644 --- a/var/spack/repos/builtin/packages/acfl/package.py +++ b/var/spack/repos/builtin/packages/acfl/package.py @@ -398,28 +398,13 @@ def _standard_flag(self, *, language, standard): } return flags[language][standard] - @property - def cc(self): - msg = "cannot retrieve C compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("c", None) + def _cc_path(self): return join_path(get_acfl_prefix(self.spec), "bin", "armclang") - @property - def cxx(self): - msg = "cannot retrieve C++ compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("cxx", None) + def _cxx_path(self): return join_path(get_acfl_prefix(self.spec), "bin", "armclang++") - @property - def fortran(self): - msg = "cannot retrieve Fortran compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("fortran", None) + def _fortran_path(self): return join_path(get_acfl_prefix(self.spec), "bin", "armflang") @property diff --git a/var/spack/repos/builtin/packages/cce/package.py b/var/spack/repos/builtin/packages/cce/package.py index 86105b8ce95..31f1fc240ac 100644 --- a/var/spack/repos/builtin/packages/cce/package.py +++ b/var/spack/repos/builtin/packages/cce/package.py @@ -24,12 +24,33 @@ class Cce(Package, CompilerPackage): debug_flags = ["-g", "-G0", "-G1", "-G2", "-Gfast"] - liink_paths = { + link_paths = { "c": os.path.join("cce", "craycc"), "cxx": os.path.join("cce", "case-insensitive", "crayCC"), "fortran": os.path.join("cce", "crayftn"), } + required_libs = [ + "libalign", + "libcrayacc_amdgpu", + "libcrayacc_x86_64", + "libcraymath", + "libcraymp", + "libcrayompd", + "libcsup", + "libfi", + "libf", + "libmodules64", + "libmodules", + "libopenacc_amdgpu", + "libopenacc", + "libopenacc_x86_64", + "libpgas-shmem", + "libplinterface", + "libquadmath", + "libu", + ] + maintainers("becker33") version("16.0.0") diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index dcdc3fecb2c..40876f0345f 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -657,38 +657,20 @@ def validate_detected_spec(cls, spec, extra_attributes): msg = "{0} not in {1}" assert key in compilers, msg.format(key, spec) - @property - def cc(self): - msg = "cannot retrieve C compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("c", None) - result = None + def _cc_path(self): if self.spec.satisfies("languages=c"): - result = str(self.spec.prefix.bin.gcc) - return result + return str(self.spec.prefix.bin.gcc) + return None - @property - def cxx(self): - msg = "cannot retrieve C++ compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("cxx", None) - result = None + def _cxx_path(self): if self.spec.satisfies("languages=c++"): - result = os.path.join(self.spec.prefix.bin, "g++") - return result + return os.path.join(self.spec.prefix.bin, "g++") + return None - @property - def fortran(self): - msg = "cannot retrieve Fortran compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("fortran", None) - result = None + def _fortran_path(self): if self.spec.satisfies("languages=fortran"): - result = str(self.spec.prefix.bin.gfortran) - return result + return str(self.spec.prefix.bin.gfortran) + return None def url_for_version(self, version): # This function will be called when trying to fetch from url, before diff --git a/var/spack/repos/builtin/packages/intel-oneapi-compilers-classic/package.py b/var/spack/repos/builtin/packages/intel-oneapi-compilers-classic/package.py index 60727f3ace4..f6d61864f34 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-compilers-classic/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-compilers-classic/package.py @@ -109,28 +109,13 @@ def symlink_dir(self, src, dest): else: os.symlink(src_path, dest_path) - @property - def cc(self): - msg = "cannot retrieve C compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("c", None) + def _cc_path(self): return str(self.prefix.bin.icc) - @property - def cxx(self): - msg = "cannot retrieve C++ compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("cxx", None) + def _cxx_path(self): return str(self.prefix.bin.icpc) - @property - def fortran(self): - msg = "cannot retrieve Fortran compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("fortran", None) + def _fortran_path(self): return str(self.prefix.bin.ifort) def archspec_name(self): diff --git a/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py b/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py index 3b2e49488c8..7d419dafb5e 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py @@ -670,26 +670,11 @@ def runtime_constraints(cls, *, spec, pkg): when=f"^[deptypes=build] {spec.name}@{spec.versions}", ) - @property - def cc(self): - msg = "cannot retrieve C compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("c", None) + def _cc_path(self): return str(self._llvm_bin.icx) - @property - def cxx(self): - msg = "cannot retrieve C++ compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("cxx", None) + def _cxx_path(self): return str(self._llvm_bin.icpx) - @property - def fortran(self): - msg = "cannot retrieve Fortran compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("fortran", None) + def _fortran_path(self): return str(self._llvm_bin.ifx) diff --git a/var/spack/repos/builtin/packages/llvm-amdgpu/package.py b/var/spack/repos/builtin/packages/llvm-amdgpu/package.py index 9e15f045c67..9c15138c3c2 100644 --- a/var/spack/repos/builtin/packages/llvm-amdgpu/package.py +++ b/var/spack/repos/builtin/packages/llvm-amdgpu/package.py @@ -350,26 +350,11 @@ def setup_dependent_build_environment(self, env, dependent_spec): env.prepend_path("LD_LIBRARY_PATH", root) env.prune_duplicate_paths("LD_LIBRARY_PATH") - @property - def cc(self): - msg = "cannot retrieve C compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("c", None) + def _cc_path(self): return os.path.join(self.spec.prefix.bin, "amdclang") - @property - def cxx(self): - msg = "cannot retrieve C++ compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("cxx", None) + def _cxx_path(self): return os.path.join(self.spec.prefix.bin, "amdclang++") - @property - def fc(self): - msg = "cannot retrieve Fortran compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("fc", None) + def _fortran_path(self): return os.path.join(self.spec.prefix.bin, "amdflang") diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 68e7ff1465d..d06f6e03487 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -736,49 +736,20 @@ def validate_detected_spec(cls, spec, extra_attributes): msg = "{0} compiler not found for {1}" assert key in compilers, msg.format(key, spec) - @property - def cc(self): - msg = "cannot retrieve C compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("c", None) - result = None + def _cc_path(self): if self.spec.satisfies("+clang"): - result = os.path.join(self.spec.prefix.bin, "clang") - return result + return os.path.join(self.spec.prefix.bin, "clang") + return None - @property - def cxx(self): - msg = "cannot retrieve C++ compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("cxx", None) - result = None + def _cxx_path(self): if self.spec.satisfies("+clang"): - result = os.path.join(self.spec.prefix.bin, "clang++") - return result + return os.path.join(self.spec.prefix.bin, "clang++") + return None - @property - def fc(self): - msg = "cannot retrieve Fortran compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("fc", None) - result = None + def _fortran_path(self): if self.spec.satisfies("+flang"): - result = os.path.join(self.spec.prefix.bin, "flang") - return result - - @property - def f77(self): - msg = "cannot retrieve Fortran 77 compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("f77", None) - result = None - if self.spec.satisfies("+flang"): - result = os.path.join(self.spec.prefix.bin, "flang") - return result + return os.path.join(self.spec.prefix.bin, "flang") + return None debug_flags = [ "-gcodeview", diff --git a/var/spack/repos/builtin/packages/msvc/package.py b/var/spack/repos/builtin/packages/msvc/package.py index 0f5cd750ef8..d70455462fc 100644 --- a/var/spack/repos/builtin/packages/msvc/package.py +++ b/var/spack/repos/builtin/packages/msvc/package.py @@ -63,20 +63,6 @@ def determine_variants(cls, exes, version_str): extras["compilers"]["c"] = extras["compilers"]["cxx"] return spec, extras - @property - def cc(self): - if self.spec.external: - return self.spec.extra_attributes["compilers"]["c"] - msg = "cannot retrieve C compiler [spec is not concrete]" - assert self.spec.concrete, msg - - @property - def cxx(self): - if self.spec.external: - return self.spec.extra_attributes["compilers"]["cxx"] - msg = "cannot retrieve C++ compiler [spec is not concrete]" - assert self.spec.concrete, msg - def setup_dependent_build_environment(self, env, dependent_spec): self.init_msvc() # Set the build environment variables for spack. Just using diff --git a/var/spack/repos/builtin/packages/nag/package.py b/var/spack/repos/builtin/packages/nag/package.py index cca7669e363..264007e08e3 100644 --- a/var/spack/repos/builtin/packages/nag/package.py +++ b/var/spack/repos/builtin/packages/nag/package.py @@ -115,10 +115,5 @@ def setup_run_environment(self, env): openmp_flag = "-openmp" - @property - def fortran(self): - msg = "cannot retrieve Fortran compiler [spec is not concrete]" - assert self.spec.concrete, msg - if self.spec.external: - return self.spec.extra_attributes["compilers"].get("fortran", None) + def _fortran_path(self): return str(self.spec.prefix.bin.nagfor) diff --git a/var/spack/repos/builtin/packages/xl/package.py b/var/spack/repos/builtin/packages/xl/package.py index c63bcd54fdb..6528946e364 100644 --- a/var/spack/repos/builtin/packages/xl/package.py +++ b/var/spack/repos/builtin/packages/xl/package.py @@ -88,24 +88,3 @@ def determine_variants(cls, exes, version_str): if _compilers: results.append(("~r", {"compilers": _compilers})) return results - - @property - def cc(self): - if self.spec.external: - return self.spec.extra_attributes["compilers"]["c"] - msg = "cannot retrieve C compiler [spec is not concrete]" - assert self.spec.concrete, msg - - @property - def cxx(self): - if self.spec.external: - return self.spec.extra_attributes["compilers"]["cxx"] - msg = "cannot retrieve C++ compiler [spec is not concrete]" - assert self.spec.concrete, msg - - @property - def fortran(self): - if self.spec.external: - return self.spec.extra_attributes["compilers"]["fortran"] - msg = "cannot retrieve Fortran compiler [spec is not concrete]" - assert self.spec.concrete, msg