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):
  59c8ab6da4

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>
This commit is contained in:
Eli Schwartz
2024-06-10 00:05:03 -04:00
committed by Eli Schwartz
parent 4cad81c417
commit 496a4f0ce8
2 changed files with 142 additions and 0 deletions

View File

@@ -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

View File

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