# © 2020 ETH Zurich, Mechanics and Materials Lab
# © 2020 California Institute of Technology
#
# This file is part of ae108.
#
# ae108 is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or any
# later version.
#
# ae108 is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with ae108. If not, see <https://www.gnu.org/licenses/>.

ARG BASE_IMAGE=ubuntu:jammy
FROM $BASE_IMAGE

ARG PETSC_SCALAR_TYPE=real

RUN apt-get update && \
  DEBIAN_FRONTEND="noninteractive" \
  TZ="Europe/Zurich" \
  apt-get install -y \
  clang-format \
  cmake \
  g++ \
  gdb \
  git \
  libboost-program-options-dev \
  libeigen3-dev \
  libgmock-dev \
  libgtest-dev \
  librange-v3-dev \
  libxrender1 \
  ninja-build \
  python3 python3-pip \
  python3-scipy 

RUN apt-get update && \
  DEBIAN_FRONTEND="noninteractive" \
  TZ="Europe/Zurich" \
  apt-get install -y \
  libgmsh-dev \
  voro++-dev

RUN pip3 install \
  mypy==0.931 \
  black==22.3.0 \
  pylint==2.12.2 \
  sympy==1.7.1 \
  gcovr==5.0 \
  h5py==3.6.0 \
  jsonschema==4.6.0 \
  vtk==9.2.2

RUN apt-get update && \
  DEBIAN_FRONTEND="noninteractive" \
  apt-get install -y \
  libpetsc-${PETSC_SCALAR_TYPE}-dev \
  libslepc-${PETSC_SCALAR_TYPE}3.15-dev