Files

151 lines
4.5 KiB
Docker
Raw Permalink Normal View History

2025-02-10 10:01:41 +00:00
FROM --platform=linux/amd64 ubuntu:24.04 AS base
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
2025-02-08 13:54:14 +00:00
ca-certificates \
python-is-python3 \
python3 \
python3-pip \
2025-02-10 10:01:41 +00:00
python3.12-dev \
python3.12-venv \
2025-02-08 13:54:14 +00:00
software-properties-common
FROM base AS nsjail
2021-08-11 13:37:24 -04:00
RUN apt-get -y update && apt-get install -y \
2025-02-08 13:54:14 +00:00
autoconf \
bison \
flex \
g++ \
gcc \
git \
libnl-route-3-dev \
libprotobuf-dev \
libtool \
make \
pkg-config \
protobuf-compiler
2021-08-11 13:37:24 -04:00
2025-02-10 10:01:41 +00:00
RUN git clone "https://github.com/google/nsjail" --recursive --branch 3.4 /nsjail \
2021-08-11 13:37:24 -04:00
&& cd /nsjail \
&& make
2021-08-10 22:44:39 -04:00
FROM base AS build
2021-08-03 17:05:04 +01:00
2025-02-08 13:54:14 +00:00
RUN dpkg --add-architecture i386 \
&& add-apt-repository -y ppa:dosemu2/ppa \
&& add-apt-repository -y ppa:stsp-0/dj64 \
&& apt-get update \
&& apt-get install -y -o APT::Immediate-Configure=false \
binutils-aarch64-linux-gnu \
binutils-arm-none-eabi \
binutils-djgpp \
binutils-mingw-w64-i686 \
binutils-mips-linux-gnu \
binutils-powerpc-linux-gnu \
binutils-sh-elf \
curl \
dj64 \
dos2unix \
dosemu2 \
gcc-mips-linux-gnu \
git \
iptables \
libarchive-tools \
libc6-dev-i386 \
libdevmapper1.02.1 \
libgpgme11 \
libnl-route-3-200 \
libprotobuf-dev \
2025-02-10 10:01:41 +00:00
libtinfo6 \
netcat-traditional \
2025-02-08 13:54:14 +00:00
unzip \
wget \
wine \
2021-08-10 22:44:39 -04:00
&& rm -rf /var/lib/apt/lists/*
2021-08-03 17:05:04 +01:00
2025-02-10 10:01:41 +00:00
RUN wget http://security.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb \
&& apt install ./libtinfo5_6.3-2ubuntu0.1_amd64.deb \
&& rm libtinfo5_6.3-2ubuntu0.1_amd64.deb
RUN curl -sSL https://install.python-poetry.org/ | \
2025-02-10 10:01:41 +00:00
POETRY_VERSION=1.8.4 POETRY_HOME=/etc/poetry python3.12 -
2021-08-03 17:05:04 +01:00
COPY --from=nsjail /nsjail/nsjail /bin/nsjail
2021-08-10 22:44:39 -04:00
2025-02-01 08:31:10 +00:00
COPY --from=ghcr.io/decompals/wibo:0.6.16 /usr/local/sbin/wibo /usr/bin/
2021-10-23 11:22:32 +01:00
2024-03-28 19:33:01 +01:00
# Patched mips binutils
2025-02-08 13:54:14 +00:00
RUN wget "https://github.com/decompals/binutils-mips-ps2-decompals/releases/download/v0.4/binutils-mips-ps2-decompals-linux-x86-64.tar.gz" \
&& tar xvzf binutils-mips-ps2-decompals-linux-x86-64.tar.gz -C /usr/bin mips-ps2-decompals-as mips-ps2-decompals-nm mips-ps2-decompals-objdump \
&& rm binutils-mips-ps2-decompals-linux-x86-64.tar.gz \
&& chmod +x /usr/bin/mips-ps2-decompals-*
2022-03-13 13:33:19 -04:00
# Patched PowerPC binutils
2025-02-08 13:54:14 +00:00
RUN curl -sSL "https://github.com/encounter/gc-wii-binutils/releases/download/2.42-1/linux-x86_64.zip" | \
bsdtar -xvf- -C /usr/bin \
&& chmod +x /usr/bin/powerpc-eabi-*
# MSDOS specific
RUN wget "https://github.com/OmniBlade/binutils-gdb/releases/download/omf-build/omftools.tar.gz" \
&& tar xvzf omftools.tar.gz -C /usr/bin jwasm \
&& rm omftools.tar.gz \
2025-03-02 16:08:46 +01:00
&& wget "https://github.com/decompals/binutils-omf/releases/download/v0.3/omftools-linux-x86_64.tar.gz" \
2025-02-08 13:54:14 +00:00
&& tar xvzf omftools-linux-x86_64.tar.gz -C /usr/bin omf-nm omf-objdump \
&& rm omftools-linux-x86_64.tar.gz
RUN mkdir -p /etc/fonts
2021-08-03 17:05:04 +01:00
WORKDIR /backend
2022-07-29 11:41:20 -04:00
ENV WINEPREFIX=/tmp/wine
2025-02-10 10:01:41 +00:00
# Ensure /sandbox and wine dirs have correct ownership
RUN mkdir -p /sandbox \
&& chown -R ubuntu:ubuntu /sandbox \
2022-07-29 11:41:20 -04:00
&& mkdir -p "${WINEPREFIX}" \
2025-02-10 10:01:41 +00:00
&& chown ubuntu:ubuntu "${WINEPREFIX}"
2025-02-08 13:54:14 +00:00
# Switch to non-root user
2025-02-10 10:01:41 +00:00
USER ubuntu
2025-02-10 10:01:41 +00:00
# Initialize wine files to /home/ubuntu/.wine
2025-02-08 13:54:14 +00:00
RUN wineboot --init
2022-07-29 11:41:20 -04:00
2022-02-20 08:46:00 -05:00
ENV PATH="$PATH:/etc/poetry/bin"
2025-02-08 13:54:14 +00:00
ARG ENABLE_DREAMCAST_SUPPORT
ARG ENABLE_GBA_SUPPORT
2025-02-08 13:54:14 +00:00
ARG ENABLE_GC_WII_SUPPORT
ARG ENABLE_MACOSX_SUPPORT
2025-02-08 13:54:14 +00:00
ARG ENABLE_MSDOS_SUPPORT
2023-10-23 21:54:35 +01:00
ARG ENABLE_N3DS_SUPPORT
ARG ENABLE_N64_SUPPORT
2023-10-26 15:27:25 +01:00
ARG ENABLE_NDS_ARM9_SUPPORT
2023-10-09 16:37:14 +01:00
ARG ENABLE_PS1_SUPPORT
2025-02-08 13:54:14 +00:00
ARG ENABLE_PS2_SUPPORT
ARG ENABLE_PSP_SUPPORT
2023-11-15 15:18:38 +00:00
ARG ENABLE_SATURN_SUPPORT
ARG ENABLE_SWITCH_SUPPORT
2025-02-08 13:54:14 +00:00
ARG ENABLE_WIN32_SUPPORT
2025-02-08 13:54:14 +00:00
ENV ENABLE_DREAMCAST_SUPPORT=${ENABLE_DREAMCAST_SUPPORT}
ENV ENABLE_GBA_SUPPORT=${ENABLE_GBA_SUPPORT}
ENV ENABLE_GC_WII_SUPPORT=${ENABLE_GC_WII_SUPPORT}
ENV ENABLE_MACOSX_SUPPORT=${ENABLE_MACOSX_SUPPORT}
ENV ENABLE_MSDOS_SUPPORT=${ENABLE_MSDOS_SUPPORT}
ENV ENABLE_N3DS_SUPPORT=${ENABLE_N3DS_SUPPORT}
ENV ENABLE_N64_SUPPORT=${ENABLE_N64_SUPPORT}
ENV ENABLE_NDS_ARM9_SUPPORT=${ENABLE_NDS_ARM9_SUPPORT}
ENV ENABLE_PS1_SUPPORT=${ENABLE_PS1_SUPPORT}
ENV ENABLE_PS2_SUPPORT=${ENABLE_PS2_SUPPORT}
2024-02-15 14:17:26 +00:00
ENV ENABLE_PSP_SUPPORT=${ENABLE_PSP_SUPPORT}
ENV ENABLE_SATURN_SUPPORT=${ENABLE_SATURN_SUPPORT}
ENV ENABLE_SWITCH_SUPPORT=${ENABLE_SWITCH_SUPPORT}
ENV ENABLE_WIN32_SUPPORT=${ENABLE_WIN32_SUPPORT}
2021-08-03 17:05:04 +01:00
ENTRYPOINT ["/backend/docker_entrypoint.sh"]