From 813762280081ef355bacf575a9cdbf4d049062dc Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Wed, 8 Feb 2023 05:55:58 -0700 Subject: [PATCH 01/10] Restrictions on newer package versions with Intel 18 --- var/spack/repos/builtin/packages/openblas/package.py | 5 +++++ var/spack/repos/builtin/packages/py-numpy/package.py | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index ce6f0de6248d55..2c5295892cfeb1 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -204,6 +204,11 @@ class Openblas(MakefilePackage): msg="FPCSR consistency only applies to multithreading", ) + # Intel 18 throws this error with 0.3.19 (and later?) + # >> 12986 ../libopenblas_haswell-r0.3.19.so: undefined reference to `xerbla_' + # >> 12987 make[1]: *** [../libopenblas_haswell-r0.3.19.so] Error 1 + conflicts("%intel@18", when="@0.3.19:") + conflicts("threads=pthreads", when="~locking", msg="Pthread support requires +locking") conflicts("threads=openmp", when="%apple-clang", msg="Apple's clang does not support OpenMP") conflicts( diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index 4f12b73e5dbcc3..19293595a11d78 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -153,6 +153,10 @@ class PyNumpy(PythonPackage): conflicts("%intel", when="@1.23.0:") conflicts("%oneapi", when="@1.23.0:") + # Intel 18 doesn't build 1.22.3 (and later?) on newer CPUs, + # because these want to apply CPU-specific optimizations. + conflicts("%intel@18", when="@1.22:") + def url_for_version(self, version): url = "https://files.pythonhosted.org/packages/source/n/numpy/numpy-{}.{}" if version >= Version("1.23"): From 06bbd9724451b6502828e04e6c2ffccb4f1a8b3b Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Thu, 9 Feb 2023 08:45:05 -0700 Subject: [PATCH 02/10] libiconv@1.16 doesn't build with Intel@18 --- var/spack/repos/builtin/packages/libiconv/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/libiconv/package.py b/var/spack/repos/builtin/packages/libiconv/package.py index d80be75d4dbe03..57da438bb0d0d7 100644 --- a/var/spack/repos/builtin/packages/libiconv/package.py +++ b/var/spack/repos/builtin/packages/libiconv/package.py @@ -32,6 +32,11 @@ class Libiconv(AutotoolsPackage, GNUMirrorPackage): conflicts("@1.14", when="%gcc@5:") + # Version 1.16 fails building with Intel 18 with + # iconv_no_i18n.o: In function `main': + # /path/to/spack-src/src/./iconv.c:1008: undefined reference to `libiconvlist' + conflicts("@1.16", when="%intel@18") + def configure_args(self): args = ["--enable-extra-encodings"] From 1a3537b5cfe8e2c553720f93043c75df44fe0817 Mon Sep 17 00:00:00 2001 From: Stephen Herbener Date: Thu, 9 Feb 2023 16:00:39 -0700 Subject: [PATCH 03/10] Added version statement for netcdf-c version 4.9.1 --- var/spack/repos/builtin/packages/netcdf-c/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/netcdf-c/package.py b/var/spack/repos/builtin/packages/netcdf-c/package.py index f003263b540481..6d9e598bcdd523 100644 --- a/var/spack/repos/builtin/packages/netcdf-c/package.py +++ b/var/spack/repos/builtin/packages/netcdf-c/package.py @@ -21,6 +21,7 @@ class NetcdfC(AutotoolsPackage): maintainers = ["skosukhin", "WardF"] version("main", branch="main") + version("4.9.1", sha256="4ee8d5f6b50a1eb4ad4c10f24531e36261fd1882410fb08435eb2ddfd49a0908") version("4.9.0", sha256="9f4cb864f3ab54adb75409984c6202323d2fc66c003e5308f3cdf224ed41c0a6") version("4.8.1", sha256="bc018cc30d5da402622bf76462480664c6668b55eb16ba205a0dfb8647161dd0") version("4.8.0", sha256="aff58f02b1c3e91dc68f989746f652fe51ff39e6270764e484920cb8db5ad092") From 79f2cb61ae7ea2588aacf889cc19dfc44c880cd1 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Wed, 8 Feb 2023 05:55:58 -0700 Subject: [PATCH 04/10] Fix conflict statement for libiconv --- var/spack/repos/builtin/packages/libiconv/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/libiconv/package.py b/var/spack/repos/builtin/packages/libiconv/package.py index 57da438bb0d0d7..8b91c9b3363495 100644 --- a/var/spack/repos/builtin/packages/libiconv/package.py +++ b/var/spack/repos/builtin/packages/libiconv/package.py @@ -32,10 +32,10 @@ class Libiconv(AutotoolsPackage, GNUMirrorPackage): conflicts("@1.14", when="%gcc@5:") - # Version 1.16 fails building with Intel 18 with + # All versions fail to build with Intel 18 with # iconv_no_i18n.o: In function `main': # /path/to/spack-src/src/./iconv.c:1008: undefined reference to `libiconvlist' - conflicts("@1.16", when="%intel@18") + conflicts("@1.14:", when="%intel@18") def configure_args(self): args = ["--enable-extra-encodings"] From f98228d3eb37b153c70fc8f3f5735e265749e9f4 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 10 Feb 2023 08:47:44 -0700 Subject: [PATCH 05/10] Fix CDO compile errors with Intel --- var/spack/repos/builtin/packages/cdo/package.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/var/spack/repos/builtin/packages/cdo/package.py b/var/spack/repos/builtin/packages/cdo/package.py index 5b1dfb094cfe83..d2a673e387eccb 100644 --- a/var/spack/repos/builtin/packages/cdo/package.py +++ b/var/spack/repos/builtin/packages/cdo/package.py @@ -278,6 +278,13 @@ def yes_or_prefix(spec_name): if self.spec.satisfies("@1.9:+hdf5^hdf5+mpi"): flags["CPPFLAGS"].append("-DOMPI_SKIP_MPICXX -DMPICH_SKIP_MPICXX") + # Workaround compiler issues + # https://github.com/NOAA-EMC/spack-stack/issues/468 + if self.spec.satisfies("%intel"): + #config_args.append("CFLAGS=-O1") + flags["CFLAGS"].append("-O1") + flags["CXXFLAGS"].append("-O1") + config_args.extend(["{0}={1}".format(var, " ".join(val)) for var, val in flags.items()]) return config_args From 7754d387014ae9c6abec1ef59b8c3c0c764889c9 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 10 Feb 2023 08:50:16 -0700 Subject: [PATCH 06/10] Restrict googletest versions for Intel 18 --- var/spack/repos/builtin/packages/googletest/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/googletest/package.py b/var/spack/repos/builtin/packages/googletest/package.py index 2b8a73ea67dd79..3e0bd6f17dc911 100644 --- a/var/spack/repos/builtin/packages/googletest/package.py +++ b/var/spack/repos/builtin/packages/googletest/package.py @@ -39,6 +39,8 @@ class Googletest(CMakePackage): conflicts("cxxstd=98", when="@1.9:") conflicts("cxxstd=11", when="@1.13:") + conflicts("%intel@18", when="@1.10:") + def cmake_args(self): spec = self.spec args = [ From 3001382532d90240daf5ea32018c4114182d105b Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Sun, 12 Feb 2023 20:46:04 -0700 Subject: [PATCH 07/10] Add byterange variant for netcdf-c --- var/spack/repos/builtin/packages/netcdf-c/package.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/var/spack/repos/builtin/packages/netcdf-c/package.py b/var/spack/repos/builtin/packages/netcdf-c/package.py index 6d9e598bcdd523..e7ee705ea7af35 100644 --- a/var/spack/repos/builtin/packages/netcdf-c/package.py +++ b/var/spack/repos/builtin/packages/netcdf-c/package.py @@ -80,6 +80,10 @@ class NetcdfC(AutotoolsPackage): variant("fsync", default=False, description="Enable fsync support") variant("zstd", default=True, description="Enable ZStandard compression", when="@4.9.0:") variant("optimize", default=True, description="Enable -O2 for a more optimized lib") + # New byterange I/O option doesn't compile with 4.9.1, will be fixed in 4.9.2 + # https://github.com/Unidata/netcdf-c/issues/2614 + variant("byterange", default=False, description="Enable byterange", when="@4.9.1") + variant("byterange", default=True, description="Enable byterange", when="@4.9.2:") # It's unclear if cdmremote can be enabled if '--enable-netcdf-4' is passed # to the configure script. Since netcdf-4 support is mandatory we comment @@ -232,6 +236,9 @@ def configure_args(self): else: config_args.append("--disable-pnetcdf") + if "~byterange" in self.spec: + config_args.append("--disable-byterange") + if "+mpi" in self.spec or "+parallel-netcdf" in self.spec: config_args.append("CC=%s" % self.spec["mpi"].mpicc) From 9b77f0eb261e3bf8ef891ee941d5132f1a31965a Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Mon, 13 Feb 2023 07:38:50 -0700 Subject: [PATCH 08/10] Revert some Intel 18 changes --- var/spack/repos/builtin/packages/googletest/package.py | 2 -- var/spack/repos/builtin/packages/libiconv/package.py | 5 ----- var/spack/repos/builtin/packages/openblas/package.py | 5 ----- var/spack/repos/builtin/packages/py-numpy/package.py | 4 ---- 4 files changed, 16 deletions(-) diff --git a/var/spack/repos/builtin/packages/googletest/package.py b/var/spack/repos/builtin/packages/googletest/package.py index 3e0bd6f17dc911..2b8a73ea67dd79 100644 --- a/var/spack/repos/builtin/packages/googletest/package.py +++ b/var/spack/repos/builtin/packages/googletest/package.py @@ -39,8 +39,6 @@ class Googletest(CMakePackage): conflicts("cxxstd=98", when="@1.9:") conflicts("cxxstd=11", when="@1.13:") - conflicts("%intel@18", when="@1.10:") - def cmake_args(self): spec = self.spec args = [ diff --git a/var/spack/repos/builtin/packages/libiconv/package.py b/var/spack/repos/builtin/packages/libiconv/package.py index 8b91c9b3363495..d80be75d4dbe03 100644 --- a/var/spack/repos/builtin/packages/libiconv/package.py +++ b/var/spack/repos/builtin/packages/libiconv/package.py @@ -32,11 +32,6 @@ class Libiconv(AutotoolsPackage, GNUMirrorPackage): conflicts("@1.14", when="%gcc@5:") - # All versions fail to build with Intel 18 with - # iconv_no_i18n.o: In function `main': - # /path/to/spack-src/src/./iconv.c:1008: undefined reference to `libiconvlist' - conflicts("@1.14:", when="%intel@18") - def configure_args(self): args = ["--enable-extra-encodings"] diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 2c5295892cfeb1..ce6f0de6248d55 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -204,11 +204,6 @@ class Openblas(MakefilePackage): msg="FPCSR consistency only applies to multithreading", ) - # Intel 18 throws this error with 0.3.19 (and later?) - # >> 12986 ../libopenblas_haswell-r0.3.19.so: undefined reference to `xerbla_' - # >> 12987 make[1]: *** [../libopenblas_haswell-r0.3.19.so] Error 1 - conflicts("%intel@18", when="@0.3.19:") - conflicts("threads=pthreads", when="~locking", msg="Pthread support requires +locking") conflicts("threads=openmp", when="%apple-clang", msg="Apple's clang does not support OpenMP") conflicts( diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index 19293595a11d78..4f12b73e5dbcc3 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -153,10 +153,6 @@ class PyNumpy(PythonPackage): conflicts("%intel", when="@1.23.0:") conflicts("%oneapi", when="@1.23.0:") - # Intel 18 doesn't build 1.22.3 (and later?) on newer CPUs, - # because these want to apply CPU-specific optimizations. - conflicts("%intel@18", when="@1.22:") - def url_for_version(self, version): url = "https://files.pythonhosted.org/packages/source/n/numpy/numpy-{}.{}" if version >= Version("1.23"): From f1524e23c98383b710ccb0ffad1e2dbea32cd2b6 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Tue, 14 Feb 2023 11:32:45 -0700 Subject: [PATCH 09/10] Lower optimization for nco with Intel18 --- var/spack/repos/builtin/packages/cdo/package.py | 1 - var/spack/repos/builtin/packages/nco/package.py | 11 ++++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/cdo/package.py b/var/spack/repos/builtin/packages/cdo/package.py index d2a673e387eccb..08c575cd6dcd6e 100644 --- a/var/spack/repos/builtin/packages/cdo/package.py +++ b/var/spack/repos/builtin/packages/cdo/package.py @@ -281,7 +281,6 @@ def yes_or_prefix(spec_name): # Workaround compiler issues # https://github.com/NOAA-EMC/spack-stack/issues/468 if self.spec.satisfies("%intel"): - #config_args.append("CFLAGS=-O1") flags["CFLAGS"].append("-O1") flags["CXXFLAGS"].append("-O1") diff --git a/var/spack/repos/builtin/packages/nco/package.py b/var/spack/repos/builtin/packages/nco/package.py index abb1a9cda00e2a..6bc0eca6c4f5dd 100644 --- a/var/spack/repos/builtin/packages/nco/package.py +++ b/var/spack/repos/builtin/packages/nco/package.py @@ -54,7 +54,16 @@ class Nco(AutotoolsPackage): def configure_args(self): spec = self.spec - return ["--{0}-doc".format("enable" if "+doc" in spec else "disable")] + + config_args = ["--{0}-doc".format("enable" if "+doc" in spec else "disable")] + + # Older versions of the Intel compilers (definitely 18) can't compile + # nco with full optimization (-O2), internal compiler error. + if spec.satisfies("%intel@18"): + config_args.append("CFLAGS=-O1") + config_args.append("CXXFLAGS=-O1") + + return config_args def setup_build_environment(self, env): spec = self.spec From 683f0c5c3e58e235d2782419c66fae053b240c61 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Tue, 14 Feb 2023 16:43:44 -0700 Subject: [PATCH 10/10] Fix netcdf-c, update nco with enable_or_disable, add missing packages to global-workflow-env --- var/spack/repos/builtin/packages/nco/package.py | 7 +++---- var/spack/repos/builtin/packages/netcdf-c/package.py | 8 ++------ .../packages/global-workflow-env/package.py | 4 ++++ 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/nco/package.py b/var/spack/repos/builtin/packages/nco/package.py index 6bc0eca6c4f5dd..aa7d0abab31247 100644 --- a/var/spack/repos/builtin/packages/nco/package.py +++ b/var/spack/repos/builtin/packages/nco/package.py @@ -53,13 +53,12 @@ class Nco(AutotoolsPackage): conflicts("%gcc@9:", when="@:4.7.8") def configure_args(self): - spec = self.spec - - config_args = ["--{0}-doc".format("enable" if "+doc" in spec else "disable")] + config_args = [] + config_args.extend(self.enable_or_disable("doc")) # Older versions of the Intel compilers (definitely 18) can't compile # nco with full optimization (-O2), internal compiler error. - if spec.satisfies("%intel@18"): + if self.spec.satisfies("%intel@18"): config_args.append("CFLAGS=-O1") config_args.append("CXXFLAGS=-O1") diff --git a/var/spack/repos/builtin/packages/netcdf-c/package.py b/var/spack/repos/builtin/packages/netcdf-c/package.py index 7abc0dbaf4a3ba..c7409bb121ee2d 100644 --- a/var/spack/repos/builtin/packages/netcdf-c/package.py +++ b/var/spack/repos/builtin/packages/netcdf-c/package.py @@ -81,10 +81,9 @@ class NetcdfC(AutotoolsPackage): variant("zstd", default=True, description="Enable ZStandard compression", when="@4.9.0:") variant("optimize", default=True, description="Enable -O2 for a more optimized lib") variant("nczarr", default=True, description="Enable zarr storage support", when="@4.8.0:") - # New byte-range I/O option doesn't compile with 4.9.1, will be fixed in 4.9.2 + # New byte-range I/O option doesn't compile with 4.7.0:4.9.1, will be fixed in 4.9.2? # https://github.com/Unidata/netcdf-c/issues/2614 - variant("byterange", default=False, description="Allow byte-range I/O", when="@4.9.1") - variant("byterange", default=True, description="Allow byte-range I/O", when="@4.9.2:") + variant("byterange", default=False, description="Allow byte-range I/O", when="@4.7.0:") # Variant fismahigh is required for FISMA high compliance on operational supercomputers variant( "fismahigh", @@ -249,9 +248,6 @@ def configure_args(self): else: config_args.append("--disable-pnetcdf") - if "~byterange" in self.spec: - config_args.append("--disable-byterange") - if "+mpi" in self.spec or "+parallel-netcdf" in self.spec: config_args.append("CC=%s" % self.spec["mpi"].mpicc) diff --git a/var/spack/repos/jcsda-emc-bundles/packages/global-workflow-env/package.py b/var/spack/repos/jcsda-emc-bundles/packages/global-workflow-env/package.py index 61f52c1d103c3e..1ffe156f770137 100644 --- a/var/spack/repos/jcsda-emc-bundles/packages/global-workflow-env/package.py +++ b/var/spack/repos/jcsda-emc-bundles/packages/global-workflow-env/package.py @@ -27,6 +27,7 @@ class GlobalWorkflowEnv(BundlePackage): depends_on("esmf") depends_on("bacio") depends_on("g2") + depends_on("g2tmpl") depends_on("w3nco") depends_on("w3emc") depends_on("sp") @@ -40,5 +41,8 @@ class GlobalWorkflowEnv(BundlePackage): depends_on("wgrib2") depends_on("met") depends_on("metplus") + depends_on("gsi-ncdiag") + depends_on("ncl") + depends_on("crtm@2.4.0") # There is no need for install() since there is no code.