summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--var/spack/repos/builtin/packages/libpsm3/package.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/libpsm3/package.py b/var/spack/repos/builtin/packages/libpsm3/package.py
new file mode 100644
index 0000000000..620777fc17
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libpsm3/package.py
@@ -0,0 +1,60 @@
+# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+import os
+
+from spack.package import *
+
+
+class Libpsm3(AutotoolsPackage):
+ """PSM3 provider for the PSM3 OFI provider"""
+
+ homepage = "https://ofiwg.github.io/libfabric/v1.12.0/man/fi_psm3.7.html"
+ url = "https://github.com/intel/eth-psm3-fi/archive/refs/tags/v11.4.1.0.tar.gz"
+ git = "https://github.com/intel/eth-psm3-fi.git"
+
+ version(
+ "11.4.1.0",
+ sha256="272adb9ec10edf709bfcfccc6b6e9296d25d892c36b845ad577caeb82b70c9ac",
+ preferred=True,
+ )
+
+ variant("atomics", default=True, description="Enable atomics")
+ variant("debug", default=False, description="Enable debugging")
+ variant("sockets", default=True, description="Enable PSM3 sockets")
+ variant("verbs", default=False, description="Enable PSM3 verbs")
+
+ depends_on("autoconf", type="build")
+ depends_on("automake", type="build")
+ depends_on("numactl")
+ depends_on("uuid")
+
+ maintainers("dodecatheon", "douglasjacobsen")
+
+ def configure_args(self):
+ config_args = []
+ config_args.extend(self.enable_or_disable("atomics"))
+ config_args.extend(self.enable_or_disable("debug"))
+ config_args += self.enable_or_disable("psm3-sockets", variant="sockets")
+ config_args += self.enable_or_disable("psm3-verbs", variant="verbs")
+ return config_args
+
+ def build(self, spec, prefix):
+ make()
+
+ def install(self, spec, prefix):
+ install_tree("src/.libs", prefix.lib)
+ os.unlink("%s/libpsm3-fi.la" % prefix.lib)
+ install("src/libpsm3-fi.la", prefix.lib)
+
+ def setup_run_environment(self, env):
+ env.prepend_path("FI_PROVIDER_PATH", self.prefix.lib)
+ env.set("FI_PROVIDER", "psm3")
+ env.set("PSM3_ALLOW_ROUTERS", "1")
+ if "+sockets" in self.spec and "~verbs" in self.spec:
+ env.set("PSM3_HAL", "sockets")
+ env.set("FI_PSM3_NAME_SERVER", "1")
+ if "+debug" in self.spec:
+ env.set("PSM3_IDENTIFY", "1")