FROM ubuntu:18.04

ARG DEBIAN_FRONTEND=noninteractive

# Install openbabel dependencies
RUN apt-get update \
  && apt-get install --yes --quiet --no-install-recommends \
    libboost-filesystem1.65.1 \
    libboost-iostreams1.65.1 \
    libboost-program-options1.65.1 \
    libboost-regex1.65.1 \
    libboost-system1.65.1 \
    libboost-test1.65.1 \
    libpython3.6 \
    libxml2 \
    python3 \
    python3-cairo \
    swig \
  && apt-get clean && rm -rf /var/lib/apt/lists/*

ARG OPENBABEL_VERSION=3.1.1
ARG OPENBABEL_HOME=/usr/local/openbabel/$OPENBABEL_VERSION
SHELL ["/bin/bash", "-c"]

# Install openbabel
RUN build_deps="\
    build-essential \
    cmake \
    libboost-filesystem1.65-dev \
    libboost-iostreams1.65-dev \
    libboost-program-options1.65-dev \
    libboost-regex1.65-dev \
    libboost-system1.65-dev \
    libboost-test1.65-dev \
    libboost1.65-dev \
    libcairo2-dev \
    libeigen3-dev \
    libxml2-dev \
    python3-dev \
    rapidjson-dev \
    wget \
    zlib1g-dev" \
  && apt-get update \
  && apt-get install --yes --quiet $build_deps \
  && wget --quiet --no-hsts --output-document=- https://github.com/openbabel/openbabel/archive/openbabel-${OPENBABEL_VERSION//./-}.tar.gz | tar -zxvf - -C /tmp \
  && mkdir -p /tmp/openbabel-openbabel-${OPENBABEL_VERSION//./-}/build \
  && cd /tmp/openbabel-openbabel-${OPENBABEL_VERSION//./-}/build \
  && cmake .. \
    -Wno-dev \
    -DRUN_SWIG=ON \
    -DPYTHON_BINDINGS=ON \
    -DPYTHON_EXECUTABLE=/usr/bin/python3.6 \
    -DCMAKE_INSTALL_PREFIX=$OPENBABEL_HOME \
    -DCMAKE_BUILD_TYPE=Release \
  && make -j $(nproc) && make install \
  # This is a heck to pass Test #218, which fails
  # because \N in a string is interpreted for unicode
  # but in our case \N has nothing to do with unicode.
  # So we make the string as a raw string.
  && sed -i -e "45s|'C|r'C|" -e "50s|'C|r'C|" /tmp/openbabel-openbabel-${OPENBABEL_VERSION//./-}/test/testdistgeom.py \
  && make test \
  && ln -s $OPENBABEL_HOME/lib/python3.6/site-packages/openbabel /usr/local/lib/python3.6/dist-packages/openbabel \
  && cd / && rm -rf /tmp/* \
  && apt-get purge --yes --auto-remove $build_deps \
  && apt-get clean && rm -rf /var/lib/apt/lists/*

# Set environment variables
ENV LD_LIBRARY_PATH=$OPENBABEL_HOME/lib:$LD_LIBRARY_PATH
ENV PATH=$OPENBABEL_HOME/bin:$PATH

WORKDIR /var/local

COPY . .

CMD ["/usr/bin/python3", "app.py"]
