#!/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