mirror of
https://github.com/aydencharles/onionHEN.git
synced 2026-10-22 03:42:46 -05:00
- fix(fps): measure PS4 BC frame rate with a remote GNM detour and hide the pkg install result code in the finish notification - feat(utils): integrate ShadowMount+ alongside the FTPSRV service for game scanning, mounting and installation - feat(DPI): add the packet package server (pkgserver) with its Web UI and full REST/SSE API surface - feat(tests): add new host test suites (multipart, builtin services, pkg XML, FPS formula, toolbox i18n/route, language) - build: add Docker support for building and running the tests - docs: update credits, README, architecture, util-arch, api and third-party documentation; add contributor credit and i18n keys - i18n: remove the pkg finish result code from every locale
84 lines
3.7 KiB
Docker
84 lines
3.7 KiB
Docker
FROM ubuntu:24.04
|
|
|
|
ARG HOST_UID=1000
|
|
ARG HOST_GID=1000
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive \
|
|
PATH="/usr/local/bin:/usr/lib/llvm-18/bin:/opt/ps5-payload-sdk/bin:${PATH}" \
|
|
PS5_PAYLOAD_SDK=/opt/ps5-payload-sdk \
|
|
KEYSTONE_PREFIX=/usr/local \
|
|
LLVM_CONFIG=/usr/lib/llvm-18/bin/llvm-config
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
bash \
|
|
build-essential \
|
|
ca-certificates \
|
|
clang-18 \
|
|
cmake \
|
|
curl \
|
|
lld-18 \
|
|
llvm-18 \
|
|
make \
|
|
nodejs \
|
|
npm \
|
|
meson \
|
|
ninja-build \
|
|
passwd \
|
|
pkg-config \
|
|
python3 \
|
|
python3-pip \
|
|
python3-pyelftools \
|
|
socat \
|
|
unzip \
|
|
wget \
|
|
xz-utils \
|
|
libssl-dev \
|
|
librsvg2-bin \
|
|
git \
|
|
&& ln -sf /usr/lib/llvm-18/bin/llvm-config /usr/local/bin/llvm-config && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /workspace
|
|
COPY . /workspace
|
|
|
|
RUN find /workspace -type f \( -name "*.sh" -o -name "*.bash" \) -print0 | xargs -0 -r sed -i 's/\r$//' && \
|
|
git -C /workspace submodule update --init --recursive && \
|
|
git clone --depth 1 https://github.com/ps5-payload-dev/sdk.git /tmp/ps5-payload-sdk-src && \
|
|
export LLVM_CONFIG=/usr/lib/llvm-18/bin/llvm-config && \
|
|
export PATH=/usr/lib/llvm-18/bin:${PATH} && \
|
|
make -C /tmp/ps5-payload-sdk-src DESTDIR=/opt/ps5-payload-sdk install && \
|
|
cd /tmp/ps5-payload-sdk-src && \
|
|
export LLVM_CONFIG=/usr/lib/llvm-18/bin/llvm-config && \
|
|
./libcxx.sh && \
|
|
cd /workspace && \
|
|
rm -rf /tmp/ps5-payload-sdk-src
|
|
|
|
# Keystone engine for host unit tests. The wheel ships libkeystone.so inside
|
|
# the python package; expose it under /usr/local/lib where the tests Makefile
|
|
# (KEYSTONE_PREFIX=/usr/local) and the runtime loader both find it. Headers
|
|
# come from third_party/keystone/include, already vendored in the repo.
|
|
RUN pip3 install --break-system-packages --no-cache-dir keystone-engine && \
|
|
KSO=$(python3 -c 'import keystone, os; print(os.path.join(os.path.dirname(keystone.__file__), "libkeystone.so"))') && \
|
|
ln -sf "$KSO" /usr/local/lib/libkeystone.so && \
|
|
ln -sf "$KSO" /usr/local/lib/libkeystone.so.0 && \
|
|
ldconfig
|
|
|
|
RUN if getent group "${HOST_GID}" >/dev/null; then \
|
|
builder_group="$(getent group "${HOST_GID}" | cut -d: -f1)"; \
|
|
else \
|
|
groupadd --gid "${HOST_GID}" builder; \
|
|
builder_group=builder; \
|
|
fi && \
|
|
existing_user="$(getent passwd "${HOST_UID}" | cut -d: -f1 || true)" && \
|
|
if [ -n "${existing_user}" ] && [ "${existing_user}" != builder ]; then \
|
|
usermod --login builder "${existing_user}" && \
|
|
usermod --home /home/builder --move-home builder; \
|
|
elif ! id builder >/dev/null 2>&1; then \
|
|
useradd --uid "${HOST_UID}" --gid "${HOST_GID}" --create-home --shell /bin/bash builder; \
|
|
fi && \
|
|
usermod --gid "${HOST_GID}" --shell /bin/bash builder && \
|
|
chown -R builder:"${builder_group}" /workspace
|
|
|
|
USER builder
|
|
CMD ["/bin/bash", "-lc", "set -euo pipefail; rm -rf /tmp/onionhen-build; cp -a /workspace/. /tmp/onionhen-build; python3 -c \"from pathlib import Path; files=list(Path('/tmp/onionhen-build').rglob('*.sh'))+list(Path('/tmp/onionhen-build').rglob('*.bash')); [p.write_bytes(p.read_bytes().replace(bytes([13]), bytes())) for p in files]\"; git -C /tmp/onionhen-build submodule update --init --recursive; cd /tmp/onionhen-build; export PS5_PAYLOAD_SDK=/opt/ps5-payload-sdk; export PATH=/usr/lib/llvm-18/bin:${PS5_PAYLOAD_SDK}/bin:${PATH}; export LLVM_CONFIG=/usr/lib/llvm-18/bin/llvm-config; ./scripts/build.sh --jobs 8; rm -rf /workspace/build; cp -a /tmp/onionhen-build/build /workspace/build"]
|