FROM ubuntu:22.04@sha256:b8b6ee6aa931ecd9d0d952abc34dc0e5f7c6a30c6bb71b079fe399fde0329c02

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

# 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.34.1-1ubuntu1.17 \
        wget=1.21.2-2ubuntu1.5 \
        make=4.3-4.1build1 \
        autotools-dev=20220109.1 \
        autoconf=2.71-2 \
        libtool=2.4.6-15build2 \
        xz-utils=5.2.5-2ubuntu1.1 \
        libffi-dev=3.4.2-4 \
        libncurses5-dev=6.3-2ubuntu0.3 \
        libsqlite3-dev=3.37.2-2ubuntu0.8 \
        libusb-1.0-0-dev=2:1.0.25-1ubuntu2 \
        libudev-dev=249.11-0ubuntu3.22 \
        gettext=0.21-4ubuntu4 \
        pkg-config=0.29.2-1ubuntu3 \
        libdbus-1-3=1.12.20-2ubuntu4.1 \
        libpcsclite-dev=1.9.5-3ubuntu1 \
        swig=4.0.2-1ubuntu1 \
        libxkbcommon-x11-0=1.4.0-1 \
        libxcb1=1.14-3ubuntu3 \
        libxcb-icccm4=0.4.1-1.1build2 \
        libxcb-image0=0.4.0-2 \
        libxcb-keysyms1=0.4.0-1build3 \
        libxcb-randr0=1.14-3ubuntu3 \
        libxcb-render-util0=0.3.9-1build3 \
        libxcb-render0=1.14-3ubuntu3 \
        libxcb-shape0=1.14-3ubuntu3 \
        libxcb-shm0=1.14-3ubuntu3 \
        libxcb-sync1=1.14-3ubuntu3 \
        libxcb-util1=0.4.0-1build2 \
        libxcb-xfixes0=1.14-3ubuntu3 \
        libxcb-xinerama0=1.14-3ubuntu3 \
        libxcb-xkb1=1.14-3ubuntu3 \
        libx11-xcb1=2:1.7.5-1ubuntu0.3 \
        autopoint=0.21-4ubuntu4 \
        zlib1g-dev=1:1.2.11.dfsg-2ubuntu9.2 \
        libfreetype6=2.11.1+dfsg-1ubuntu0.3 \
        libfontconfig1=2.13.1-4.2ubuntu5 \
        libssl-dev=3.0.2-0ubuntu1.30 \
        gcc-11=11.4.0-1ubuntu1~22.04.3 \
        g++=4:11.2.0-1ubuntu1 \
        desktop-file-utils=0.26-1ubuntu3 \
        && \
    ln -sf /usr/bin/x86_64-linux-gnu-gcc-11 /usr/bin/gcc && \
    ln -sf /usr/bin/x86_64-linux-gnu-gcc-11 /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
