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

%help
A singularity container for PMSCO.

singularity run -e pmsco.sif path/to/pmsco -r path/to/your-runfile

path/to/pmsco must point to the directory that contains the __main__.py file.

#%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 LC_ALL=C
    export PYTHON_VERSION=3
    export CONDA_ROOT=/opt/miniconda
    export PLANTUML_JAR_PATH=/opt/plantuml/plantuml.jar
    export SINGULAR_BRANCH="singular"

%post
    export LC_ALL=C
    export PYTHON_VERSION=3
    export CONDA_ROOT=/opt/miniconda
    export PLANTUML_ROOT=/opt/plantuml

    sed -i 's/$/ universe/' /etc/apt/sources.list
    apt-get update
    apt-get -y install \
        binutils \
        build-essential \
        default-jre \
        doxygen \
        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 ${CONDA_ROOT}

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

    mkdir ${PLANTUML_ROOT}
    wget -O ${PLANTUML_ROOT}/plantuml.jar https://sourceforge.net/projects/plantuml/files/plantuml.jar/download

#%test
# test the image after build

%runscript
    . ${CONDA_ROOT}/etc/profile.d/conda.sh
    conda activate pmsco
    exec python "$@"

%apprun install
    . ${CONDA_ROOT}/etc/profile.d/conda.sh
    conda activate pmsco
    cd ~
    git clone https://git.psi.ch/pearl/pmsco.git pmsco
    cd pmsco
    git checkout master
    git checkout -b ${SINGULAR_BRANCH}

    make all
    nosetests -w tests/

%apprun compile
    . ${CONDA_ROOT}/etc/profile.d/conda.sh
    conda activate pmsco
    make all
    nosetests
