BootStrap: docker
From: library/centos:7

%post
        yum -y install epel-release
        yum -y update
        yum -y install vim-enhanced \
            ccache gcc-c++ gcc-gfortran clang gdb valgrind-openmpi \
            make cmake3 ninja-build patch which file git Lmod \
            libpng-devel libjpeg-devel openmpi-devel mpich-devel python-devel python36-devel \
            hdf5-devel python36-virtualenv python36-pip python-pip readline-devel \
            netcdf-devel netcdf-cxx-devel netcdf-mpich-devel netcdf-openmpi-devel \
            python-virtualenv fftw-devel voro++-devel eigen3-devel gsl-devel openblas-devel enchant \
            blas-devel lapack-devel libyaml-devel openkim-models kim-api-devel zstd libzstd-devel \
            yaml-cpp-devel
        yum clean all

        # we need to reset any module variables
        # inherited from the host.
        unset __LMOD_REF_COUNT__LMFILES_
        unset __LMOD_REF_COUNT_PATH
        unset __LMOD_REF_COUNT_LD_LIBRARY_PATH
        unset __LMOD_REF_COUNT_MANPATH
        unset __LMOD_REF_COUNT_MODULEPATH
        unset __LMOD_REF_COUNT_LOADEDMODULES
        unset _LMFILES_
        unset MODULEPATH
        unset MODULESHOME
        unset MODULEPATH_ROOT
        unset LOADEDMODULES
        unset LMOD_SYSTEM_DEFAULT_MODULES

        # load MPI by default
        . /etc/profile
        module load mpi

        # manually install Plumed
        mkdir plumed
        cd plumed
        version=2.8.2
        curl -L -o plumed.tar.gz https://github.com/plumed/plumed2/releases/download/v${version}/plumed-src-${version}.tgz
        tar -xzf plumed.tar.gz
        cd plumed-${version}
        ./configure --disable-doc --prefix=/usr
        make
        make install
        # fix up installation for CentOS and Fedora
        mv -v /usr/lib/pkgconfig/plumed* /usr/share/pkgconfig/
        cd ../../
        rm -rvf plumed

        # create missing readline pkgconfig file
        cat > /usr/lib64/pkgconfig/readline.pc <<EOF
prefix=/usr
exec_prefix=/usr
libdir=/usr/lib64
includedir=/usr/include

Name: Readline
Description: GNU Readline library for command line editing
URL: http://tiswww.cwru.edu/php/chet/readline/rltop.html
Version: 6.2
Requires.private: ncurses
Libs: -L\${libdir} -lreadline
Cflags: -I\${includedir}/readline
EOF
        # set custom prompt indicating the container name
        CUSTOM_PROMPT_ENV=/.singularity.d/env/99-zz_custom_prompt.sh
        cat >$CUSTOM_PROMPT_ENV <<EOF
#!/bin/bash
PS1="[centos7:\u@\h] \W> "
EOF
        chmod 755 $CUSTOM_PROMPT_ENV


%environment
        LC_ALL=C
        export LC_ALL

        # we need to reset any module variables
        # inherited from the host.
        unset __LMOD_REF_COUNT__LMFILES_
        unset __LMOD_REF_COUNT_PATH
        unset __LMOD_REF_COUNT_LD_LIBRARY_PATH
        unset __LMOD_REF_COUNT_MANPATH
        unset __LMOD_REF_COUNT_MODULEPATH
        unset __LMOD_REF_COUNT_LOADEDMODULES
        unset _LMFILES_
        unset MODULEPATH
        unset MODULESHOME
        unset MODULEPATH_ROOT
        unset LOADEDMODULES
        unset LMOD_SYSTEM_DEFAULT_MODULES

        # load MPI by default
        . /etc/profile
        module load mpi
        # tell OpenMPI to not try using Infiniband
        OMPI_MCA_btl="^openib"
        # do not warn about unused components as this messes up testing
        OMPI_MCA_btl_base_warn_component_unused="0"
        export OMPI_MCA_btl OMPI_MCA_btl_base_warn_component_unused

%labels
        Author akohlmey, rbberger
