diff options
-rw-r--r-- | var/spack/repos/builtin/packages/tamaas/package.py | 19 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/tamaas/recent_compilers.patch | 57 |
2 files changed, 75 insertions, 1 deletions
diff --git a/var/spack/repos/builtin/packages/tamaas/package.py b/var/spack/repos/builtin/packages/tamaas/package.py index 298287e463..d43fc991ba 100644 --- a/var/spack/repos/builtin/packages/tamaas/package.py +++ b/var/spack/repos/builtin/packages/tamaas/package.py @@ -17,7 +17,9 @@ class Tamaas(SConsPackage): maintainers("prs513rosewood") version("master", branch="master") - version("2.6.0", sha256="e3a262e5b893aa1e23554b6bd6b41af68c841ef4ffd862bb8e50a1a17ac15af6") + version("2.7.1", sha256="d7de6db3f5532bb9c8ab7e8cca1cdb5c133050dd5720249dde07027b0d41641f") + version("2.7.0", sha256="bc5717c1ead621cb9c18a073fdafbe8778fd160ad23d80c98283445d79066579") + version("2.6.0", sha256="4aafa0f727f43afc6ae45705ae80cf113a6a95e728bdf536c22b3b39be87f153") version( "2.5.0.post1", sha256="28e52dc5b8a5f77588c73a6ef396c44c6a8e9d77e3e4929a4ab07232dc9bc565" ) @@ -46,6 +48,10 @@ class Tamaas(SConsPackage): conflicts("%clang@:5") conflicts("%intel") + # MPI type-traits issues (constexpr vs static const) in recent gcc + # fixed for tamaas versions > 2.6.0 + patch("recent_compilers.patch", when="@:2.6.0%gcc@11:") + with when("+python"): extends("python") depends_on("python@3.7:", type=("build", "run")) @@ -53,6 +59,7 @@ class Tamaas(SConsPackage): depends_on("py-scipy", when="+solvers", type="run") depends_on("py-pybind11", type="build") depends_on("py-wheel", type="build") + depends_on("py-pip", type="build") def build_args(self, spec, prefix): args = [ @@ -77,3 +84,13 @@ class Tamaas(SConsPackage): args += ["PYBIND11_ROOT={}".format(spec["py-pybind11"].prefix)] return args + + def install(self, spec, prefix): + """Install the package.""" + args = self.install_args(spec, prefix) + + scons("install-lib", *args) + + if spec.satisfies("+python"): + args = ["-m", "pip"] + std_pip_args + ["--prefix=" + prefix, "build-release/python"] + python(*args) diff --git a/var/spack/repos/builtin/packages/tamaas/recent_compilers.patch b/var/spack/repos/builtin/packages/tamaas/recent_compilers.patch new file mode 100644 index 0000000000..11a288ed16 --- /dev/null +++ b/var/spack/repos/builtin/packages/tamaas/recent_compilers.patch @@ -0,0 +1,57 @@ +diff --git a/src/core/mpi_interface.cpp b/src/core/mpi_interface.cpp +index e7f9f72..f602fb1 100644 +--- a/src/core/mpi_interface.cpp ++++ b/src/core/mpi_interface.cpp +@@ -36,6 +36,30 @@ comm& comm::world() { + static comm _world{MPI_COMM_WORLD}; + return _world; + } ++ ++// Define type traits for MPI data types ++#define TYPE(t, mpi_t) \ ++ const MPI_Datatype type_trait<t>::value { mpi_t } ++TYPE(double, MPI_DOUBLE); ++TYPE(int, MPI_INT); ++TYPE(unsigned int, MPI_UNSIGNED); ++TYPE(long double, MPI_LONG_DOUBLE); ++TYPE(long, MPI_LONG); ++TYPE(unsigned long, MPI_UNSIGNED_LONG); ++TYPE(::thrust::complex<double>, MPI_CXX_DOUBLE_COMPLEX); ++TYPE(::thrust::complex<long double>, MPI_CXX_LONG_DOUBLE_COMPLEX); ++TYPE(bool, MPI_CXX_BOOL); ++#undef TYPE ++ ++// Define type traits for MPI operations ++#define OPERATION(op, mpi_op) \ ++ const MPI_Op operation_trait<operation::op>::value { mpi_op } ++OPERATION(plus, MPI_SUM); ++OPERATION(min, MPI_MIN); ++OPERATION(max, MPI_MAX); ++OPERATION(times, MPI_PROD); ++#undef OPERATION ++ + } // namespace mpi_impl + #endif + +diff --git a/src/core/mpi_interface.hh b/src/core/mpi_interface.hh +index b4cfc81..b53c826 100644 +--- a/src/core/mpi_interface.hh ++++ b/src/core/mpi_interface.hh +@@ -149,7 +149,7 @@ struct type_trait; + #define TYPE(t, mpi_t) \ + template <> \ + struct type_trait<t> { \ +- static constexpr MPI_Datatype value = mpi_t; \ ++ static const MPI_Datatype value; \ + } + TYPE(double, MPI_DOUBLE); + TYPE(int, MPI_INT); +@@ -168,7 +168,7 @@ struct operation_trait; + #define OPERATION(op, mpi_op) \ + template <> \ + struct operation_trait<operation::op> { \ +- static constexpr MPI_Op value = mpi_op; \ ++ static const MPI_Op value; \ + } + OPERATION(plus, MPI_SUM); + OPERATION(min, MPI_MIN); |