From 146ff906788f9135721c50bf37bfe5b6dfcbc121 Mon Sep 17 00:00:00 2001 From: Christoph Niethammer Date: Fri, 14 Jan 2011 09:00:56 +0000 Subject: [PATCH] Added Open MPI installation script --- openmpi_install.sh | 151 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100755 openmpi_install.sh diff --git a/openmpi_install.sh b/openmpi_install.sh new file mode 100755 index 0000000..507ec8e --- /dev/null +++ b/openmpi_install.sh @@ -0,0 +1,151 @@ +#!/bin/sh +# installation script for Open MPI +# +# Christoph Niethammer (C) 2011 +# + +# exit on any error! +set -e + +# directory containing the source tar files +SRC_POOL="$HOME/src" + +# basic installation directory +PREFIX_BASE=${PREFIX_BASE:=$HOME/bin} + +# compiler to use +# (gnu|intel|pgi) +COMPILER=${COMPILER:=gnu} +# use specific compiler version +COMPILER_VERSION=${COMPILER_VERSION:=} + +# package to build +CATEGORY="mpi" +PACKAGE="openmpi" +VERSION="1.5.1" + +# add a descriptor at the end of the installation path e.g. for special config options etc. +PACKAGE_DESCRIPTOR=${PACKAGE_DESCRIPTOR:+-$PACKAGE_DESCRIPTOR} + +# Archive A and package name P +# archive can be tar.bz2 or tar.gz file +A=${PACKAGE}-${VERSION}.tar.bz2 +P=${PACKAGE}-${VERSION} + +# If you want to use the CC, CXX, FC or F77 variables for the compilers put the following +# below the compiler loading section! +# Other interesting configure options: +# --enable-mpi-threads +# --enable-progress-threads +# --with-fca=DIR +CONFIGURE_OPTS="--with-devel-headers \ + --enable-debug \ + --enable-contrib-no-build=vt + --enable-shared \ + --enable-static \ + " +MAKEOPTS="-j2" + + +# Compiler specifications + +if [ "x${COMPILER_VERSION}" != "x" ] +then + COMPILER_MODULE=compiler/${COMPILER}/${COMPILER_VERSION} +else + COMPILER_MODULE=compiler/${COMPILER} +fi + +echo "Loading compiler module ${COMPILER_MODULE}" +module load ${COMPILER_MODULE} + +case ${COMPILER} in + gnu) + COMPILER_OPTS="CC=gcc CXX=g++ FC=gfortran F77=gfortran" + COMPILER_VERSION=$(gcc -dumpversion) + ;; + intel) + COMPILER_OPTS="CC=icc CXX=icpc FC=ifort F77=ifort" + COMPILER_VERSION=$(icc -dumpversion) + ;; + pgi) + COMPILER_OPTS="CC=pgcc CXX=pgCC FC=pgf95 F77=pgf77" + COMPILER_VERSION=$(pgcc -V | awk '/pgcc/{print $2}') + ;; + *) + echo "Unknown compiler ${COMPILER}." + ;; +esac +# make the compiler variables CC, CXX, FC and F77 available +export ${COMPILER_OPTS} + +# construct the final installation directory path +PREFIX="${PREFIX_BASE}/${CATEGORY}/${PACKAGE}/${VERSION}-${COMPILER}-${COMPILER_VERSION}${PACKAGE_DESCRIPTOR}" + +# basepath for the working directory +ORIGDIR="${HOME}/work" +# final working directory path +WORKDIR=${ORIGDIR}/${CATEGORY}/${PACKAGE}/${VERSION}-${COMPILER}-${COMPILER_VERSION}${PACKAGE_DESCRIPTOR} +# path to the source code directory +SRCDIR=${WORKDIR}/${P} +# build directory (should be different from source directory): +BUILDDIR=${SRCDIR}/build + +echo "Using workir $WORKDIR" +echo "Building with PREFIX=$PREFIX" + +umask 0002 + + +if [ -d ${WORKDIR} ] +then + rm -rf ${WORKDIR} +fi + +echo "Creating working dir ${WORKDIR}" +mkdir -p ${WORKDIR} +cd ${WORKDIR} + +echo "Extracting sources" +case "${A##*.}" in + bz2) + tar xfjv ${SRC_POOL}/${A} + ;; + gz) + tar xfzv ${SRC_POOL}/${A} + ;; + *) + echo "Archive format not recogized" + exit + ;; +esac + + +mkdir ${BUILDDIR} +cd ${BUILDDIR} +echo "Running configure" +${SRCDIR}/configure --prefix=${PREFIX} ${CONFIGURE_OPTS} ${COMPILER_OPTS} 2>&1 | tee configure.log +echo "Running make" +make ${MAKEOPTS} 2>&1 | tee make.log + +module unload compiler + +cat <&1 | tee make_install.log +bzip2 *.log +mv *.log.bz2 ${PREFIX}/ +cd ${PREFIX} +chmod -R g+rwX . +chmod -R o+rX . +# Finally do not forget to provide a module file! +############################################################################## +EOF + +exit 0 +