# syntax=docker/dockerfile:1.7

ARG FEDORA_IMAGE=fedora@sha256:6c75d5bf57cb0fa5aa4b92c6a83c86c791644496d9ac230de7711f5b8ec3b898

FROM ${FEDORA_IMAGE} AS sdk
ADD --checksum=sha256:14ac4113523ed61bc1d42a0d0b7b8981b2bc6aac35a68949c169b0ed0aaf5cdb \
    https://github.com/ps5-payload-dev/pacbrew-repo/releases/download/v0.39/ps5-payload-dev.tar.gz \
    /tmp/ps5-payload-dev.tar.gz
RUN mkdir -p /sdk && \
    tar -xzf /tmp/ps5-payload-dev.tar.gz -C /sdk \
      opt/ps5-payload-sdk/bin \
      opt/ps5-payload-sdk/ldscripts \
      opt/ps5-payload-sdk/target/include \
      opt/ps5-payload-sdk/target/lib && \
    rm /tmp/ps5-payload-dev.tar.gz

FROM ${FEDORA_IMAGE} AS llvm-config
RUN dnf install -y --setopt=install_weak_deps=False \
      llvm-devel-22.1.8-4.fc44 && \
    install -Dm0755 /usr/lib64/llvm22/bin/llvm-config /out/llvm-config && \
    dnf clean all

FROM ${FEDORA_IMAGE}
ARG VERSION=0.1.0
ARG REVISION=unknown
LABEL org.opencontainers.image.title="PS5 Browser Builder" \
      org.opencontainers.image.description="Deterministic PS5 browser-tile installer builder" \
      org.opencontainers.image.source="https://git.richey.dev/miles/ps5-browser-builder" \
      org.opencontainers.image.documentation="https://git.richey.dev/miles/ps5-browser-builder" \
      org.opencontainers.image.version="${VERSION}" \
      org.opencontainers.image.revision="${REVISION}" \
      org.opencontainers.image.licenses="AGPL-3.0-or-later AND GPL-3.0-or-later"

RUN dnf install -y --setopt=install_weak_deps=False \
      clang-22.1.8-4.fc44 \
      lld-22.1.8-4.fc44 \
      llvm-22.1.8-4.fc44 \
      python3-3.14.6-1.fc44 \
      util-linux-2.41.5-1.fc44 && \
    dnf clean all && \
    rm -rf /var/cache/dnf && \
    mkdir -p /opt/ps5-browser-builder /work /usr/share/licenses/ps5-browser-builder && \
    chown 65532:65532 /work

COPY --from=sdk /sdk/opt/ps5-payload-sdk /opt/ps5-payload-sdk
COPY --from=llvm-config /out/llvm-config /usr/lib64/llvm22/bin/llvm-config
COPY ps5_browser_builder /opt/ps5-browser-builder/ps5_browser_builder
COPY README.md LICENSE THIRD_PARTY_NOTICES.md /usr/share/licenses/ps5-browser-builder/
COPY LICENSES/GPL-3.0-or-later.txt /usr/share/licenses/ps5-browser-builder/

ENV PS5_PAYLOAD_SDK=/opt/ps5-payload-sdk \
    LLVM_CONFIG=/usr/lib64/llvm22/bin/llvm-config \
    PYTHONPATH=/opt/ps5-browser-builder \
    LC_ALL=C.UTF-8 \
    TZ=UTC \
    SOURCE_DATE_EPOCH=0

RUN python3 -m ps5_browser_builder --version && \
    python3 -c 'from pathlib import Path; from ps5_browser_builder.core import validate_sdk; validate_sdk(Path("/opt/ps5-payload-sdk"))'

WORKDIR /work
USER 65532:65532
ENTRYPOINT ["python3", "-m", "ps5_browser_builder"]
