From 82978251fac1d0bea3ae74cbc18fd81c15401bcb Mon Sep 17 00:00:00 2001 From: Barry Date: Thu, 8 May 2025 16:52:48 -0700 Subject: [PATCH] variorum: fix ppc and arm builds --- .../builtin/packages/variorum/package.py | 87 +++++++++++++------ 1 file changed, 60 insertions(+), 27 deletions(-) diff --git a/var/spack/repos/builtin/packages/variorum/package.py b/var/spack/repos/builtin/packages/variorum/package.py index 70faaf11ae6..f7b4220d138 100644 --- a/var/spack/repos/builtin/packages/variorum/package.py +++ b/var/spack/repos/builtin/packages/variorum/package.py @@ -12,14 +12,14 @@ class Variorum(CMakePackage): homepage = "https://variorum.readthedocs.io" git = "https://github.com/llnl/variorum.git" - url = "https://github.com/llnl/variorum/archive/v0.1.0.tar.gz" + url = "https://github.com/llnl/variorum/archive/v0.8.0.tar.gz" maintainers("slabasan", "rountree") license("MIT") version("dev", branch="dev") - version("0.8.0", sha256="0e7288d523488b2a585af8ffeb7874721526f46df563b21fc51e8846bf65f7d8") + version("0.8.0", sha256="0e7288d523488b2a585af8ffeb7874721526f46df563b21fc51e8846bf65f7d8", preferred=True) version("0.7.0", sha256="36ec0219379ea2b7c8f9770b3271335c776ff5a3de71585714c33356345b2f0c") version("0.6.0", sha256="c0928a0e6901808ee50142d1034de15edc2c90d7d1b9fbce43757226e7c04306") version("0.5.0", sha256="de331762e7945ee882d08454ff9c66436e2b6f87f761d2b31c6ab3028723bfed") @@ -29,33 +29,38 @@ class Variorum(CMakePackage): version("0.2.0", sha256="b8c010b26aad8acc75d146c4461532cf5d9d3d24d6fc30ee68f6330a68e65744") version("0.1.0", tag="v0.1.0", commit="7747ee48cc60567bb3f09e732f24c041ecac894d") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated - ############ # Variants # ############ - variant("shared", default=True, description="Build Variorum as shared lib") - variant("docs", default=False, description="Build Variorum's documentation") variant( "build_type", default="Release", description="CMake build type", values=("Debug", "Release"), ) + variant( "cpu", default="Intel", description="Supported CPU architecture", + values=("Intel", "INTEL", "intel", "AMD", "amd", "IBM", "ibm", "ARM", "arm"), multi=False ) + variant( "gpu", default="none", description="Supported GPU architecture", + values=("Intel", "INTEL", "intel", "AMD", "amd", "NVIDIA", "nvidia", "none" ), multi=False ) ######################## # Package dependencies # ######################## depends_on("cmake@2.8:", type="build") - depends_on("hwloc") depends_on("jansson", type="link") - ######################### - # Documentation related # - ######################### - depends_on("py-sphinx", when="+docs", type="build") + # cuda@10.1.243 works, as does 12.4.1 + + depends_on("cuda", type=("build","link"), when="gpu=nvidia") # required for nvml + depends_on("cuda", type=("build","link"), when="gpu=NVIDIA") + + depends_on("hwloc +nvml", type=("build", "link"), when="gpu=nvidia") + depends_on("hwloc +nvml", type=("build", "link"), when="gpu=NVIDIA") + depends_on("hwloc", type=("build", "link"), when="gpu=none") + depends_on("hwloc", type=("build", "link"), when="gpu=AMD") + depends_on("hwloc", type=("build", "link"), when="gpu=amd") + + root_cmakelists_dir = "src" @@ -65,31 +70,59 @@ def cmake_args(self): cmake_args.append("-DJANSSON_DIR={0}".format(spec["jansson"].prefix)) + # The examples remain in the build directory + cmake_args.append("-DBUILD_EXAMPLES=ON") + cmake_args.append("-DBUILD_TESTS=ON") + if spec.satisfies("%cce"): cmake_args.append("-DCMAKE_C_FLAGS=-fcommon") cmake_args.append("-DCMAKE_CCC_FLAGS=-fcommon") cmake_args.append("-DCMAKE_Fortran_FLAGS=-ef") - if "+shared" in spec: - cmake_args.append("-DBUILD_SHARED_LIBS=ON") - else: - cmake_args.append("-DBUILD_SHARED_LIBS=OFF") + # CPU architecture selection. + if any( s in spec for s in ("cpu_Intel", "cpu=INTEL", "cpu=intel") ): + cmake_args.append("-DVARIORUM_WITH_INTEL_CPU=ON") + cmake_args.append("-DVARIORUM_WITH_AMD_CPU=OFF") + cmake_args.append("-DVARIORUM_WITH_IBM_CPU=OFF") + cmake_args.append("-DVARIORUM_WITH_ARM_CPU=OFF") + elif any( s in spec for s in ("cpu_AMD", "cpu=amd") ): + cmake_args.append("-DVARIORUM_WITH_INTEL_CPU=OFF") + cmake_args.append("-DVARIORUM_WITH_AMD_CPU=ON") + cmake_args.append("-DVARIORUM_WITH_IBM_CPU=OFF") + cmake_args.append("-DVARIORUM_WITH_ARM_CPU=OFF") + elif any( s in spec for s in ("cpu_IBM", "cpu=ibm") ): + cmake_args.append("-DVARIORUM_WITH_INTEL_CPU=OFF") + cmake_args.append("-DVARIORUM_WITH_AMD_CPU=OFF") + cmake_args.append("-DVARIORUM_WITH_IBM_CPU=ON") + cmake_args.append("-DVARIORUM_WITH_ARM_CPU=OFF") + elif any( s in spec for s in ("cpu_ARM", "cpu=arm") ): + cmake_args.append("-DVARIORUM_WITH_INTEL_CPU=OFF") + cmake_args.append("-DVARIORUM_WITH_AMD_CPU=OFF") + cmake_args.append("-DVARIORUM_WITH_IBM_CPU=OFF") + cmake_args.append("-DVARIORUM_WITH_ARM_CPU=ON") - if "+docs" in spec: - cmake_args.append("-DBUILD_DOCS=ON") - sphinx_build_exe = join_path(spec["py-sphinx"].prefix.bin, "sphinx-build") - cmake_args.append("-DSPHINX_EXECUTABLE=" + sphinx_build_exe) + # GPU architecture selection. + if any( s in spec for s in ("gpu_Intel", "gpu=INTEL", "gpu=intel") ): + cmake_args.append("-DVARIORUM_WITH_INTEL_GPU=ON") + cmake_args.append("-DVARIORUM_WITH_AMD_GPU=OFF") + cmake_args.append("-DVARIORUM_WITH_NVIDIA_GPU=OFF") + elif any( s in spec for s in ("gpu_AMD", "gpu=amd") ): + cmake_args.append("-DVARIORUM_WITH_INTEL_GPU=OFF") + cmake_args.append("-DVARIORUM_WITH_AMD_GPU=ON") + cmake_args.append("-DVARIORUM_WITH_NVIDIA_GPU=OFF") + elif any( s in spec for s in ("gpu_NVIDIA", "gpu=nvidia") ): + cmake_args.append("-DVARIORUM_WITH_INTEL_GPU=OFF") + cmake_args.append("-DVARIORUM_WITH_AMD_GPU=OFF") + cmake_args.append("-DVARIORUM_WITH_NVIDIA_GPU=ON") + cmake_args.append("-DNVML_DIR={0}".format(spec["cuda"].prefix)) else: - cmake_args.append("-DBUILD_DOCS=OFF") + cmake_args.append("-DVARIORUM_WITH_INTEL_GPU=OFF") + cmake_args.append("-DVARIORUM_WITH_AMD_GPU=OFF") + cmake_args.append("-DVARIORUM_WITH_NVIDIA_GPU=OFF") if "build_type=Debug" in spec: cmake_args.append("-DVARIORUM_DEBUG=ON") else: cmake_args.append("-DVARIORUM_DEBUG=OFF") - if self.run_tests: - cmake_args.append("-DBUILD_TESTS=ON") - else: - cmake_args.append("-DBUILD_TESTS=OFF") - return cmake_args