ARG AV_VERSION
ARG CUDA_VERSION
ARG UBUNTU_VERSION
FROM alicevision/alicevision:${AV_VERSION}-ubuntu${UBUNTU_VERSION}-cuda${CUDA_VERSION}
LABEL maintainer="AliceVision Team alicevision-team@googlegroups.com"

# Execute with nvidia docker (https://github.com/nvidia/nvidia-docker/wiki/Installation-(version-2.0))
# docker run -it --runtime=nvidia meshroom

ENV MESHROOM_DEV=/opt/Meshroom \
    MESHROOM_BUILD=/tmp/Meshroom_build \
    QT_DIR=/opt/Qt/6.8.3/gcc_64 \
    QT_CI_LOGIN=alicevisionjunk@gmail.com \
    QT_CI_P=azerty1.

# Install libs needed by Qt
RUN apt-get update && \
	DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends \
        flex \
        fontconfig \
        libfreetype6 \
        libglib2.0-0 \ 
        libice6 \
        libx11-6 \
        libxcb1 \
        libxext6 \
        libxi6 \
        libxrender1 \
        libsm6

RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends \
        libxt-dev \
        libosmesa-dev \
        libgl-dev \
        libegl-dev \
        libglu-dev \
        libxkbcommon-x11-0 \
        libz-dev \
        systemd \
        ssh

RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends \
        libxcb1-dev \
        libxcb-icccm4 \
        libxcb-render-util0 \
        libxcb-shape0 \
        libxcb-keysyms1 \
        libxcb-image0 \
        libxkbcommon-dev

RUN apt-get install -y --no-install-recommends \
	software-properties-common

# Install Python3
# RUN apt install python3-pip -y && pip3 install --upgrade pip

# Install Qt (to build plugins)
WORKDIR /tmp/qt
COPY dl/qt.run /tmp/qt
RUN chmod +x qt.run
RUN ./qt.run --root /opt/Qt --verbose --email ${QT_CI_LOGIN} --password ${QT_CI_P} --accept-obligations \
    --accept-licenses --default-answer --platform minimal --auto-answer installationErrorWithCancel=Ignore \
    --no-force-installations --no-default-installations --confirm-command \
    install qt.qt6.683.linux_gcc_64 qt.qt6.683.addons.qtcharts qt.qt6.683.addons.qt3d
RUN rm qt.run

# Strip sections containing ".note.ABI.tag" from .so: https://github.com/Microsoft/WSL/issues/3023
RUN find ${QT_DIR}/lib/ -name '*.so' | xargs strip --remove-section=.note.ABI-tag

COPY ./*requirements.txt ./setup.py ${MESHROOM_DEV}/

# Install Meshroom requirements and freeze bundle
WORKDIR "${MESHROOM_DEV}"
RUN python -m pip install -r dev_requirements.txt -r requirements.txt
