#FROM nvidia/cudagl:10.1-devel-ubuntu16.04
FROM nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04

# Setup basic packages
RUN apt-get update
RUN apt install sudo 
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
    build-essential \
    git \
    curl \
    vim \
    ca-certificates \
    libjpeg-dev \
    libpng-dev \
    libglfw3-dev \
    libglm-dev \
    libx11-dev \
    libomp-dev \
    libegl1-mesa-dev \
    pkg-config \
    wget \
    zip \
    htop \
    tmux \
    unzip \
    terminator \
    libsm6 \
    libxext6 \
    libxrender-dev \
    gedit \
    git \
    openssh-client \
    unzip \
    htop \
    libopenni-dev \
    apt-utils \
    usbutils \
    dialog \
    ffmpeg \
    nvidia-settings \
    libffi-dev \
    flex \
    bison \
    build-essential \
    git \
    wget \
    module-init-tools \
    pciutils \
    xserver-xorg \
    xserver-xorg-video-fbdev \
    xauth 
    
RUN apt-get install -y  --no-install-recommends mesa-utils && rm -rf /var/lib/apt/lists/* 
    
# Install conda
RUN wget -O $HOME/miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh  &&\
    chmod +x ~/miniconda.sh &&\
    ~/miniconda.sh -b -p /custom/conda &&\
    rm ~/miniconda.sh &&\
    /custom/conda/bin/conda install numpy pyyaml scipy ipython mkl mkl-include &&\
    /custom/conda/bin/conda clean -ya
ENV PATH /custom/conda/bin:$PATH

# Install cmake
RUN wget https://github.com/Kitware/CMake/releases/download/v3.14.0/cmake-3.14.0-Linux-x86_64.sh
RUN mkdir /opt/cmake
RUN sh /cmake-3.14.0-Linux-x86_64.sh --prefix=/opt/cmake --skip-license
RUN ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake
RUN cmake --version

# Setup habitat-sim
RUN git clone https://github.com/facebookresearch/habitat-sim.git
RUN /bin/bash -c "cd habitat-sim; git checkout tags/v0.1.5; pip install -r requirements.txt; python setup.py install --headless --with-cuda"

# Install challenge specific habitat-api
RUN git clone https://github.com/facebookresearch/habitat-api.git
RUN /bin/bash -c "cd habitat-api; git checkout tags/v0.1.5; pip install -e ."
RUN /bin/bash -c "cd habitat-api; wget http://dl.fbaipublicfiles.com/habitat/habitat-test-scenes.zip; unzip habitat-test-scenes.zip"

# Silence habitat-sim logs
ENV GLOG_minloglevel=2
ENV MAGNUM_LOG="quiet"

# Install project specific packages
RUN /bin/bash -c "apt-get update; apt-get install -y libsm6 libxext6 libxrender-dev; pip install opencv-python"
RUN /bin/bash -c "pip install --upgrade cython numpy"
RUN /bin/bash -c "pip install matplotlib seaborn==0.9.0 scikit-fmm==2019.1.30 scikit-image==0.15.0 imageio==2.6.0 scikit-learn==0.22.2.post1 ifcfg"

# Install pytorch and torch_scatter
RUN conda install pytorch=1.6.0 torchvision=0.7.0 cudatoolkit=10.2 -c pytorch
RUN /bin/bash -c "pip install torch_scatter"

# Install detectron2
RUN /bin/bash -c "python -m pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu102/torch1.6/index.html"
#From Alfred
COPY requirements_alfred.txt /tmp/requirements_alfred.txt
RUN /bin/bash -c "pip install -r /tmp/requirements_alfred.txt"


#FROM nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04

ARG USER_NAME
#ARG USER_PASSWORD
#ARG USER_ID
#ARG USER_GID

#RUN apt-get update
#RUN apt install sudo
#RUN useradd -ms /bin/bash $USER_NAME
#RUN usermod -aG sudo $USER_NAME
#RUN yes $USER_PASSWORD | passwd $USER_NAME

# set uid and gid to match those outside the container
#RUN usermod -u $USER_ID $USER_NAME
#RUN groupmod -g $USER_GID $USER_NAME

# work directory
WORKDIR /home/$USER_NAME

# install system dependencies
#COPY alfred_utils/scripts/install_deps.sh /tmp/install_deps.sh
#RUN yes "Y" | /tmp/install_deps.sh

# setup python environment
RUN cd $WORKDIR
#ENV VIRTUAL_ENV=/home/$USER_NAME/alfred_env
#RUN python3 -m virtualenv --python=/usr/bin/python3 $VIRTUAL_ENV
#ENV PATH="$VIRTUAL_ENV/bin:$PATH"

# install python requirements_alfred
#RUN pip install --upgrade pip==19.3.1
#RUN pip install -U setuptools
#RUN pip install -r ../requirements_alfred.txt

# install GLX-Gears (for debugging)
#RUN apt-get update && apt-get install -y \
#   mesa-utils && \
#   rm -rf /var/lib/apt/lists/*

# change ownership of everything to our user
RUN mkdir /home/$USER_NAME/alfred
#RUN cd ${USER_HOME_DIR} && echo $(pwd) && chown $USER_NAME:$USER_NAME -R .

# copy scripts
COPY alfred_utils/scripts/startx.py /home/$USER_NAME/

ENTRYPOINT bash -c "export ALFRED_ROOT=~/alfred && /bin/bash"

