From 1dde785e9aae9a35f576a51378c41432d5f85d56 Mon Sep 17 00:00:00 2001 From: Chang Liu <48259579+changliu777@users.noreply.github.com> Date: Mon, 20 Jan 2025 04:06:13 -0500 Subject: [PATCH] fusion-io: new package (#47699) --- .../builtin/packages/fusion-io/package.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 var/spack/repos/builtin/packages/fusion-io/package.py diff --git a/var/spack/repos/builtin/packages/fusion-io/package.py b/var/spack/repos/builtin/packages/fusion-io/package.py new file mode 100644 index 00000000000..260e81ded44 --- /dev/null +++ b/var/spack/repos/builtin/packages/fusion-io/package.py @@ -0,0 +1,47 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class FusionIo(CMakePackage): + """Fusion-IO is a library providing common interface (C++, C, Fortran, Python) + to data from various fusion simulation codes. It supported reading data from + M3D-C1, GPEC, MARS, GATO outputs and GEQDSK files.""" + + git = "https://github.com/nferraro/fusion-io" + + maintainers("changliu777") + + license("MIT") + + version("master", submodules=True, branch="master") + + variant("python", default=True, description="Enable Python support") + variant("trace", default=True, description="Build trace program") + + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") + depends_on("mpi") + depends_on("hdf5") + depends_on("cmake@3:", type="build") + + extends("python", when="+python") + + def cmake_args(self): + spec = self.spec + + args = [ + self.define("CMAKE_C_COMPILER", spec["mpi"].mpicc), + self.define("CMAKE_CXX_COMPILER", spec["mpi"].mpicxx), + self.define("CMAKE_Fortran_COMPILER", spec["mpi"].mpifc), + self.define_from_variant("FUSIONIO_ENABLE_TRACE", "trace"), + self.define_from_variant("FUSIONIO_ENABLE_PYTHON", "python"), + ] + + if self.spec.satisfies("+python"): + args.append(self.define("PYTHON_MODULE_INSTALL_PATH", python_platlib)) + + return args