diff options
author | Justin Bronder <jsbronder@gentoo.org> | 2009-09-17 19:43:05 +0000 |
---|---|---|
committer | Justin Bronder <jsbronder@gentoo.org> | 2009-09-17 19:43:05 +0000 |
commit | 65cf1e4cc0fedec59ffc5cccc35f4f11694ee0bb (patch) | |
tree | 2fe2e887f2d3fbf5eb98415f72dd34c886375896 /sys-cluster | |
parent | Version bump. (diff) | |
download | gentoo-2-65cf1e4cc0fedec59ffc5cccc35f4f11694ee0bb.tar.gz gentoo-2-65cf1e4cc0fedec59ffc5cccc35f4f11694ee0bb.tar.bz2 gentoo-2-65cf1e4cc0fedec59ffc5cccc35f4f11694ee0bb.zip |
bump mpich2-1.1.1_p1, #203922
(Portage version: 2.2_rc40/cvs/Linux x86_64)
Diffstat (limited to 'sys-cluster')
5 files changed, 364 insertions, 1 deletions
diff --git a/sys-cluster/mpich2/ChangeLog b/sys-cluster/mpich2/ChangeLog index 84cb2c2689ef..738c7e4cc859 100644 --- a/sys-cluster/mpich2/ChangeLog +++ b/sys-cluster/mpich2/ChangeLog @@ -1,6 +1,14 @@ # ChangeLog for sys-cluster/mpich2 # Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-cluster/mpich2/ChangeLog,v 1.42 2009/09/15 16:25:16 jsbronder Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-cluster/mpich2/ChangeLog,v 1.43 2009/09/17 19:43:05 jsbronder Exp $ + +*mpich2-1.1.1_p1 (17 Sep 2009) + + 17 Sep 2009; Justin Bronder <jsbronder@gentoo.org> + +files/0001-MPD_CONF_FILE-should-be-readable.patch, + +files/0002-mpd_conf_file-search-order.patch, + +files/0003-Fix-pkgconfig-for-mpich2-ch3.patch, +mpich2-1.1.1_p1.ebuild: + bump mpich2-1.1.1_p1, #203922 15 Sep 2009; Justin Bronder <jsbronder@gentoo.org> +mpich2-1.0.8.ebuild: Adding mpich2-1.0.8 back to the tree. diff --git a/sys-cluster/mpich2/files/0001-MPD_CONF_FILE-should-be-readable.patch b/sys-cluster/mpich2/files/0001-MPD_CONF_FILE-should-be-readable.patch new file mode 100644 index 000000000000..fa685e36431d --- /dev/null +++ b/sys-cluster/mpich2/files/0001-MPD_CONF_FILE-should-be-readable.patch @@ -0,0 +1,32 @@ +From 4daa0519150f38bd322964157157fb3369ee0f38 Mon Sep 17 00:00:00 2001 +From: Justin Bronder <jsbronder@gmail.com> +Date: Wed, 16 Sep 2009 11:43:59 -0400 +Subject: [PATCH 1/3] MPD_CONF_FILE should be readable + +When looking for the MPD_CONF_FILE, the existance is not enough, the +file also needs to be readable by the current user. +--- + src/pm/mpd/mpdlib.py | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/pm/mpd/mpdlib.py b/src/pm/mpd/mpdlib.py +index 8ea8a05..31ddcb4 100644 +--- a/src/pm/mpd/mpdlib.py ++++ b/src/pm/mpd/mpdlib.py +@@ -1359,11 +1359,11 @@ class MPDParmDB(dict): + if os.environ.has_key(k): + self[('env',k)] = os.environ[k] + def get_parms_from_rcfile(self,parmsToOverride,errIfMissingFile=0): +- if os.environ.has_key('MPD_CONF_FILE'): ++ if os.environ.has_key('MPD_CONF_FILE') and os.access(os.environ['MPD_CONF_FILE'], os.R_OK): + parmsRCFilename = os.environ['MPD_CONF_FILE'] + elif hasattr(os,'getuid') and os.getuid() == 0: # if ROOT + parmsRCFilename = os.path.abspath('/etc/mpd.conf') +- elif os.environ.has_key('HOME'): ++ elif os.environ.has_key('HOME') and os.access(os.path.join(os.environ['HOME'], '.mpd.conf'), os.R_OK): + parmsRCFilename = os.path.join(os.environ['HOME'],'.mpd.conf') + elif os.environ.has_key('HOMEPATH'): # e.g. win32 + parmsRCFilename = os.path.join(os.environ['HOMEPATH'],'.mpd.conf') +-- +1.6.3.3 + diff --git a/sys-cluster/mpich2/files/0002-mpd_conf_file-search-order.patch b/sys-cluster/mpich2/files/0002-mpd_conf_file-search-order.patch new file mode 100644 index 000000000000..2bb59e7c28cb --- /dev/null +++ b/sys-cluster/mpich2/files/0002-mpd_conf_file-search-order.patch @@ -0,0 +1,98 @@ +From c5c6b5677854d2e835ed7d8d0497ab4f475c63fc Mon Sep 17 00:00:00 2001 +From: Justin Bronder <jsbronder@gmail.com> +Date: Wed, 16 Sep 2009 11:50:20 -0400 +Subject: [PATCH 2/3] mpd_conf_file search order. + +Make sure the search order for mpd.conf is the following: + - MPD_CONF_FILE set in environment + - .mpd.conf in the user's home directory + - The system wide default in SYSCONFDIR/mpd.conf +--- + src/pm/mpd/Makefile.in | 9 ++++++--- + src/pm/mpd/mpdroot.c | 27 +++++++++++++++++++++++++-- + 2 files changed, 31 insertions(+), 5 deletions(-) + +diff --git a/src/pm/mpd/Makefile.in b/src/pm/mpd/Makefile.in +index e1752f8..4ef65fc 100644 +--- a/src/pm/mpd/Makefile.in ++++ b/src/pm/mpd/Makefile.in +@@ -74,7 +74,7 @@ mpdroot: ${mpdroot_OBJECTS} + $(C_LINK) -o mpdroot ${mpdroot_OBJECTS} $(LIBS) + + mpdroot.o: ${srcdir}/mpdroot.c ${srcdir}/mpdroot.h mpdconf.h +- ${C_COMPILE} -c $< ++ ${C_COMPILE} -DSYSCONFDIR=\"@sysconfdir@\" -c $< + + # The following lines provide the right libraries for all example programs + .c: +@@ -128,7 +128,10 @@ install: all + @echo "copying python files/links into " $(DESTDIR)${bindir} + -@for cmd in ${PYTHON_SOURCE} ; do \ + if [ ! -s $(srcdir)/$$cmd.py ] ; then continue ; fi ; \ +- sed -e 's#/usr/bin/env python.*#/usr/bin/env ${PYTHON}#' ${srcdir}/$$cmd.py > $(DESTDIR)${bindir}/temp$$cmd.py ; \ ++ sed \ ++ -e 's#/usr/bin/env python.*#/usr/bin/env ${PYTHON}#' \ ++ -e 's,/etc/mpd.conf,@sysconfdir@/mpd.conf,g' \ ++ ${srcdir}/$$cmd.py > $(DESTDIR)${bindir}/temp$$cmd.py ; \ + ${INSTALL} -m 755 $(DESTDIR)${bindir}/temp$$cmd.py $(DESTDIR)${bindir}/$$cmd.py; \ + ( rm -f $(DESTDIR)${bindir}/temp$$cmd.py >/dev/null 2>&1 || exit 0 ) ; \ + done +@@ -210,7 +213,7 @@ mpich2-mpdroot: mpich2-mpdroot.o + + mpich2-mpdroot.o: ${srcdir}/mpdroot.c ${srcdir}/mpdroot.h mpdconf.h + ${INSTALL} -m 644 ${srcdir}/mpdroot.c mpich2-mpdroot.c +- ${C_COMPILE} -c mpich2-mpdroot.c ++ ${C_COMPILE} -DSYSCONFDIR=\"@sysconfdir@\" -c mpich2-mpdroot.c + rm -f mpich2-mpdroot.c + + # A special alternate installation target when using multiple process managers +diff --git a/src/pm/mpd/mpdroot.c b/src/pm/mpd/mpdroot.c +index 348c7b6..1a4f2a5 100644 +--- a/src/pm/mpd/mpdroot.c ++++ b/src/pm/mpd/mpdroot.c +@@ -19,6 +19,7 @@ int main(int argc, char *argv[]) + struct passwd *pwent; + char input_line[NAME_LEN+1], secretword[NAME_LEN+1]; + FILE *conf_file; ++ char *mpdconf_path = NULL; + + if ((pwent = getpwuid(getuid())) == NULL) /* for real id */ + { +@@ -26,10 +27,32 @@ int main(int argc, char *argv[]) + exit(-1); + } + +- conf_file = fopen("/etc/mpd.conf","r"); ++ /* ++ * We look for a readable mpd.conf in the following order. ++ * - MPD_CONF_FILE set in environment ++ * - .mpd.conf in the user's home directory ++ * - The system wide default in SYSCONFDIR/mpd.conf ++ */ ++ mpdconf_path = getenv("MPD_CONF_FILE"); ++ if ( ! (mpdconf_path && access( mpdconf_path, R_OK ) == 0) ){ ++ /* By far, the largest we'll need */ ++ size_t mpdconf_path_len = strlen(pwent->pw_dir) \ ++ + strlen(SYSCONFDIR) + strlen("/.mpd.conf"); ++ ++ mpdconf_path = (char*) malloc( sizeof(char) * mpdconf_path_len ); ++ if ( ! mpdconf_path ){ ++ fprintf( stderr, "%s: Failed to allocate a buffer for path to mpd.conf\n", argv[0]); ++ exit(-1); ++ } ++ snprintf( mpdconf_path, mpdconf_path_len-1, "%s/.mpd.conf", pwent->pw_dir ); ++ if ( access( mpdconf_path, R_OK ) != 0 ) ++ snprintf( mpdconf_path, mpdconf_path_len-1, "%s/mpd.conf", SYSCONFDIR ); ++ } ++ conf_file = fopen( mpdconf_path, "r"); ++ + if (conf_file == NULL) + { +- printf("%s: open failed for root's mpd conf file",argv[0]); ++ printf("%s: open failed for root's mpd conf file\n",argv[0]); + exit(-1); + } + secretword[0] = '\0'; +-- +1.6.3.3 + diff --git a/sys-cluster/mpich2/files/0003-Fix-pkgconfig-for-mpich2-ch3.patch b/sys-cluster/mpich2/files/0003-Fix-pkgconfig-for-mpich2-ch3.patch new file mode 100644 index 000000000000..04be31337d5d --- /dev/null +++ b/sys-cluster/mpich2/files/0003-Fix-pkgconfig-for-mpich2-ch3.patch @@ -0,0 +1,36 @@ +From 06eaaf72d12ca70275fd4f403af14bcb2d609718 Mon Sep 17 00:00:00 2001 +From: Justin Bronder <jsbronder@gmail.com> +Date: Wed, 16 Sep 2009 11:59:57 -0400 +Subject: [PATCH 3/3] Fix pkgconfig for mpich2-ch3 + +Variables were undefined, see http://bugs.gentoo.org/257821 + +$ pkg-config --list-all +[lots of output, then] +Variable 'exec_prefix' not defined in '/usr/lib/pkgconfig/mpich2-ch3.pc' +--- + src/packaging/pkgconfig/mpich2-ch3.pc.in | 8 ++++++-- + 1 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/packaging/pkgconfig/mpich2-ch3.pc.in b/src/packaging/pkgconfig/mpich2-ch3.pc.in +index df10b7f..8621ef5 100644 +--- a/src/packaging/pkgconfig/mpich2-ch3.pc.in ++++ b/src/packaging/pkgconfig/mpich2-ch3.pc.in +@@ -1,8 +1,12 @@ + # this gives access to the mpich2 header files ++prefix=@prefix@ ++exec_prefix=@exec_prefix@ ++libdir=@libdir@ ++includedir=@includedir@ + + Name: mpich2 + Description: MPICH2 is an implementation of the Message-Passing Interface (MPI). The goals of MPICH2 are to provide an MPI implementation for important platforms, including clusters, SMPs, and massively parallel processors. It also provides a vehicle for MPI implementation research and for developing new and better parallel programming environments. + Version: @VERSION@ + Requires: +-Libs: -L@libdir@ -lmpich -lmpichcxx @LIBS@ +-Cflags: @CFLAGS@ -I@includedir@ -DMPICH_IGNORE_CXX_SEEK ++Libs: -L${libdir} -lmpich -lmpichcxx @LIBS@ ++Cflags: @CFLAGS@ -I${includedir} -DMPICH_IGNORE_CXX_SEEK +-- +1.6.3.3 + diff --git a/sys-cluster/mpich2/mpich2-1.1.1_p1.ebuild b/sys-cluster/mpich2/mpich2-1.1.1_p1.ebuild new file mode 100644 index 000000000000..915309a206fb --- /dev/null +++ b/sys-cluster/mpich2/mpich2-1.1.1_p1.ebuild @@ -0,0 +1,189 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-cluster/mpich2/mpich2-1.1.1_p1.ebuild,v 1.1 2009/09/17 19:43:05 jsbronder Exp $ + +EAPI=1 +inherit eutils fortran +MY_PV=${PV/_/} +DESCRIPTION="MPICH2 - A portable MPI implementation" +HOMEPAGE="http://www-unix.mcs.anl.gov/mpi/mpich2" +SRC_URI="http://www.mcs.anl.gov/research/projects/mpich2/downloads/tarballs/${MY_PV}/${PN}-${MY_PV}.tar.gz" + +LICENSE="as-is" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~ppc64 ~x86" +IUSE="+cxx debug doc fortran pvfs2 threads romio mpi-threads" + +COMMON_DEPEND="dev-lang/perl + >=dev-lang/python-2.3 + romio? ( net-fs/nfs-utils ) + pvfs2? ( >=sys-cluster/pvfs2-2.7.0 ) + dev-libs/libaio + !media-sound/mpd + !sys-cluster/mpiexec + !sys-cluster/openmpi + !sys-cluster/lam-mpi + !sys-cluster/mpich" + +DEPEND="${COMMON_DEPEND} + sys-devel/libtool" + +RDEPEND="${COMMON_DEPEND} + net-misc/openssh" + +S="${WORKDIR}"/${PN}-${MY_PV} + +pkg_setup() { + if [ -n "${MPICH_CONFIGURE_OPTS}" ]; then + elog "User-specified configure options are ${MPICH_CONFIGURE_OPTS}." + else + elog "User-specified configure options are not set." + elog "If needed, see the docs and set MPICH_CONFIGURE_OPTS." + fi + + if use fortran ; then + FORTRAN="g77 gfortran ifort ifc" + fortran_pkg_setup + fi + + if use mpi-threads && ! use threads; then + die "USE=mpi-threads requires USE=threads" + fi + + MPD_CONF_FILE_DIR=/etc/${PN} +} + +src_unpack() { + unpack ${A} + cd "${S}" + + # A lot of these patches touch Makefile.in and configure files. + # While it would be nice to regenerate everything, mpich2 uses + # simplemake instead of automake, so we're doing this for now + # and hoping for a receptive upstream. + + # #220877 + sed -i 's/-fpic/-fPIC/g' \ + $(grep -lr -e '-fpic' "${S}"/) || die "failed to change -fpic to -fPIC" + + # TODO: None of this has been sent upstream yet. + epatch "${FILESDIR}"/0001-MPD_CONF_FILE-should-be-readable.patch + epatch "${FILESDIR}"/0002-mpd_conf_file-search-order.patch + epatch "${FILESDIR}"/0003-Fix-pkgconfig-for-mpich2-ch3.patch + + # We need f90 to include the directory with mods, and to + # fix hardcoded paths for src_test() + sed -i \ + -e "s,F90FLAGS\( *\)=,F90FLAGS\1?=," \ + -e "s,\$(bindir)/,${S}/bin/,g" \ + -e "s,@MPIEXEC@,${S}/bin/mpiexec,g" \ + $(find ./test/ -name 'Makefile.in') || die + + if ! use romio; then + # These tests in errhan/ rely on MPI::File ...which is in romio + echo "" > test/mpi/errors/cxx/errhan/testlist + fi +} + +src_compile() { + local c="${MPICH_CONFIGURE_OPTS} --enable-sharedlibs=gcc" + local romio_conf + + # 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. + + use debug && c="${c} --enable-g=all --enable-debuginfo" + + if use threads ; then + c="${c} --with-thread-package=pthreads" + else + c="${c} --with-thread-package=none" + fi + + # enable f90 support for appropriate compilers + case "${FORTRANC}" in + gfortran|if*) + c="${c} --enable-f77 --enable-f90";; + g77) + c="${c} --enable-f77 --disable-f90";; + esac + + if use mpi-threads; then + c="${c} --enable-threads=default" + else + c="${c} --enable-threads=single" + fi + + if use pvfs2; then + # nfs and ufs are defaults in 1.0.8 at least. + romio_conf="--with-file-system=pvfs2+nfs+ufs --with-pvfs2=/usr" + fi + + c="${c} --sysconfdir=/etc/${PN}" + econf ${c} ${romio_conf} \ + --docdir=/usr/share/doc/${PF} \ + --with-pm=mpd:gforker \ + --disable-mpe \ + $(use_enable romio) \ + $(use_enable cxx) \ + || die + # Oh, the irony. + # http://wiki.mcs.anl.gov/mpich2/index.php/Frequently_Asked_Questions#Q:_The_build_fails_when_I_use_parallel_make. + # https://trac.mcs.anl.gov/projects/mpich2/ticket/297 + emake -j1 || die +} + +src_test() { + local rc + + cp "${FILESDIR}"/mpd.conf "${T}"/mpd.conf || die + chmod 600 "${T}"/mpd.conf + export MPD_CONF_FILE="${T}/mpd.conf" + "${S}"/bin/mpd --daemon --pid="${T}"/mpd.pid + + make \ + CC="${S}"/bin/mpicc \ + CXX="${S}"/bin/mpicxx \ + FC="${S}"/bin/mpif77 \ + F90="${S}"/bin/mpif90 \ + F90FLAGS="${F90FLAGS} -I${S}/src/binding/f90/" \ + testing + rc=$? + + "${S}"/bin/mpdallexit || kill $(<"${T}"/mpd.pid) + return ${rc} +} + +src_install() { + emake DESTDIR="${D}" install || die + + dodir ${MPD_CONF_FILE_DIR} + insinto ${MPD_CONF_FILE_DIR} + doins "${FILESDIR}"/mpd.conf || die + + dodir /usr/share/doc/${PF} + dodoc COPYRIGHT README CHANGES RELEASE_NOTES || die + newdoc src/pm/mpd/README README.mpd || die + if use romio; then + newdoc src/mpi/romio/README README.romio || die + fi + + if ! use doc; then + rm -rf "${D}"/usr/share/doc/www* + else + dodir /usr/share/doc/${PF}/www + mv "${D}"/usr/share/doc/www*/* "${D}"/usr/share/doc/${PF}/www/ + fi +} + +pkg_postinst() { + # Here so we can play with ebuild commands as a normal user + chown root:root "${ROOT}"${MPD_CONF_FILE_DIR}/mpd.conf + chmod 600 "${ROOT}"${MPD_CONF_FILE_DIR}/mpd.conf + + elog "" + elog "MPE2 has been removed from this ebuild and now stands alone" + elog "as sys-cluster/mpe2." + elog "" +} |