commit: f7385f2513b4f2b47adb09adc7073390e7c81172 Author: Justin Lecher <jlec <AT> gentoo <DOT> org> AuthorDate: Sat Nov 10 11:42:46 2018 +0000 Commit: Justin Lecher <jlec <AT> gentoo <DOT> org> CommitDate: Sat Nov 10 11:42:53 2018 +0000 URL: https://gitweb.gentoo.org/proj/sci.git/commit/?id=f7385f25
sys-cluster/mpich: Version Bump Signed-off-by: Justin Lecher <jlec <AT> gentoo.org> Package-Manager: Portage-2.3.51, Repoman-2.3.11 sys-cluster/mpich/files/mpich-3.2.1-hwloc2.patch | 42 +++++++ sys-cluster/mpich/mpich-3.2.1.ebuild | 140 +++++++++++++++++++++++ 2 files changed, 182 insertions(+) diff --git a/sys-cluster/mpich/files/mpich-3.2.1-hwloc2.patch b/sys-cluster/mpich/files/mpich-3.2.1-hwloc2.patch new file mode 100644 index 000000000..415a40932 --- /dev/null +++ b/sys-cluster/mpich/files/mpich-3.2.1-hwloc2.patch @@ -0,0 +1,42 @@ +From ab59467c51206ac72546e4b734a1b41bf3d0345d Mon Sep 17 00:00:00 2001 +From: Kavitha Tiptur Madhu <[email protected]> +Date: Fri, 19 Jan 2018 10:44:56 -0600 +Subject: [PATCH] hydra: remove replicate membind option + +The "replicate" option of membind is not well supported on a number of +operating systems, and has been removed from hwloc (in v2.0) as well. +This patch gets rid of that option in Hydra, in preparation for an +upgrade to hwloc-2.0. + +Signed-off-by: Pavan Balaji <[email protected]> +--- + src/pm/hydra/tools/topo/hwloc/topo_hwloc.c | 3 --- + src/pm/hydra/ui/mpich/utils.c | 1 - + 2 files changed, 4 deletions(-) + +diff --git a/src/pm/hydra/tools/topo/hwloc/topo_hwloc.c b/src/pm/hydra/tools/topo/hwloc/topo_hwloc.c +index ce15fe7702..74029fad61 100644 +--- a/src/pm/hydra/tools/topo/hwloc/topo_hwloc.c ++++ b/src/pm/hydra/tools/topo/hwloc/topo_hwloc.c +@@ -424,9 +424,6 @@ HYD_status HYDT_topo_hwloc_init(const char *binding, const char *mapping, const + else if (!strncmp(membind, "interleave:", strlen("interleave:"))) { + HYDT_topo_hwloc_info.membind = HWLOC_MEMBIND_INTERLEAVE; + } +- else if (!strncmp(membind, "replicate:", strlen("replicate:"))) { +- HYDT_topo_hwloc_info.membind = HWLOC_MEMBIND_REPLICATE; +- } + else { + HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, + "unrecognized membind policy \"%s\"\n", membind); +diff --git a/src/pm/hydra/ui/mpich/utils.c b/src/pm/hydra/ui/mpich/utils.c +index 9e18a754b5..a9c9dde015 100644 +--- a/src/pm/hydra/ui/mpich/utils.c ++++ b/src/pm/hydra/ui/mpich/utils.c +@@ -940,7 +940,6 @@ static void bind_to_help_fn(void) + printf(" nexttouch -- closest to process that next touches memory\n"); + printf(" bind:<list> -- bind to memory node list\n"); + printf(" interleave:<list> -- interleave among memory node list\n"); +- printf(" replicate:<list> -- replicate among memory node list\n"); + } + + static HYD_status bind_to_fn(char *arg, char ***argv) diff --git a/sys-cluster/mpich/mpich-3.2.1.ebuild b/sys-cluster/mpich/mpich-3.2.1.ebuild new file mode 100644 index 000000000..ae3166474 --- /dev/null +++ b/sys-cluster/mpich/mpich-3.2.1.ebuild @@ -0,0 +1,140 @@ +# Copyright 1999-2018 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +FORTRAN_NEEDED=fortran +FORTRAN_STANDARD="77 90" + +inherit fortran-2 multilib-minimal mpi + +MY_PV=${PV/_/} +DESCRIPTION="A high performance and portable MPI implementation" +HOMEPAGE="http://www.mpich.org/" +SRC_URI="http://www.mpich.org/static/downloads/${PV}/${P}.tar.gz" + +SLOT="0" +LICENSE="mpich" +KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" +IUSE="+cxx doc fortran mpi-threads romio threads" + +COMMON_DEPEND=" + >=dev-libs/libaio-0.3.109-r5[${MULTILIB_USEDEP}] + >=sys-apps/hwloc-1.10.0-r2[${MULTILIB_USEDEP}] + romio? ( net-fs/nfs-utils ) + $(mpi_imp_deplist)" + +DEPEND="${COMMON_DEPEND} + dev-lang/perl + sys-devel/libtool" + +RDEPEND="${COMMON_DEPEND}" + +PATCHES=( + "${FILESDIR}/${P}-hwloc2.patch" +) + +S="${WORKDIR}"/${PN}-${MY_PV} + +MULTILIB_WRAPPED_HEADERS=( + /usr/include/mpicxx.h + /usr/include/mpi.h + /usr/include/opa_config.h +) + +src_prepare() { + default + + # Using MPICHLIB_LDFLAGS doesn't seem to fully work. + sed -i 's| *@WRAPPER_LDFLAGS@ *||' \ + src/packaging/pkgconfig/mpich.pc.in \ + src/env/*.in \ + || die +} + +multilib_src_configure() { + # The configure statements can be somewhat confusing, as they + # don't all show up in the top level configure, however, they + # are picked up in the children directories. Hence the separate + # local vars. + + local c= + if use mpi-threads; then + # MPI-THREAD requries threading. + c="${c} --with-thread-package=pthreads" + c="${c} --enable-threads=runtime" + else + if use threads ; then + c="${c} --with-thread-package=pthreads" + else + c="${c} --with-thread-package=none" + fi + c="${c} --enable-threads=single" + fi + + if ! mpi_classed; then + c="${c} --sysconfdir=${EPREFIX}/etc/${PN}" + c="${c} --docdir=${EPREFIX}/usr/share/doc/${PF}" + else + c="${c} --docdir=$(mpi_root)/usr/share/doc/${PF}" + fi + + export MPICHLIB_CFLAGS="${CFLAGS}" + export MPICHLIB_CPPFLAGS="${CPPFLAGS}" + export MPICHLIB_CXXFLAGS="${CXXFLAGS}" + export MPICHLIB_FFLAGS="${FFLAGS}" + export MPICHLIB_FCFLAGS="${FCFLAGS}" + export MPICHLIB_LDFLAGS="${LDFLAGS}" + unset CFLAGS CPPFLAGS CXXFLAGS FFLAGS FCFLAGS LDFLAGS + + ECONF_SOURCE=${S} econf $(mpi_econf_args) \ + --enable-shared \ + --with-hwloc-prefix="${EPREFIX}/usr" \ + ${c} \ + --with-pm=hydra \ + --disable-fast \ + --enable-versioning \ + $(use_enable romio) \ + $(use_enable cxx) \ + $(multilib_native_use_enable fortran fortran all) +} + +multilib_src_test() { + emake -j1 check +} + +multilib_src_install() { + default + + # fortran header cannot be wrapped (bug #540508), workaround part 1 + if multilib_is_native_abi && use fortran; then + mkdir "${T}"/fortran || die + mv "${ED}"/$(mpi_root)/usr/include/mpif* "${T}"/fortran || die + mv "${ED}"/$(mpi_root)/usr/include/*.mod "${T}"/fortran || die + else + # some fortran files get installed unconditionally + rm "${ED}"/$(mpi_root)/usr/include/mpif* "${ED}"usr/include/*.mod || die + fi +} + +multilib_src_install_all() { + # fortran header cannot be wrapped (bug #540508), workaround part 2 + if use fortran; then + mv "${T}"/fortran/* "${ED}"/$(mpi_root)/usr/include || die + fi + + mpi_dodir /usr/share/doc/${PF} + mpi_dodoc COPYRIGHT README{,.envvar} CHANGES RELEASE_NOTES + mpi_newdoc src/pm/hydra/README README.hydra + if use romio; then + mpi_newdoc src/mpi/romio/README README.romio + fi + + local d=$(echo ${ED}/$(mpi_root)/ | sed 's,///*,/,g') + if ! use doc; then + rm -rf "${d}"usr/share/doc/${PF}/www* || die + fi + + MPI_ESELECT_FILE="eselect.mpi.mpich" + mpi_imp_add_eselect +}
