summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz93@gmail.com>2024-06-10 00:05:03 -0400
committerEli Schwartz <eschwartz@gentoo.org>2024-07-12 01:54:15 -0400
commit496a4f0ce86f43da3fe77ffd6c9bef2e41cf3852 (patch)
tree808ff5b0c8d5c1f61080fce60815a432b688addd /sys-cluster
parentsys-cluster/openmpi: make sure elibtoolize is applied (diff)
downloadgentoo-496a4f0ce86f43da3fe77ffd6c9bef2e41cf3852.tar.gz
gentoo-496a4f0ce86f43da3fe77ffd6c9bef2e41cf3852.tar.bz2
gentoo-496a4f0ce86f43da3fe77ffd6c9bef2e41cf3852.zip
sys-cluster/openmpi: add 5.0.3
A bunch of upstream changes occurred. In particular: - openmpi drops ALL support for 32-bit, and errors out in ./configure if you try. This follows pmix. Rip out all the multilib-minimal scaffolding. - libompitrace "was incomplete and unmaintained" and is now removed from the sources - upstream now defaults to --disable-dlopen, and configuring with libltdl enabled externally returns errors saying a non libltdl header doesn't exist. Unclear if it actually supports this - a couple dependencies can now be configured --with-*=external instead of passing paths - libibverbs handling is gone upstream and no longer makes sense to configure via USE flags (or at all): https://github.com/open-mpi/ompi/commit/59c8ab6da4276ff398453a54910c6c0fb67a153c Delayed: - heterogeneous was broken in older versions, and its USE flag is supposed to be restored. But the upstream docs still suggest it is broken. Independent of upstream rework of pmix, we take the opportunity of a version bump to build against the system pmix, resolving a longstanding bug due to openmpi publicly shipping its own pmix installation that stomps all over the global system namespace. Temporarily drop keywords which the pmix package lacks. Bug: https://bugs.gentoo.org/828123 Closes: https://bugs.gentoo.org/652432 Closes: https://bugs.gentoo.org/927828 Closes: https://bugs.gentoo.org/930362 Signed-off-by: Eli Schwartz <eschwartz93@gmail.com> Signed-off-by: Eli Schwartz <eschwartz@gentoo.org>
Diffstat (limited to 'sys-cluster')
-rw-r--r--sys-cluster/openmpi/Manifest1
-rw-r--r--sys-cluster/openmpi/openmpi-5.0.3.ebuild141
2 files changed, 142 insertions, 0 deletions
diff --git a/sys-cluster/openmpi/Manifest b/sys-cluster/openmpi/Manifest
index aad192529f00..687b6214d0a6 100644
--- a/sys-cluster/openmpi/Manifest
+++ b/sys-cluster/openmpi/Manifest
@@ -1,3 +1,4 @@
DIST openmpi-4.1.4.tar.bz2 10042839 BLAKE2B b020e3530ae5dde7b144e7c33b1a3f26f622526a4b48a97a0956fc6f49bbf9dfd5be9ebeeaf3bdc5168a307507408ba5dd8e2a537148821e1d476678177dc5d6 SHA512 c70a92c9b16b8c76a871183f9b180d60861186e64140da897d206d53bc06213f31ea93b31734645f580f4bf28dda5605d85dbce2417e4596955384d961bed653
DIST openmpi-4.1.5.tar.bz2 10045426 BLAKE2B 135a8373ed6173b7a94def18e3b964c6b6050c909382e0dbb1898a6d261ae428931358121ef6d325d303f4f510017a94970f7c66b280a5fc460365821f36dece SHA512 7a2188684ed7542fe42e1717ae72cb859b4f3d6f722c9d3ba04bfed6c2178b3e7da3a536629d312c23571fed4d9b2ca5e20e85898ae5144e9332bd898e6e1cc6
DIST openmpi-4.1.6.tar.bz2 10017002 BLAKE2B 4f119e1ed9b8787f0f860295ab1721fe2fd5300b8e182230a9eba3a864680b02bbd30618cc6d798a693a121626fc0ad5f447144d9ba91becb734f1a530d7a23a SHA512 0ef3240f9c436fb19b67e836cac376eafeb7825d12de3387dad04329dee9f182799d17d785ea23eba763810f479015bb5230593c28950b616b2f0aa1c0a81e71
+DIST openmpi-5.0.3.tar.bz2 29761888 BLAKE2B a084813f3dada12bbe77dcc6ef0ec0454980779f97ccb46f37f3d7df3bf7299e6484ec3427c2ca784e70876f62dc061a13cb7f08348e3d649e27f2bece9a09ac SHA512 60e8f6dcd6b1531ce8164e02f40be9a364ab484166a2a7b13bdff115a508f0596e97ad0a4204a47799ae608ba484a7ba9503042bddffe675f09ce22071b0b4a9
diff --git a/sys-cluster/openmpi/openmpi-5.0.3.ebuild b/sys-cluster/openmpi/openmpi-5.0.3.ebuild
new file mode 100644
index 000000000000..f22be0582eaa
--- /dev/null
+++ b/sys-cluster/openmpi/openmpi-5.0.3.ebuild
@@ -0,0 +1,141 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FORTRAN_NEEDED=fortran
+inherit cuda flag-o-matic fortran-2 libtool
+
+MY_P=${P/-mpi}
+
+IUSE_OPENMPI_FABRICS="
+ openmpi_fabrics_ofed
+ openmpi_fabrics_knem"
+
+IUSE_OPENMPI_RM="
+ openmpi_rm_pbs
+ openmpi_rm_slurm"
+
+DESCRIPTION="A high-performance message passing library (MPI)"
+HOMEPAGE="https://www.open-mpi.org"
+SRC_URI="https://www.open-mpi.org/software/ompi/v$(ver_cut 1-2)/downloads/${MY_P}.tar.bz2"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 -arm -ppc -x86 ~amd64-linux"
+IUSE="cma cuda cxx fortran ipv6 peruse romio valgrind
+ ${IUSE_OPENMPI_FABRICS} ${IUSE_OPENMPI_RM}"
+
+REQUIRED_USE="
+ openmpi_rm_slurm? ( !openmpi_rm_pbs )
+ openmpi_rm_pbs? ( !openmpi_rm_slurm )
+"
+
+RDEPEND="
+ !sys-cluster/mpich
+ !sys-cluster/mpich2
+ !sys-cluster/nullmpi
+ >=dev-libs/libevent-2.0.22:=[threads(+)]
+ >=sys-apps/hwloc-2.0.2:=
+ sys-cluster/pmix:=
+ >=sys-libs/zlib-1.2.8-r1
+ cuda? ( >=dev-util/nvidia-cuda-toolkit-6.5.19-r1:= )
+ openmpi_fabrics_ofed? ( sys-cluster/rdma-core )
+ openmpi_fabrics_knem? ( sys-cluster/knem )
+ openmpi_rm_pbs? ( sys-cluster/torque )
+ openmpi_rm_slurm? ( sys-cluster/slurm )
+"
+DEPEND="${RDEPEND}
+ valgrind? ( dev-debug/valgrind )"
+
+pkg_setup() {
+ fortran-2_pkg_setup
+
+ elog
+ elog "OpenMPI has an overwhelming count of configuration options."
+ elog "Don't forget the EXTRA_ECONF environment variable can let you"
+ elog "specify configure options if you find them necessary."
+ elog
+}
+
+src_prepare() {
+ default
+ elibtoolize
+
+ # Avoid test which ends up looking at system mounts
+ echo "int main() { return 0; }" > test/util/opal_path_nfs.c || die
+
+ # Necessary for scalibility, see
+ # http://www.open-mpi.org/community/lists/users/2008/09/6514.php
+ echo 'oob_tcp_listen_mode = listen_thread' \
+ >> opal/etc/openmpi-mca-params.conf || die
+}
+
+src_configure() {
+ # -Werror=lto-type-mismatch, -Werror=strict-aliasing
+ # The former even prevents successfully running ./configure, but both appear
+ # at `make` time as well.
+ # https://bugs.gentoo.org/913040
+ # https://github.com/open-mpi/ompi/issues/12674
+ # https://github.com/open-mpi/ompi/issues/12675
+ append-flags -fno-strict-aliasing
+ filter-lto
+
+ local myconf=(
+ --disable-mpi-java
+ # configure takes a looooong time, but upstream currently force
+ # constriants on caching:
+ # https://github.com/open-mpi/ompi/blob/9eec56222a5c98d13790c9ee74877f1562ac27e8/config/opal_config_subdir.m4#L118
+ # so no --cache-dir for now.
+ --enable-mpi-fortran=$(usex fortran all no)
+ --enable-orterun-prefix-by-default
+ --enable-pretty-print-stacktrace
+
+ --sysconfdir="${EPREFIX}/etc/${PN}"
+
+ --with-hwloc=external
+ --with-libevent=external
+
+ # Oiriginally supposed to be re-enabled for 5.0!
+ # See https://github.com/open-mpi/ompi/issues/9697#issuecomment-1003746357
+ # and https://bugs.gentoo.org/828123#c14
+ #
+ # However as of 5.0.3 the docs still say:
+ #
+ # As such, supporting data heterogeneity is a feature that has fallen
+ # into disrepair and is currently known to be broken in this release
+ # of Open MPI.
+ --disable-heterogeneous
+
+ $(use_enable cxx mpi-cxx)
+ $(use_enable ipv6)
+ $(use_enable peruse)
+ $(use_enable romio io-romio)
+
+ $(use_with cma)
+
+ $(use_with cuda cuda "${EPREFIX}"/opt/cuda)
+ $(use_with valgrind)
+ $(use_with openmpi_fabrics_knem knem "${EPREFIX}"/usr)
+ $(use_with openmpi_rm_pbs tm)
+ $(use_with openmpi_rm_slurm slurm)
+ )
+
+ CONFIG_SHELL="${BROOT}"/bin/bash econf "${myconf[@]}"
+}
+
+src_compile() {
+ emake V=1
+}
+
+src_test() {
+ emake -C test check
+}
+
+src_install() {
+ default
+
+ # Remove la files, no static libs are installed and we have pkg-config
+ find "${ED}" -name '*.la' -delete || die
+}