FROM opensuse/leap

LABEL maintainer="a.ellery@uq.edu.au"

WORKDIR /home
RUN zypper update -y && RUN zypper install -y python3-devel python3-numpy\
      python3-sympy python3-matplotlib python3-scipy \
      libboost_iostreams1_66_0-devel libboost_numpy-py3-1_66_0-devel  \
      libboost_python-py3-1_66_0-devel libboost_random1_66_0-devel \
      libnetcdf_c++-devel libnetcdf_c++4-devel libnetcdf_c++-devel  \
      suitesparse-devel blas-devel metis-devel lapack-devel \
      git gcc gcc-c++ gcc-fortran scons make cmake wget tar gzip libopenmpi3-gnu-hpc mumps-devel && \
      zypper cc
RUN wget https://github.com/trilinos/Trilinos/archive/trilinos-release-13-0-1.tar.gz && \
      tar zxvf trilinos-release-13-0-1.tar.gz && \
      rm trilinos-release-13-0-1.tar.gz 
WORKDIR trilinos_build 
RUN cmake \
      -D CMAKE_C_COMPILER=/usr/bin/gcc \
      -D CMAKE_CXX_COMPILER=/usr/bin/g++ \
      -D CMAKE_Fortran_COMPILER=/usr/bin/gfortran \
      -D PYTHON_EXECUTABLE=/usr/bin/python3 \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D Trilinos_ENABLE_CXX11=ON \
      -D CMAKE_C_FLAGS=' -w -fopenmp' \
      -D CMAKE_CXX_FLAGS=' -w -fopenmp'\
      -D Trilinos_ENABLE_Fortran=ON \
      -D BUILD_SHARED_LIBS=ON \
      -D TPL_ENABLE_BLAS=ON \
      -D TPL_ENABLE_Boost=ON \
      -D TPL_ENABLE_Cholmod=ON \
      -D TPL_ENABLE_LAPACK=ON \
      -D TPL_ENABLE_METIS=ON \
      -D TPL_ENABLE_SuperLU=OFF \
      -D TPL_ENABLE_UMFPACK=ON \
      -D TPL_ENABLE_SCALAPACK=OFF \
      -D TPL_ENABLE_ParMETIS=OFF \
      -D TPL_ENABLE_MUMPS=ON \
      -D TPL_BLAS_INCLUDE_DIRS=/usr/include/suitesparse \
      -D TPL_Cholmod_INCLUDE_DIRS=/usr/include/suitesparse \
      -D TPL_Cholmod_LIBRARIES='libcholmod.so;libamd.so;libcolamd.so' \
      -D TPL_UMFPACK_INCLUDE_DIRS=/usr/include/suitesparse \
      -D TPL_Boost_INCLUDE_DIRS=/usr/local/boost/include \
      -D TPL_ParMETIS_INCLUDE_DIRS='/usr/lib64/mpi/gcc/openmpi3/include' \
      -D TPL_ParMETIS_LIBRARY_DIRS='/usr/lib64/mpi/gcc/openmpi3/lib64/,/usr/lib64' \
      -D TPL_SCALAPACK_INCLUDE_DIRS='/usr/lib64/mpi/gcc/openmpi3/include/' \
      -D TPL_SCALAPACK_LIBRARY_DIRS='/usr/lib64/mpi/gcc/openmpi3/lib64/' \
      -D TPL_MUMPS_INCLUDE_DIRS='/usr/include' \
      -D TPL_MUMPS_LIBRARY_DIRS='/usr/lib64' \
      -D Trilinos_ENABLE_Amesos=ON \
      -D Trilinos_ENABLE_Amesos2=ON \
      -D Trilinos_ENABLE_AztecOO=ON \
      -D Trilinos_ENABLE_Belos=ON \
      -D Trilinos_ENABLE_Ifpack=ON \
      -D Trilinos_ENABLE_Ifpack2=ON \
      -D Trilinos_ENABLE_Kokkos=ON \
      -D Trilinos_ENABLE_Komplex=ON \
      -D Trilinos_ENABLE_ML=ON \
      -D Trilinos_ENABLE_MueLu=ON \
      -D Trilinos_ENABLE_Teuchos=ON \
      -D Trilinos_ENABLE_Tpetra=ON \
      -D Trilinos_ENABLE_ALL_OPTIONAL_PACKAGES=ON \
      -D Kokkos_ENABLE_AGGRESSIVE_VECTORIZATION=ON \
      -D Tpetra_INST_COMPLEX_DOUBLE=ON \
      -D Trilinos_ENABLE_COMPLEX_DOUBLE=ON \
      -D Teuchos_ENABLE_COMPLEX=ON \
      -D Tpetra_INST_INT_INT=ON \
      -D Tpetra_ENABLE_DEPRECATED_CODE=ON \
      -D Trilinos_ENABLE_OpenMP=ON \
      -D Trilinos_ENABLE_MPI=ON \
      -D Trilinos_ENABLE_EXPLICIT_INSTANTIATION=ON \
      -D Kokkos_ENABLE_COMPILER_WARNINGS=ON \
      -D Amesos2_ENABLE_Basker=ON \
      -D Tpetra_INST_SERIAL:BOOL=ON \
      -D Trilinos_ENABLE_TESTS=OFF \
      /app/Trilinos-trilinos-release-13-0-1 && make -j`nproc` install 
WORKDIR /home
RUN rm -rf *
RUN git clone https://github.com/esys-escript/esys-escript.github.io --depth 1 /app/escript
WORKDIR /app/escript
RUN scons options_file=scons/templates/opensuse_py3_options.py -j`nproc` build_full \
	trilinos=1 trilinos_prefix=/usr/local mpi='OPENMPI'
ENV LD_LIBRARY_PATH=/app/escript/lib:/app/trilinos/lib:$LD_LIBRARY_PATH
ENV PYTHONPATH=/app/escript:$PYTHONPATH
ENV PATH=/app/escript/bin:$PATH
RUN ./utest.sh /app/escript/build '-n2 -p2 -t4'
RUN useradd -ms /bin/bash appuser
RUN run-escript /app/escript/scripts/release_sanity.py
RUN rm -rf *

CMD ["/bin/bash"]