From cd0121fd20af0a064efba4e576ab0dd7197d0b87 Mon Sep 17 00:00:00 2001 From: Nicholas Cameron Sly Date: Fri, 31 Mar 2023 14:39:41 -0700 Subject: [PATCH] Include fix for boost/dyninst. Fix syntax in esmf. Fix file existence check in llvm. Fix hdf5 mpi dependency in netcdf-c. --- var/spack/repos/builtin/packages/boost/package.py | 11 +++++++---- var/spack/repos/builtin/packages/dyninst/package.py | 1 + var/spack/repos/builtin/packages/esmf/package.py | 4 ++-- var/spack/repos/builtin/packages/llvm/package.py | 3 ++- var/spack/repos/builtin/packages/netcdf-c/package.py | 5 ++++- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index f3a60da178b..0498a078929 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -723,14 +723,17 @@ def setup_dependent_package(self, module, dependent_spec): # Disable find package's config mode for versions of Boost that # didn't provide it. See https://github.com/spack/spack/issues/20169 # and https://cmake.org/cmake/help/latest/module/FindBoost.html - is_cmake = isinstance(dependent_spec.package, CMakePackage) - if self.spec.satisfies("boost@:1.69.0") and is_cmake: - args_fn = type(dependent_spec.package).cmake_args + #is_cmake = isinstance(dependent_spec.package, CMakePackage) + #if self.spec.satisfies("boost@:1.69.0") and is_cmake: + # args_fn = type(dependent_spec.package).cmake_args + if self.spec.satisfies("boost@:1.69.0") and dependent_spec.satisfies("build_system=cmake"): + args_fn = type(dependent_spec.package.builder).cmake_args def _cmake_args(self): return ["-DBoost_NO_BOOST_CMAKE=ON"] + args_fn(self) - type(dependent_spec.package).cmake_args = _cmake_args + #type(dependent_spec.package).cmake_args = _cmake_args + type(dependent_spec.package.builder).cmake_args = _cmake_args def setup_dependent_build_environment(self, env, dependent_spec): if "+context" in self.spec and "context-impl" in self.spec.variants: diff --git a/var/spack/repos/builtin/packages/dyninst/package.py b/var/spack/repos/builtin/packages/dyninst/package.py index 9c981c4faf0..256767ef478 100644 --- a/var/spack/repos/builtin/packages/dyninst/package.py +++ b/var/spack/repos/builtin/packages/dyninst/package.py @@ -53,6 +53,7 @@ class Dyninst(CMakePackage): depends_on("boost@1.61.0:" + boost_libs, when="@10.1.0:") depends_on("boost@1.61.0:1.69" + boost_libs, when="@:10.0") depends_on("boost@1.67.0:" + boost_libs, when="@11.0.0:") + depends_on("boost@1.70.0:" + boost_libs, when="@12:") depends_on("libiberty+pic") diff --git a/var/spack/repos/builtin/packages/esmf/package.py b/var/spack/repos/builtin/packages/esmf/package.py index a0ee9452ade..44c0676a4a3 100644 --- a/var/spack/repos/builtin/packages/esmf/package.py +++ b/var/spack/repos/builtin/packages/esmf/package.py @@ -199,8 +199,8 @@ def setup_build_environment(self, env): env.set("ESMF_CXX", spec["mpi"].mpicxx) env.set("ESMF_F90", spec["mpi"].mpifc) else: - env.set("ESMF_CXX", env["CXX"]) - env.set("ESMF_F90", env["FC"]) + os.environ["ESMF_CXX"] = os.environ["CXX"] + os.environ["ESMF_F90"] = os.environ["FC"] # This environment variable controls the build option. if "+debug" in spec: diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index e94ff94d757..cef50e943c5 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -740,7 +740,8 @@ def post_install(self): install_tree("clang/bindings/python", python_platlib) with working_dir(self.build_directory): - install_tree("bin", join_path(self.prefix, "libexec", "llvm")) + if not os.path.exists(join_path(self.prefix, 'libexec', 'llvm')): + install_tree("bin", join_path(self.prefix, "libexec", "llvm")) def llvm_config(self, *args, **kwargs): lc = Executable(self.prefix.bin.join("llvm-config")) diff --git a/var/spack/repos/builtin/packages/netcdf-c/package.py b/var/spack/repos/builtin/packages/netcdf-c/package.py index dd106fbc627..af4d6b41270 100644 --- a/var/spack/repos/builtin/packages/netcdf-c/package.py +++ b/var/spack/repos/builtin/packages/netcdf-c/package.py @@ -124,7 +124,10 @@ class NetcdfC(AutotoolsPackage): # Starting version 4.4.0, it became possible to disable parallel I/O even # if HDF5 supports it. For previous versions of the library we need # HDF5 without mpi support to disable parallel I/O: - depends_on("hdf5~mpi", when="@:4.3~mpi") + #depends_on("hdf5~mpi", when="@:4.3~mpi") + # While it may be possible to do this, it messes with concretizing large environments with + # both ~mpi and +mpi builds of hdf5 + depends_on("hdf5~mpi", when="~mpi") # We need HDF5 with mpi support to enable parallel I/O. depends_on("hdf5+mpi", when="+mpi")