summaryrefslogtreecommitdiff
path: root/testing/openmpi
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2012-03-31 00:01:07 +0000
committerroot <root@rshg054.dnsready.net>2012-03-31 00:01:07 +0000
commit977b78df305a06797773799a7295f2a5f3f013cf (patch)
treec2cad20a10da5fe8f8784db13a2d52b80d0199a3 /testing/openmpi
parent263884f95012e159a0be10444ef96bbf56e70545 (diff)
Sat Mar 31 00:01:07 UTC 2012
Diffstat (limited to 'testing/openmpi')
-rw-r--r--testing/openmpi/PKGBUILD67
-rw-r--r--testing/openmpi/openmpi-1.5.4-fix-fakeroot-execution.patch43
2 files changed, 110 insertions, 0 deletions
diff --git a/testing/openmpi/PKGBUILD b/testing/openmpi/PKGBUILD
new file mode 100644
index 000000000..4b462b7b7
--- /dev/null
+++ b/testing/openmpi/PKGBUILD
@@ -0,0 +1,67 @@
+# $Id: PKGBUILD 154489 2012-03-29 09:52:47Z stephane $
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+pkgname=openmpi
+pkgver=1.5.5
+pkgrel=1
+pkgdesc="High performance message passing library (MPI)"
+arch=('i686' 'x86_64')
+url="http://www.open-mpi.org"
+license=('custom')
+depends=('gcc' 'gcc-fortran' 'openssh' 'valgrind' 'libtool' 'hwloc')
+makedepends=('inetutils')
+options=(!libtool)
+source=(http://www.open-mpi.org/software/ompi/v1.5/downloads/${pkgname}-${pkgver}.tar.bz2
+ openmpi-1.5.4-fix-fakeroot-execution.patch)
+sha1sums=('206e555f6d376443f2342f721d944e67dd1a04ef'
+ 'ec46abb6f9e01daca910e4079b9abc036db9ed20')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # Fix fakeroot problem (FS#28644)
+ patch -Np1 -i ../openmpi-1.5.4-fix-fakeroot-execution.patch
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc/${pkgname} \
+ --mandir=/usr/share/man \
+ --enable-mpi-f90 \
+ --libdir=/usr/lib/${pkgname} \
+ --with-threads=posix \
+ --enable-smp-locks \
+ --with-valgrind \
+ --enable-memchecker \
+ --enable-debug \
+ --enable-pretty-print-stacktrace \
+ --without-slurm \
+ --with-hwloc=/usr \
+ --with-libltdl=/usr \
+ FC=/usr/bin/gfortran \
+ LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
+
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ # FS#28583
+ install -d -m 755 "${pkgdir}"/usr/lib/pkgconfig
+ for i in ompi-c.pc ompi-cxx.pc ompi-f77.pc ompi-f90.pc ompi.pc; do
+ ln -sf /usr/lib/openmpi/pkgconfig/$i "${pkgdir}"/usr/lib/pkgconfig/
+ done
+
+ # Openmpi's otfinfo conflicts with the one from texlive
+ mv "${pkgdir}"/usr/bin/otfinfo{,mpi}
+
+ # Openmpi's otfdump conflicts with the one from libotf
+ mv "${pkgdir}"/usr/bin/otfdump{,ompi}
+
+ # Remove dangling symlink
+ rm "${pkgdir}"/usr/share/man/man1/orteCC.1
+
+ install -d -m 755 "${pkgdir}"/etc/ld.so.conf.d
+ echo "/usr/lib/${pkgname}" > "${pkgdir}"/etc/ld.so.conf.d/${pkgname}.conf
+
+ install -Dm644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/testing/openmpi/openmpi-1.5.4-fix-fakeroot-execution.patch b/testing/openmpi/openmpi-1.5.4-fix-fakeroot-execution.patch
new file mode 100644
index 000000000..dc9dcfeae
--- /dev/null
+++ b/testing/openmpi/openmpi-1.5.4-fix-fakeroot-execution.patch
@@ -0,0 +1,43 @@
+Description: If running under Debian fakeroot then its important
+ that this hook is disabled; a new stat check was introduced in
+ 1.5.x which preceeds the FAKEROOT check resulting in a SEGFAULT.
+Author: James Page <james.page@ubuntu.com>
+Origin: https://svn.open-mpi.org/trac/ompi/changeset/21489
+
+Index: openmpi-1.5.4/opal/mca/memory/linux/hooks.c
+===================================================================
+--- openmpi-1.5.4.orig/opal/mca/memory/linux/hooks.c 2012-02-15 12:59:39.986314651 +0000
++++ openmpi-1.5.4/opal/mca/memory/linux/hooks.c 2012-02-15 13:14:57.744722517 +0000
+@@ -738,15 +738,6 @@
+ check_result_t r1, r2, lp, lpp;
+ bool want_rcache = false, found_driver = false;
+
+- /* First, check if ummunotify is present on the system. If it is,
+- then we don't need to do the following ptmalloc2 hacks.
+- open/mmap on the device may fail during init, but if /dev/ummunotify
+- exists, we assume that the user/administrator *wants* to use
+- ummunotify. */
+- if (stat("/dev/ummunotify", &st) == 0) {
+- return;
+- }
+-
+ /* Yes, checking for an MPI MCA parameter here is an abstraction
+ violation. Cope. Yes, even checking for *any* MCA parameter
+ here (without going through the MCA param API) is an
+@@ -769,6 +760,15 @@
+ return;
+ }
+
++ /* Next, check if ummunotify is present on the system. If it is,
++ then we don't need to do the following ptmalloc2 hacks.
++ open/mmap on the device may fail during init, but if /dev/ummunotify
++ exists, we assume that the user/administrator *wants* to use
++ ummunotify. */
++ if (stat("/dev/ummunotify", &st) == 0) {
++ return;
++ }
++
+ /* Look for sentinel files (directories) to see if various network
+ drivers are loaded (yes, I know, further abstraction
+ violations...).
+