From 16e7d6f2b6e5feb7643f14327181e6fe06cb404e Mon Sep 17 00:00:00 2001 From: AlexanderRichert-NOAA Date: Tue, 20 May 2025 20:47:23 +0000 Subject: [PATCH 1/9] git-lfs: place make tmp dir under Spack build dir --- var/spack/repos/builtin/packages/git-lfs/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/git-lfs/package.py b/var/spack/repos/builtin/packages/git-lfs/package.py index 5e22601b80bab9..12c781d6d49f5a 100644 --- a/var/spack/repos/builtin/packages/git-lfs/package.py +++ b/var/spack/repos/builtin/packages/git-lfs/package.py @@ -63,6 +63,11 @@ def determine_version(cls, exe): match = re.search(r"git-lfs/(\S+)", output) return match.group(1) if match else None + def build(self, spec, prefix): + tmpdir = join_path(self.build_directory, "tmp") + mkdirp(tmpdir) + make(f"TMPDIR={tmpdir}", "-j1") + # Git-lfs does not provide an 'install' target in the Makefile def install(self, spec, prefix): mkdirp(prefix.bin) From 91b04c4578a606fa970f2a40964744f90d39170e Mon Sep 17 00:00:00 2001 From: AlexanderRichert-NOAA Date: Tue, 20 May 2025 20:52:01 +0000 Subject: [PATCH 2/9] parallelio: add commit hashes for resources --- var/spack/repos/builtin/packages/parallelio/package.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/parallelio/package.py b/var/spack/repos/builtin/packages/parallelio/package.py index bfc933a7c8e36c..29db874cff6898 100644 --- a/var/spack/repos/builtin/packages/parallelio/package.py +++ b/var/spack/repos/builtin/packages/parallelio/package.py @@ -60,11 +60,17 @@ class Parallelio(CMakePackage): depends_on("netcdf-fortran", type="link", when="+fortran") depends_on("parallel-netcdf", type="link", when="+pnetcdf") - resource(name="genf90", git="https://github.com/PARALLELIO/genf90.git", tag="genf90_200608") + resource( + name="genf90", + git="https://github.com/PARALLELIO/genf90.git", + tag="genf90_200608", + commit="4816965ba946731352bad195b7d946a5fe682ff5", + ) resource( name="CMake_Fortran_utils", git="https://github.com/CESM-Development/CMake_Fortran_utils.git", tag="CMake_Fortran_utils_150308", + commit="c2572f19d671c35a4cca26911a55ef78b3ba2829", ) # Allow argument mismatch in gfortran versions > 10 for mpi library compatibility From 5da889003298e7dad97728d25bcb141bc83269a4 Mon Sep 17 00:00:00 2001 From: AlexanderRichert-NOAA Date: Tue, 27 May 2025 21:36:04 +0000 Subject: [PATCH 3/9] ecflow: +ui requires qt+gui --- var/spack/repos/builtin/packages/ecflow/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/ecflow/package.py b/var/spack/repos/builtin/packages/ecflow/package.py index 22762230ca1cb9..575c2afa9359c4 100644 --- a/var/spack/repos/builtin/packages/ecflow/package.py +++ b/var/spack/repos/builtin/packages/ecflow/package.py @@ -69,7 +69,7 @@ class Ecflow(CMakePackage): depends_on("openssl@1:", when="@5:") depends_on("pkgconfig", type="build", when="+ssl ^openssl ~shared") - depends_on("qt@5:", when="+ui") + depends_on("qt@5: +gui", when="+ui") # Requirement to use the Python3_EXECUTABLE variable depends_on("cmake@3.16:", type="build") From a8061fd495fa724b14f17a0c26f5b6d5da3df392 Mon Sep 17 00:00:00 2001 From: AlexanderRichert-NOAA Date: Tue, 27 May 2025 21:36:45 +0000 Subject: [PATCH 4/9] eckit: only access gcc-runtime when spec'd --- var/spack/repos/builtin/packages/eckit/package.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/var/spack/repos/builtin/packages/eckit/package.py b/var/spack/repos/builtin/packages/eckit/package.py index f389e2b4d50ba3..698f4eea4560c3 100644 --- a/var/spack/repos/builtin/packages/eckit/package.py +++ b/var/spack/repos/builtin/packages/eckit/package.py @@ -197,6 +197,10 @@ def cmake_args(self): # of a dependent package (e.g. fdb) might fail due to the undefined references. args.append(self.define("CURSES_NEED_NCURSES", True)) + if "gcc-runtime" in self.spec: + args.append("-DCMAKE_Fortran_FLAGS=-L%s" % self.spec["gcc-runtime"].prefix.lib) + args.append("-DCMAKE_CXX_FLAGS=-L%s" % self.spec["gcc-runtime"].prefix.lib) + return args def setup_build_environment(self, env): @@ -207,6 +211,9 @@ def setup_build_environment(self, env): if self.spec.satisfies("platform=darwin") and self.spec.satisfies("+admin"): env.append_flags("LDFLAGS", self.spec["ncurses"].libs.ld_flags) + if "gcc-runtime" in self.spec: + env.append_flags("LDFLAGS", "-L%s" % self.spec["gcc-runtime"].prefix.lib) + def check(self): ctest_args = ["-j", str(make_jobs)] From 73bcd89f63217f57fb7109a44e3232476aa6eaba Mon Sep 17 00:00:00 2001 From: AlexanderRichert-NOAA Date: Tue, 27 May 2025 21:37:00 +0000 Subject: [PATCH 5/9] fckit: only access gcc-runtime when spec'd --- var/spack/repos/builtin/packages/fckit/package.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/var/spack/repos/builtin/packages/fckit/package.py b/var/spack/repos/builtin/packages/fckit/package.py index f86ed234d775ec..d96da9fe68d642 100644 --- a/var/spack/repos/builtin/packages/fckit/package.py +++ b/var/spack/repos/builtin/packages/fckit/package.py @@ -81,8 +81,16 @@ def cmake_args(self): raise InstallError("C++ library not configured for compiler") args.append("-DECBUILD_CXX_IMPLICIT_LINK_LIBRARIES={}".format(cxxlib)) + if 'gcc-runtime' in self.spec: + args.append("-DCMAKE_Fortran_FLAGS=-L%s" % self.spec["gcc-runtime"].prefix.lib) + args.append("-DCMAKE_CXX_FLAGS=-L%s" % self.spec["gcc-runtime"].prefix.lib) + return args + def setup_build_environment(self, env): + if 'gcc-runtime' in self.spec: + env.set("LDFLAGS", "-L%s" % self.spec["gcc-runtime"].prefix.lib) + @when("+fismahigh") def patch(self): patterns = ["tools/install-*", "tools/github-sha*", ".travis.yml"] From 2cf47814956cad6849f069a6304b537fa773e088 Mon Sep 17 00:00:00 2001 From: AlexanderRichert-NOAA Date: Tue, 27 May 2025 21:37:28 +0000 Subject: [PATCH 6/9] ip2: patch for oneapi --- var/spack/repos/builtin/packages/ip2/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/ip2/package.py b/var/spack/repos/builtin/packages/ip2/package.py index ed228022d4b20d..82a1bd4252738d 100644 --- a/var/spack/repos/builtin/packages/ip2/package.py +++ b/var/spack/repos/builtin/packages/ip2/package.py @@ -38,3 +38,7 @@ def setup_run_environment(self, env): ) env.set("IP2_LIB" + suffix, lib[0]) env.set("IP2_INC" + suffix, join_path(self.prefix, "include_" + suffix)) + + def patch(self): + filter_file("\(Intel\|", "(Intel|IntelLLVM|", "CMakeLists.txt") + filter_file("\(Intel\)", "(Intel|IntelLLVM)", "src/CMakeLists.txt") From 7e234d9cf8cf691797705286237932990d8cb89b Mon Sep 17 00:00:00 2001 From: AlexanderRichert-NOAA Date: Tue, 27 May 2025 21:38:10 +0000 Subject: [PATCH 7/9] mapl: add commit hashes for esma_cmake resources --- var/spack/repos/builtin/packages/mapl/package.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/var/spack/repos/builtin/packages/mapl/package.py b/var/spack/repos/builtin/packages/mapl/package.py index 48ab25a6ea78cf..1006d7ce22a6a5 100644 --- a/var/spack/repos/builtin/packages/mapl/package.py +++ b/var/spack/repos/builtin/packages/mapl/package.py @@ -166,60 +166,70 @@ class Mapl(CMakePackage): name="esma_cmake", git="https://github.com/GEOS-ESM/ESMA_cmake.git", tag="v3.55.0", + commit="ee49277f13b9b223cd86129a0c7094a359cbc4db", when="@2.51:", ) resource( name="esma_cmake", git="https://github.com/GEOS-ESM/ESMA_cmake.git", tag="v3.51.0", + commit="53fae1237c88f9a6e60393dc6e4781555786b659", when="@2.48:2.50", ) resource( name="esma_cmake", git="https://github.com/GEOS-ESM/ESMA_cmake.git", tag="v3.46.0", + commit="00bfd6ce4d7d8152433b2b1ad2cbb6d6f6c7066a", when="@2.47", ) resource( name="esma_cmake", git="https://github.com/GEOS-ESM/ESMA_cmake.git", tag="v3.45.2", + commit="0f40e433189902d30af15fc92ace18dbf950d273", when="@2.45:2.46", ) resource( name="esma_cmake", git="https://github.com/GEOS-ESM/ESMA_cmake.git", tag="v3.40.0", + commit="92e9910b1f70d6ea75e9f552fd672001b740b15b", when="@2.44", ) resource( name="esma_cmake", git="https://github.com/GEOS-ESM/ESMA_cmake.git", tag="v3.36.0", + commit="e69296a5955ccc08618673125fccda0d0ca979ea", when="@2.42.0:2.43", ) resource( name="esma_cmake", git="https://github.com/GEOS-ESM/ESMA_cmake.git", tag="v3.31.0", + commit="7dc4c819dc5169e6b887374aa0fa0a8f71846832", when="@2.40.0:2.41", ) resource( name="esma_cmake", git="https://github.com/GEOS-ESM/ESMA_cmake.git", tag="v3.28.0", + commit="cb919eaea9489a2852d830a1eebf45b3c6acd223", when="@2.36.0:2.39", ) resource( name="esma_cmake", git="https://github.com/GEOS-ESM/ESMA_cmake.git", tag="v3.24.0", + commit="5664d95fddff4afd01a2d7388a8bd99123d65e7d", when="@2.34.0:2.35", ) resource( name="esma_cmake", git="https://github.com/GEOS-ESM/ESMA_cmake.git", tag="v3.21.0", + commit="6df72eb873659eb55bc119f320a6e6e7bd23f5b1", when="@2.22.0:2.33", ) # NOTE: Remove this resource(), the patch() commands below @@ -228,6 +238,7 @@ class Mapl(CMakePackage): name="esma_cmake", git="https://github.com/GEOS-ESM/ESMA_cmake.git", tag="v3.13.0", + commit="e24f465000723630b4aef47d1d62cda5c0b38217", when="@:2.12.3", ) From cdef8b070713a8b0a41e587837d88a3ad1b8d05c Mon Sep 17 00:00:00 2001 From: AlexanderRichert-NOAA Date: Tue, 27 May 2025 21:38:36 +0000 Subject: [PATCH 8/9] upp: patch for oneapi --- var/spack/repos/builtin/packages/upp/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/upp/package.py b/var/spack/repos/builtin/packages/upp/package.py index b8b7fe13edb394..6457c8836262c4 100644 --- a/var/spack/repos/builtin/packages/upp/package.py +++ b/var/spack/repos/builtin/packages/upp/package.py @@ -77,3 +77,7 @@ def cmake_args(self): ] return args + + def patch(self): + filter_file("\(Intel\)", "(Intel|IntelLLVM)", "CMakeLists.txt") + filter_file("\(Intel\)", "(Intel|IntelLLVM)", "sorc/ncep_post.fd/CMakeLists.txt") From 519b3203cd673ec0ba8102f5ccd675d6b5c3b4a9 Mon Sep 17 00:00:00 2001 From: Alex Richert Date: Wed, 28 May 2025 21:34:48 -0700 Subject: [PATCH 9/9] style fixes --- var/spack/repos/builtin/packages/fckit/package.py | 4 ++-- var/spack/repos/builtin/packages/ip2/package.py | 4 ++-- var/spack/repos/builtin/packages/upp/package.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/fckit/package.py b/var/spack/repos/builtin/packages/fckit/package.py index d96da9fe68d642..60110c864ee95e 100644 --- a/var/spack/repos/builtin/packages/fckit/package.py +++ b/var/spack/repos/builtin/packages/fckit/package.py @@ -81,14 +81,14 @@ def cmake_args(self): raise InstallError("C++ library not configured for compiler") args.append("-DECBUILD_CXX_IMPLICIT_LINK_LIBRARIES={}".format(cxxlib)) - if 'gcc-runtime' in self.spec: + if "gcc-runtime" in self.spec: args.append("-DCMAKE_Fortran_FLAGS=-L%s" % self.spec["gcc-runtime"].prefix.lib) args.append("-DCMAKE_CXX_FLAGS=-L%s" % self.spec["gcc-runtime"].prefix.lib) return args def setup_build_environment(self, env): - if 'gcc-runtime' in self.spec: + if "gcc-runtime" in self.spec: env.set("LDFLAGS", "-L%s" % self.spec["gcc-runtime"].prefix.lib) @when("+fismahigh") diff --git a/var/spack/repos/builtin/packages/ip2/package.py b/var/spack/repos/builtin/packages/ip2/package.py index 82a1bd4252738d..5ea778723f858f 100644 --- a/var/spack/repos/builtin/packages/ip2/package.py +++ b/var/spack/repos/builtin/packages/ip2/package.py @@ -40,5 +40,5 @@ def setup_run_environment(self, env): env.set("IP2_INC" + suffix, join_path(self.prefix, "include_" + suffix)) def patch(self): - filter_file("\(Intel\|", "(Intel|IntelLLVM|", "CMakeLists.txt") - filter_file("\(Intel\)", "(Intel|IntelLLVM)", "src/CMakeLists.txt") + filter_file(r"\(Intel\|", "(Intel|IntelLLVM|", "CMakeLists.txt") + filter_file(r"\(Intel\)", "(Intel|IntelLLVM)", "src/CMakeLists.txt") diff --git a/var/spack/repos/builtin/packages/upp/package.py b/var/spack/repos/builtin/packages/upp/package.py index 6457c8836262c4..5bbb8947a575fd 100644 --- a/var/spack/repos/builtin/packages/upp/package.py +++ b/var/spack/repos/builtin/packages/upp/package.py @@ -79,5 +79,5 @@ def cmake_args(self): return args def patch(self): - filter_file("\(Intel\)", "(Intel|IntelLLVM)", "CMakeLists.txt") - filter_file("\(Intel\)", "(Intel|IntelLLVM)", "sorc/ncep_post.fd/CMakeLists.txt") + filter_file(r"\(Intel\)", "(Intel|IntelLLVM)", "CMakeLists.txt") + filter_file(r"\(Intel\)", "(Intel|IntelLLVM)", "sorc/ncep_post.fd/CMakeLists.txt")