FROM ghcr.io/commaai/openpilot-base:latest

RUN apt-get update && apt-get install -y --no-install-recommends\
    apt-utils \
    unzip \
    tar \
    curl \
    xz-utils \
    alien \
    dbus \
    gcc-arm-none-eabi \
    tmux \
    vim \
    lsb-core \
    libx11-6 \
  && rm -rf /var/lib/apt/lists/*

# Intel OpenCL driver
ARG INTEL_DRIVER=l_opencl_p_18.1.0.015.tgz
ARG INTEL_DRIVER_URL=http://registrationcenter-download.intel.com/akdlm/irc_nas/vcp/15532
RUN mkdir -p /tmp/opencl-driver-intel
WORKDIR /tmp/opencl-driver-intel
RUN echo INTEL_DRIVER is $INTEL_DRIVER && \
    curl -O $INTEL_DRIVER_URL/$INTEL_DRIVER && \
    tar -xzf $INTEL_DRIVER && \
    for i in $(basename $INTEL_DRIVER .tgz)/rpm/*.rpm; do alien --to-deb $i; done && \
    dpkg -i *.deb && \
    rm -rf $INTEL_DRIVER $(basename $INTEL_DRIVER .tgz) *.deb && \
    mkdir -p /etc/OpenCL/vendors && \
    echo /opt/intel/opencl_compilers_and_libraries_18.1.0.015/linux/compiler/lib/intel64_lin/libintelocl.so > /etc/OpenCL/vendors/intel.icd && \
    rm -rf /tmp/opencl-driver-intel

ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES graphics,utility,compute
ENV QTWEBENGINE_DISABLE_SANDBOX 1

RUN dbus-uuidgen > /etc/machine-id

# Install CARLA python api
RUN pip install --upgrade pip && \
    pip install --no-cache-dir carla==0.9.12

# get same tmux config used on NEOS for debugging
RUN cd $HOME && \
    curl -O https://raw.githubusercontent.com/commaai/eon-neos-builder/master/devices/eon/home/.tmux.conf

ENV PYTHONPATH $HOME/openpilot:${PYTHONPATH}
RUN mkdir -p $HOME/openpilot

COPY SConstruct $HOME/openpilot/

COPY ./third_party $HOME/openpilot/third_party
COPY ./pyextra $HOME/openpilot/pyextra
COPY ./site_scons $HOME/openpilot/site_scons
COPY ./rednose $HOME/openpilot/rednose
COPY ./common $HOME/openpilot/common
COPY ./models $HOME/openpilot/models
COPY ./opendbc $HOME/openpilot/opendbc
COPY ./cereal $HOME/openpilot/cereal
COPY ./panda $HOME/openpilot/panda
COPY ./selfdrive $HOME/openpilot/selfdrive
COPY ./tools $HOME/openpilot/tools

WORKDIR $HOME/openpilot
RUN scons -j$(nproc)
