FROM ubuntu:20.04@sha256:f2034e7195f61334e6caff6ecf2e965f92d11e888309065da85ff50c617732b8

ARG UBUNTU_MIRROR=http://archive.ubuntu.com/ubuntu/
ENV UBUNTU_DIST=focal

# This prevents questions during package installations
ENV DEBIAN_FRONTEND noninteractive
ENV LC_ALL=C.UTF-8 LANG=C.UTF-8 TZ=America/New_York

# If a package version does not exist anymore you can use "apt-cache policy <pkg>" to display the available versions
RUN echo deb ${UBUNTU_MIRROR} ${UBUNTU_DIST} main restricted universe multiverse > /etc/apt/sources.list && \
    echo deb ${UBUNTU_MIRROR} ${UBUNTU_DIST}-updates main restricted universe multiverse >> /etc/apt/sources.list && \
    echo deb ${UBUNTU_MIRROR} ${UBUNTU_DIST}-backports main restricted universe multiverse >> /etc/apt/sources.list && \
    echo deb ${UBUNTU_MIRROR} ${UBUNTU_DIST}-security main restricted universe multiverse >> /etc/apt/sources.list && \
    apt-get update -q && \
    apt-get install -qy \
        git=1:2.25.1-1ubuntu3.14 \
        wget=1.20.3-1ubuntu2.1 \
        make=4.2.1-1.2 \
        autotools-dev=20180224.1 \
        autoconf=2.69-11.1 \
        libtool=2.4.6-14 \
        xz-utils=5.2.4-1ubuntu1.1 \
        libffi-dev=3.3-4 \
        libncurses5-dev=6.2-0ubuntu2.1 \
        libsqlite3-dev=3.31.1-4ubuntu0.7 \
        libusb-1.0-0-dev=2:1.0.23-2build1 \
        libudev-dev=245.4-4ubuntu3.24 \
        gettext=0.19.8.1-10build1 \
        pkg-config=0.29.1-0ubuntu4 \
        libdbus-1-3=1.12.16-2ubuntu2.3 \
        libpcsclite-dev=1.8.26-3 \
        swig=4.0.1-5build1 \
        libxkbcommon-x11-0=0.10.0-1 \
        libxcb1=1.14-2 \
        libxcb-icccm4=0.4.1-1.1 \
        libxcb-image0=0.4.0-1build1 \
        libxcb-keysyms1=0.4.0-1build1 \
        libxcb-randr0=1.14-2 \
        libxcb-render-util0=0.3.9-1build1 \
        libxcb-render0=1.14-2 \
        libxcb-shape0=1.14-2 \
        libxcb-shm0=1.14-2 \
        libxcb-sync1=1.14-2 \
        libxcb-util1=0.4.0-0ubuntu3 \
        libxcb-xfixes0=1.14-2 \
        libxcb-xinerama0=1.14-2 \
        libxcb-xkb1=1.14-2 \
        libx11-xcb1=2:1.6.9-2ubuntu1.6 \
        autopoint=0.19.8.1-10build1 \
        zlib1g-dev=1:1.2.11.dfsg-2ubuntu1.5 \
        libfreetype6=2.10.1-2ubuntu0.4 \
        libfontconfig1=2.13.1-2ubuntu3 \
        libssl-dev=1.1.1f-1ubuntu2.24 \
        gcc-9=9.4.0-1ubuntu1~20.04.2 \
        g++=4:9.3.0-1ubuntu2 \
        rustc=1.75.0+dfsg0ubuntu1~bpo0-0ubuntu0.20.04 \
        cargo=1.75.0+dfsg0ubuntu1~bpo0-0ubuntu0.20.04 \
        desktop-file-utils=0.24-1ubuntu3 \
        && \
    ln -sf /usr/bin/x86_64-linux-gnu-gcc-9 /usr/bin/gcc && \
    ln -sf /usr/bin/x86_64-linux-gnu-gcc-9 /usr/bin/cc && \
    rm -rf /var/lib/apt/lists/* && \
    apt-get autoremove -y && \
    apt-get clean

# This is to enable nightly features in the release configuration
ENV RUSTC_BOOTSTRAP=1
# Enable trim-paths feature in cargo 1.75+ to make sure pip paths
# do not end up in binaries making them not reproducible
ENV CARGO_TRIM_PATHS=all
ENV CARGO_UNSTABLE_TRIM_PATHS=true
