From 69530d2a435d3c20ef3af10a7cb298c0b50e39ea Mon Sep 17 00:00:00 2001 From: Christoph Niethammer Date: Thu, 20 Jan 2011 11:08:56 +0000 Subject: [PATCH] Added install script for BSCs extrae. --- extrae_install.sh | 180 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100755 extrae_install.sh diff --git a/extrae_install.sh b/extrae_install.sh new file mode 100755 index 0000000..a2d1be4 --- /dev/null +++ b/extrae_install.sh @@ -0,0 +1,180 @@ +#!/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:=} +# mpi library to use +# (openmpi) +MPI=${MPI:=openmpi} + +# package to build +CATEGORY="performance" +PACKAGE="extrae" +VERSION="2.1.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.gz +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! + + +# Compiler specifications + +if [ "x${COMPILER_VERSION}" != "x" ] +then + COMPILER_MODULE=compiler/${COMPILER}/${COMPILER_VERSION} +else + COMPILER_MODULE=compiler/${COMPILER} +fi + +if [ "x${MPI}" != "x" ] +then + if [ "x${MPI_VERSION}" != "x" ] + then + MPI_MODULE=mpi/${MPI}/${MPI_VERSION}-${COMPILER}-${COMPILER_VERSION} + else + echo "Error: If MPI is specified MPI_VERSION must be given, too." + exit 1 + fi +fi + +echo "Loading compiler module ${COMPILER_MODULE}" +module load ${COMPILER_MODULE} +echo "Loading mpi module ${MPI_MODULE}" +module load ${MPI_MODULE} + +case ${COMPILER} in + gnu) + COMPILER_OPTS="CC=gcc CXX=g++ FC=gfortran F77=gfortran" + if [ "x${COMPILER_VERSION}" == "x" ] + then + COMPILER_VERSION=$(gcc -dumpversion) + fi + ;; + intel) + COMPILER_OPTS="CC=icc CXX=icpc FC=ifort F77=ifort" + if [ "x${COMPILER_VERSION}" == "x" ] + then + COMPILER_VERSION=$(icc -dumpversion) + fi + ;; + pgi) + COMPILER_OPTS="CC=pgcc CXX=pgCC FC=pgf95 F77=pgf77" + if [ "x${COMPILER_VERSION}" == "x" ] + then + COMPILER_VERSION=$(pgcc -V | awk '/pgcc/{print $2}') + fi + ;; + *) + echo "Unknown compiler ${COMPILER}." + ;; +esac +# make the compiler variables CC, CXX, FC and F77 available +export ${COMPILER_OPTS} + +MPI_DIR=$(dirname $(dirname $(which mpicc))) +# use papi +module load system/perfctr system/papi +PAPI_DIR=$(dirname $(dirname $(which papi_avail))) + +# Other interesting configure options: +# --with-papi=$PAPI_DIR \ +# --enable-sampling +CONFIGURE_OPTS="\ + --with-mpi=$MPI_DIR \ + " +MAKEOPTS="-j8" + +# construct the final installation directory path +PREFIX="${PREFIX_BASE}/${CATEGORY}/${PACKAGE}/${VERSION}-${MPI}-${MPI_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 +# extrae 2.1.1 has problems when building in a seperate build directory so we use srcdir +BUILDDIR=${SRCDIR} + +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|tgz) + tar xfzv ${SRC_POOL}/${A} + ;; + *) + echo "Archive format not recogized" + exit + ;; +esac + + +mkdir -p ${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 +