# Dockerfile to build the ps5-payload-dev/sdk environment # Pinned base; run `docker build --pull` periodically to refresh. # SDK + libsmb2 are unpinned upstream (no tags): SDK_REF / LIBSMB2_REF # below document the intended pin — set to a tested commit SHA. ARG UBUNTU_TAG=24.04 ARG SDK_REF=master ARG LIBSMB2_REF=master FROM ubuntu:${UBUNTU_TAG} # Install build tools and compiler (Clang 18 and LLD 18 required by the SDK) RUN apt-get update && apt-get install -y \ git \ cmake \ ninja-build \ clang-18 \ lld-18 \ llvm-18 \ llvm-18-dev \ make \ python3 \ python3-pyelftools \ wget \ xz-utils \ pkg-config \ sudo \ unzip \ && rm -rf /var/lib/apt/lists/* # Set up Clang 18 as default RUN ln -s /usr/bin/clang-18 /usr/bin/clang && \ ln -s /usr/bin/clang++-18 /usr/bin/clang++ && \ ln -s /usr/bin/ld.lld-18 /usr/bin/ld.lld # Clone and build ps5-payload-dev SDK (shallow; set SDK_REF to a SHA to pin) WORKDIR /opt ARG SDK_REF=master RUN git clone --depth 1 https://github.com/ps5-payload-dev/sdk.git ps5-payload-sdk-source WORKDIR /opt/ps5-payload-sdk-source RUN make DESTDIR=/opt/ps5-payload-sdk install # Build dependencies (libmicrohttpd) using the SDK toolchain WORKDIR /opt COPY build_deps.sh /opt/build_deps.sh RUN bash /opt/build_deps.sh ENV PS5_PAYLOAD_SDK=/opt/ps5-payload-sdk WORKDIR /src