BootStrap: debootstrap
OSVersion: bionic
MirrorURL: http://ch.archive.ubuntu.com/ubuntu/

%help
a singularity container for PMSCO.

git clone requires an ssh key for git.psi.ch.
try agent forwarding (-A option to ssh).

#%setup
# executed on the host system outside of the container before %post
#
# this will be inside the container
#    touch ${SINGULARITY_ROOTFS}/tacos.txt
# this will be on the host
#    touch avocados.txt

#%files
# files are copied before %post
#
# this copies to root
#    avocados.txt
# this copies to /opt
#    avocados.txt /opt
#
# this does not work
#    ~/.ssh/known_hosts /etc/ssh/ssh_known_hosts
#    ~/.ssh/id_rsa /etc/ssh/id_rsa

%labels
    Maintainer Matthias Muntwiler
    Maintainer_Email matthias.muntwiler@psi.ch
    Python_Version 3

%environment
    export PATH="/usr/local/miniconda3/bin:$PATH"
    export PYTHON_VERSION=3
    export SINGULAR_BRANCH="singular"
    export LC_ALL=C

%post
    export PYTHON_VERSION=3
    export LC_ALL=C

    sed -i 's/$/ universe/' /etc/apt/sources.list
    apt-get update
    apt-get -y install \
        binutils \
        build-essential \
        doxygen \
        doxypy \
        f2c \
        g++ \
        gcc \
        gfortran \
        git \
        graphviz \
        libblas-dev \
        liblapack-dev \
        libopenmpi-dev \
        make \
        openmpi-bin \
        openmpi-common \
        sqlite3 \
        wget
    apt-get clean

    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh
    bash ~/miniconda.sh -b -p /usr/local/miniconda3
    export PATH="/usr/local/miniconda3/bin:$PATH"

    conda create -q --yes -n pmsco python=${PYTHON_VERSION}
    . /usr/local/miniconda3/bin/activate pmsco
    conda install -q --yes -n pmsco \
        pip \
        "numpy>=1.13" \
        scipy \
        ipython \
        mpi4py \
        matplotlib \
        nose \
        mock \
        future \
        statsmodels \
        swig
    conda clean --all -y
    /usr/local/miniconda3/envs/pmsco/bin/pip install periodictable attrdict fasteners


#%test
# test the image after build

%runscript
    # executes command from command line
    source /usr/local/miniconda3/bin/activate pmsco
    exec echo "$@"

%apprun install
    source /usr/local/miniconda3/bin/activate pmsco
    cd ~
    git clone https://git.psi.ch/pearl/pmsco.git pmsco
    cd pmsco
    git checkout develop
    git checkout -b ${SINGULAR_BRANCH}

    make all
    nosetests

%apprun python
    source /usr/local/miniconda3/bin/activate pmsco
    exec python "${@}"

%apprun conda
    source /usr/local/miniconda3/bin/activate pmsco
    exec conda "${@}"

