OpenBLAS 0.3.21: w/o Fortran (#32398)
There is a new OpenBLAS release out that can be compiled w/o a Fortran compiler. macOS XCode developers, rejoice. Maybe at some point Spack becomes a package manager that can be used without using another package manager (to get gfortran) 🎉 phist: add conflict on reference netlib-lapack due to API change in lapack.h Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
This commit is contained in:
		| @@ -20,6 +20,7 @@ class Openblas(MakefilePackage): | ||||
|     libraries = ["libopenblas"] | ||||
| 
 | ||||
|     version("develop", branch="develop") | ||||
|     version("0.3.21", sha256="f36ba3d7a60e7c8bcc54cd9aaa9b1223dd42eaf02c811791c37e8ca707c241ca") | ||||
|     version("0.3.20", sha256="8495c9affc536253648e942908e88e097f2ec7753ede55aca52e5dead3029e3c") | ||||
|     version("0.3.19", sha256="947f51bfe50c2a0749304fbe373e00e7637600b0a47b78a51382aeb30ca08562") | ||||
|     version("0.3.18", sha256="1632c1e8cca62d8bed064b37747e331a1796fc46f688626337362bf0d16aeadb") | ||||
| @@ -48,6 +49,13 @@ class Openblas(MakefilePackage): | ||||
|     version("0.2.16", sha256="766f350d0a4be614812d535cead8c816fc3ad3b9afcd93167ea5e4df9d61869b") | ||||
|     version("0.2.15", sha256="73c40ace5978282224e5e122a41c8388c5a19e65a6f2329c2b7c0b61bacc9044") | ||||
| 
 | ||||
|     variant( | ||||
|         "fortran", | ||||
|         default="True", | ||||
|         when="@0.3.21:", | ||||
|         description="w/o a Fortran compiler, OpenBLAS will build an f2c-converted LAPACK", | ||||
|     ) | ||||
| 
 | ||||
|     variant("ilp64", default=False, description="Force 64-bit Fortran native integers") | ||||
|     variant("pic", default=True, description="Build position independent code") | ||||
|     variant("shared", default=True, description="Build shared libraries") | ||||
| @@ -208,7 +216,10 @@ def check_compilers(self): | ||||
|         # As of 06/2016 there is no mechanism to specify that packages which | ||||
|         # depends on Blas/Lapack need C or/and Fortran symbols. For now | ||||
|         # require both. | ||||
|         if self.compiler.fc is None: | ||||
|         # As of 08/2022 (0.3.21), we can build purely with a C compiler using | ||||
|         # a f2c translated LAPACK version | ||||
|         #   https://github.com/xianyi/OpenBLAS/releases/tag/v0.3.21 | ||||
|         if self.compiler.fc is None and "~fortran" not in self.spec: | ||||
|             raise InstallError("OpenBLAS requires both C and Fortran compilers!") | ||||
| 
 | ||||
|     @staticmethod | ||||
| @@ -313,10 +324,9 @@ def make_defs(self): | ||||
|         # When mixing compilers make sure that | ||||
|         # $SPACK_ROOT/lib/spack/env/<compiler> have symlinks with reasonable | ||||
|         # names and hack them inside lib/spack/spack/compilers/<compiler>.py | ||||
|         make_defs = [ | ||||
|             "CC={0}".format(spack_cc), | ||||
|             "FC={0}".format(spack_fc), | ||||
|         ] | ||||
|         make_defs = ["CC={0}".format(spack_cc)] | ||||
|         if "~fortran" not in self.spec: | ||||
|             make_defs += ["FC={0}".format(spack_fc)] | ||||
| 
 | ||||
|         # force OpenBLAS to use externally defined parallel build | ||||
|         if self.spec.version < Version("0.3"): | ||||
| @@ -327,14 +337,15 @@ def make_defs(self): | ||||
|         # Add target and architecture flags | ||||
|         make_defs += self._microarch_target_args() | ||||
| 
 | ||||
|         # Fortran-free compilation | ||||
|         if "~fortran" in self.spec: | ||||
|             make_defs += ["NOFORTRAN=1"] | ||||
| 
 | ||||
|         if "~shared" in self.spec: | ||||
|             if "+pic" in self.spec: | ||||
|                 make_defs.extend( | ||||
|                     [ | ||||
|                         "CFLAGS={0}".format(self.compiler.cc_pic_flag), | ||||
|                         "FFLAGS={0}".format(self.compiler.f77_pic_flag), | ||||
|                     ] | ||||
|                 ) | ||||
|                 make_defs.append("CFLAGS={0}".format(self.compiler.cc_pic_flag)) | ||||
|                 if "~fortran" not in self.spec: | ||||
|                     make_defs.append("FFLAGS={0}".format(self.compiler.f77_pic_flag)) | ||||
|             make_defs += ["NO_SHARED=1"] | ||||
|         # fix missing _dggsvd_ and _sggsvd_ | ||||
|         if self.spec.satisfies("@0.2.16"): | ||||
|   | ||||
| @@ -189,6 +189,14 @@ class Phist(CMakePackage): | ||||
|     # and actual argument at (2) (scalar and rank-1) | ||||
|     conflicts("%gcc@10:", when="@:1.9.0") | ||||
| 
 | ||||
|     # reference lapack 3.9.1 (included in openblas 0.3.21) changed their lapack.h API | ||||
|     # to include trailing string lengths arguments in functions that have | ||||
|     # single-character strings as args. phist should be using the relevant | ||||
|     # LAPACK_function(...) macro's instead. | ||||
|     # https://bitbucket.org/essex/phist/issues/245/does-not-compile-with-reference-lapack-391 | ||||
|     conflicts("^openblas@0.3.21:") | ||||
|     conflicts("^netlib-lapack@3.9.1:") | ||||
| 
 | ||||
|     # the phist repo came with it's own FindMPI.cmake before, which may cause some other | ||||
|     # MPI installation to be used than the one spack wants. | ||||
|     def patch(self): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Axel Huebl
					Axel Huebl