ARG RUST_IMAGE=rust@sha256:738ae99a3d75623f41e6882566b4ef37e38a9840244a47efd4a0ca22e9628b88
ARG MANYLINUX_IMAGE=quay.io/pypa/manylinux_2_28_x86_64@sha256:fdb9a9c223b215604dc7b6f7e8fff4b39bfea5fbaa7777a2e5544a60dfa437f8

FROM ${RUST_IMAGE} AS rust_toolchain

FROM ${MANYLINUX_IMAGE}

COPY --from=rust_toolchain /usr/local/cargo /usr/local/cargo
COPY --from=rust_toolchain /usr/local/rustup /usr/local/rustup

ENV PATH="/usr/local/cargo/bin:/opt/python/cp311-cp311/bin:${PATH}"
ENV RUSTUP_HOME="/usr/local/rustup"
ENV CARGO_HOME="/usr/local/cargo"

RUN dnf install -y \
        eigen3-devel \
        gcc-toolset-14-libasan-devel \
        gcc-toolset-14-libubsan-devel \
        git && \
    dnf clean all && \
    rustc --version | grep -Fx "rustc 1.84.1 (e71f9a9a9 2025-01-27)" && \
    python --version | grep -E "^Python 3\\.11\\."

COPY build-constraints.txt /opt/reforge-native-qualification/build-constraints.txt
RUN python -m pip install \
        -c /opt/reforge-native-qualification/build-constraints.txt \
        auditwheel build cmeel-eigen cmeel-urdfdom-headers nlohmann-json \
        pin pybind11 scikit-build-core setuptools wheel && \
    mkdir -p /opt/reforge-native-qualification/build-wheelhouse && \
    python -m pip download \
        --dest /opt/reforge-native-qualification/build-wheelhouse \
        -c /opt/reforge-native-qualification/build-constraints.txt \
        cmeel-eigen cmeel-urdfdom-headers nlohmann-json ninja pin pybind11 \
        scikit-build-core setuptools wheel

COPY inside_manylinux.sh /usr/local/bin/reforge-native-qualification

ENTRYPOINT ["/usr/local/bin/reforge-native-qualification"]
