FROM python:3.12-slim-bookworm@sha256:782412e85d0f0984994c290652577d4018aff08145c85b262bb63dc0c7522254
RUN apt-get update && apt-get install -y --no-install-recommends \
    gcc libc6-dev clang-14 llvm-14 lld-14 ca-certificates \
    && rm -rf /var/lib/apt/lists/*
COPY config/upstream.json /opt/build/upstream.json
COPY tools/fetch_upstream.py /opt/build/fetch_upstream.py
RUN python /opt/build/fetch_upstream.py /opt/build/upstream.json /opt/amd-atom
COPY native /opt/build/native
RUN gcc -std=gnu11 -O2 -Wall -Wextra -Wno-unused-parameter \
    -I/opt/build/native/compat -I/opt/amd-atom \
    -include /opt/build/native/compat/runtime_compat.h \
    /opt/amd-atom/atom.c /opt/build/native/atom_runner.c \
    /opt/build/native/clock_parameters.c \
    /opt/build/native/power_parameters.c \
    -pthread -o /usr/local/bin/rx580-atom
COPY --chmod=0644 config/firmware.json /opt/runtime/config/firmware.json
RUN python /opt/build/fetch_upstream.py /opt/runtime/config/firmware.json /opt/amd-firmware
COPY config/requirements.txt /opt/build/requirements.txt
RUN python -m pip install --no-cache-dir --require-hashes -r /opt/build/requirements.txt
COPY --chown=1000:1000 config/compiler.json config/compute.json /opt/runtime/config/
COPY --chown=1000:1000 kernels /opt/runtime/kernels
COPY --chown=1000:1000 rx580usb /opt/runtime/rx580usb
COPY tools/build_support.py /opt/build/build_support.py
RUN PYTHONPATH=/opt/runtime python /opt/build/build_support.py \
    /opt/runtime/config/compiler.json /opt/runtime/kernels/support.cl \
    /opt/runtime/kernels/support.hsaco
RUN chmod 0755 /opt/runtime /opt/runtime/config
WORKDIR /opt/runtime
ENV PYTHONDONTWRITEBYTECODE=1
USER 1000:1000
