commit:     496a4f0ce86f43da3fe77ffd6c9bef2e41cf3852
Author:     Eli Schwartz <eschwartz93 <AT> gmail <DOT> com>
AuthorDate: Mon Jun 10 04:05:03 2024 +0000
Commit:     Eli Schwartz <eschwartz <AT> gentoo <DOT> org>
CommitDate: Fri Jul 12 05:54:15 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=496a4f0c

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 <AT> gmail.com>
Signed-off-by: Eli Schwartz <eschwartz <AT> gentoo.org>

 sys-cluster/openmpi/Manifest             |   1 +
 sys-cluster/openmpi/openmpi-5.0.3.ebuild | 141 +++++++++++++++++++++++++++++++
 2 files changed, 142 insertions(+)

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
+}

Reply via email to