diff --git a/packages/performance/papi_install.sh b/packages/performance/papi_install.sh new file mode 100755 index 0000000..8c253ff --- /dev/null +++ b/packages/performance/papi_install.sh @@ -0,0 +1,164 @@ +#!/bin/sh +# installation script for Papi +# +# Christoph Niethammer 2011 +# Rainer Kelelr 2011 +# + +# exit on any error! +set -e + +# directory containing the source tar files +SRC_POOL="$HOME/WORK" + +# basic installation directory +PREFIX_BASE=${PREFIX_BASE:=$HOME} + +# compiler to use +# (gnu|intel|pgi) +COMPILER=${COMPILER:=gnu} +# use specific compiler version +COMPILER_VERSION=${COMPILER_VERSION:=} + +# package to build +CATEGORY="system" +PACKAGE="papi" +VERSION="4.1.2.1a" + +# 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} + +echo "Loading perctr module" +module load system/perfctr +# Figure out Root directory of perfctr +TMP1=`which perfex` +TMP2=`dirname $TMP1` +PERFCTR_PREFIX=`dirname $TMP2` + + +# If you want to use the CC, CXX, FC or F77 variables for the compilers put the following +# below the compiler loading section! +CONFIGURE_OPTS="--with-perfctr-prefix=$PERFCTR_PREFIX --with-CPU=i7" +# ATTENTION: Do NOT compile with -j2 -- it will stopp in src/util with a dependence on ../libpapi.a +MAKEOPTS="" + + +# 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" + 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} + +# construct the final installation directory path +# PREFIX="${PREFIX_BASE}/${CATEGORY}/${PACKAGE}/${VERSION}-${COMPILER}-${COMPILER_VERSION}${PACKAGE_DESCRIPTOR}" +PREFIX="${PREFIX_BASE}/${CATEGORY}/${PACKAGE}/${VERSION}" + +# basepath for the working directory +ORIGDIR="${HOME}/WORK" +# final working directory path +WORKDIR=${ORIGDIR}/${CATEGORY}/${PACKAGE}/${VERSION} +# path to the source code directory +SRCDIR=${WORKDIR}/${P} +SUBDIR=src +# build directory (should be different from source directory): +BUILDDIR=${SRCDIR}/COMPILE + +echo "Using workir $WORKDIR" +echo "Building with PREFIX=$PREFIX" + +umask 0002 + + +if [ -d ${WORKDIR} ] +then +# rm -rf ${WORKDIR} + echo rm -rf ${WORKDIR} +fi + +echo "Creating working dir ${WORKDIR}" +mkdir -p ${WORKDIR} +cd ${WORKDIR} + +echo "Extracting sources" +case "${A##*.}" in + bz2) + tar -xjf ${SRC_POOL}/${A} + ;; + gz|tgz) + tar -xzf ${SRC_POOL}/${A} + ;; + *) + echo "Archive format not recogized" + exit + ;; +esac + + +echo "Running configure in ${SRCDIR}/${SUBDIR}" +cd ${SRCDIR}/${SUBDIR} +./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 +