From 3d29e0d64139e11b0551eae8a25dd9f1232515e1 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Mon, 7 Mar 2022 11:58:39 -0700 Subject: Bug fixes for ESMF on macOS with apple-clang+gfortran, with gfortran-10+ in general, and on Cray (#29193) * Bugfix in var/spack/repos/builtin/packages/esmf/package.py * Bug fixes in var/spack/repos/builtin/packages/esmf/package.py to build ESMF on macOS with clang+gfortran and on cray * Add maintainer to var/spack/repos/builtin/packages/esmf/package.py * Fix style errors * Fix more style errors --- var/spack/repos/builtin/packages/esmf/package.py | 25 ++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'var') diff --git a/var/spack/repos/builtin/packages/esmf/package.py b/var/spack/repos/builtin/packages/esmf/package.py index a8aa78d0fe..ff9304e59d 100644 --- a/var/spack/repos/builtin/packages/esmf/package.py +++ b/var/spack/repos/builtin/packages/esmf/package.py @@ -18,6 +18,8 @@ class Esmf(MakefilePackage): homepage = "https://www.earthsystemcog.org/projects/esmf/" url = 'https://github.com/esmf-org/esmf/archive/ESMF_8_0_1.tar.gz' + maintainers = ['climbfuji'] + version('8.2.0', sha256='3693987aba2c8ae8af67a0e222bea4099a48afe09b8d3d334106f9d7fc311485') version('8.1.1', sha256='58c2e739356f21a1b32673aa17a713d3c4af9d45d572f4ba9168c357d586dc75') version('8.0.1', sha256='9172fb73f3fe95c8188d889ee72fdadb4f978b1d969e1d8e401e8d106def1d84') @@ -126,10 +128,14 @@ class Esmf(MakefilePackage): # C++ compilers are being used to build the ESMF library. if self.compiler.name == 'gcc': os.environ['ESMF_COMPILER'] = 'gfortran' + gfortran_major_version = int(spack.compiler.get_compiler_version_output( + self.compiler.fc, '-dumpversion').split('.')[0]) elif self.compiler.name == 'intel': os.environ['ESMF_COMPILER'] = 'intel' - elif self.compiler.name == 'clang': + elif self.compiler.name in ['clang', 'apple-clang']: os.environ['ESMF_COMPILER'] = 'gfortranclang' + gfortran_major_version = int(spack.compiler.get_compiler_version_output( + self.compiler.fc, '-dumpversion').split('.')[0]) elif self.compiler.name == 'nag': os.environ['ESMF_COMPILER'] = 'nag' elif self.compiler.name == 'pgi': @@ -154,9 +160,18 @@ class Esmf(MakefilePackage): # Build an optimized version of the library. os.environ['ESMF_BOPT'] = 'O' - if self.spec.satisfies('%gcc@10:'): + if self.compiler.name in ['gcc', 'clang', 'apple-clang'] and \ + gfortran_major_version >= 10: os.environ['ESMF_F90COMPILEOPTS'] = '-fallow-argument-mismatch' + ####### + # OS # + ####### + + # ESMF_OS must be set for Cray systems + if 'platform=cray' in self.spec: + os.environ['ESMF_OS'] = 'Unicos' + ####### # MPI # ####### @@ -276,3 +291,9 @@ class Esmf(MakefilePackage): def check(self): make('check', parallel=False) + + def setup_dependent_build_environment(self, env, dependent_spec): + env.set('ESMFMKFILE', os.path.join(self.prefix.lib, 'esmf.mk')) + + def setup_run_environment(self, env): + env.set('ESMFMKFILE', os.path.join(self.prefix.lib, 'esmf.mk')) -- cgit v1.2.3-70-g09d2