mirror of
https://github.com/decompme/decomp.me.git
synced 2026-04-30 03:49:25 -05:00
Overhaul download py (#855)
* Add translations for ps1/maspsx compiler set * Tell clang to compile and not link to remove need for lld binary * Assume msdos assembler lives on PATH * Overhaul download.py * Attempt to fix docker ci * Appease black * Whoops, don't forget to detach * Fix path to download.py * fix perms (hack?) * Add --platforms and --compilers args to download.py * Try out --compiler dir arg for docker in ci * Try to ignore that 500 error about image manifests * it's --compilerS-dir * Try again * Try building our own podman (fallback to vfs when rootless) * install distro 'podman' to get configuration (fixes fuse) * mount /dev/fuse in ci * dumb bugfix, .download_cache * split compilers config out of download.py * update poetry.lock * Add psyq3.3 + psyq4.4 and migrate psyq4.3 scratches to psyq4.4 * docker_entrypoint.sh cleanup * Try to protect against 'locating item named "manifest" for image with ID' * better podman sanity check * appease black * use 'requests.get()' to grab remote image digest * Update compilers repo to 'decompme/compilers' * Fix description for psyq3.6
This commit is contained in:
@@ -52,6 +52,10 @@ jobs:
|
||||
libnl-route-3-dev \
|
||||
libncurses5 \
|
||||
protobuf-compiler
|
||||
- name: Install msdos assembler
|
||||
run: |-
|
||||
wget https://github.com/OmniBlade/binutils-gdb/releases/download/omf-build/omftools.tar.gz
|
||||
sudo tar xvzf omftools.tar.gz -C /usr/bin jwasm omf-nm omf-objdump
|
||||
- name: Install apt dependencies (cached)
|
||||
uses: awalsh128/cache-apt-pkgs-action@v1
|
||||
with:
|
||||
@@ -164,14 +168,19 @@ jobs:
|
||||
-t decompme_backend \
|
||||
--build-arg ENABLE_GC_WII_SUPPORT=YES \
|
||||
--build-arg ENABLE_PS1_SUPPORT=YES \
|
||||
--build-arg ENABLE_SATURN_SUPPORT=YES
|
||||
--build-arg ENABLE_SATURN_SUPPORT=YES \
|
||||
--build-arg ENABLE_MSDOS_SUPPORT=YES
|
||||
- name: Run tests
|
||||
run: |-
|
||||
mkdir -p sandbox && chmod 777 sandbox
|
||||
mkdir -p local_files && chmod 777 local_files
|
||||
docker run \
|
||||
mkdir -p compilers && chmod 777 compilers
|
||||
container_id=$(docker run \
|
||||
--detach \
|
||||
-v $(pwd):/decomp.me \
|
||||
-v $(pwd)/local_files:/local_files \
|
||||
-v $(pwd)/compilers:/compilers \
|
||||
--device /dev/fuse \
|
||||
--security-opt apparmor=unconfined \
|
||||
--security-opt seccomp=unconfined \
|
||||
--entrypoint /bin/bash \
|
||||
@@ -181,8 +190,11 @@ jobs:
|
||||
-e USE_SANDBOX_JAIL=on \
|
||||
-e SANDBOX_DISABLE_PROC=true \
|
||||
-e TIMEOUT_SCALE_FACTOR=10 \
|
||||
decompme_backend -c 'cd /decomp.me/backend && \
|
||||
decompme_backend -c 'podman system service --time=0 unix:///tmp/podman.sock')
|
||||
|
||||
docker exec ${container_id} /bin/bash -c 'cd /decomp.me/backend && \
|
||||
poetry install && \
|
||||
poetry run compilers/download.py --compilers-dir ${COMPILER_BASE_PATH} --podman && \
|
||||
poetry run python manage.py test'
|
||||
|
||||
frontend_lint:
|
||||
|
||||
+73
-11
@@ -31,28 +31,87 @@ RUN git clone "https://github.com/google/nsjail" --recursive --branch 3.1 /nsjai
|
||||
&& make
|
||||
|
||||
|
||||
FROM ubuntu:22.04 as podman
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
build-essential \
|
||||
git \
|
||||
golang-go \
|
||||
libassuan-dev \
|
||||
libbtrfs-dev \
|
||||
libc6-dev \
|
||||
libdevmapper-dev \
|
||||
libglib2.0-dev \
|
||||
libgpg-error-dev \
|
||||
libgpgme-dev \
|
||||
libprotobuf-c-dev \
|
||||
libprotobuf-dev \
|
||||
libseccomp-dev \
|
||||
libselinux1-dev \
|
||||
libsystemd-dev
|
||||
|
||||
WORKDIR /root
|
||||
|
||||
ENV BUILD_DIR=/build
|
||||
|
||||
RUN mkdir -p ${BUILD_DIR}
|
||||
|
||||
ARG CONMON_VERSION=v2.1.8
|
||||
RUN git clone https://github.com/containers/conmon && \
|
||||
cd conmon && \
|
||||
git checkout ${CONMON_VERSION} && \
|
||||
export GOCACHE="$(mktemp -d)" && \
|
||||
make && \
|
||||
make podman PREFIX=${BUILD_DIR}/usr/local
|
||||
|
||||
ARG RUNC_VERSION=v1.1.9
|
||||
RUN git clone https://github.com/opencontainers/runc runc && \
|
||||
cd runc && \
|
||||
git checkout ${RUNC_VERSION} && \
|
||||
make BUILDTAGS="selinux seccomp" && \
|
||||
mkdir -p ${BUILD_DIR}/usr/bin && \
|
||||
cp runc ${BUILD_DIR}/usr/bin/runc
|
||||
|
||||
ARG PODMAN_VERSION=v4.6.2
|
||||
RUN git clone https://github.com/containers/podman && \
|
||||
cd podman && \
|
||||
git checkout ${PODMAN_VERSION} && \
|
||||
make BUILDTAGS="selinux seccomp" PREFIX=/usr && \
|
||||
make install PREFIX=/build/usr
|
||||
|
||||
|
||||
FROM base AS build
|
||||
|
||||
RUN apt-get -y update && apt-get install -y \
|
||||
binutils-aarch64-linux-gnu \
|
||||
binutils-djgpp \
|
||||
binutils-mips-linux-gnu \
|
||||
binutils-powerpc-linux-gnu \
|
||||
binutils-aarch64-linux-gnu \
|
||||
binutils-sh-elf \
|
||||
binutils-djgpp \
|
||||
ca-certificates \
|
||||
curl \
|
||||
gcc-mips-linux-gnu \
|
||||
git \
|
||||
iptables \
|
||||
libc6-dev-i386 \
|
||||
libdevmapper1.02.1 \
|
||||
libgpgme11 \
|
||||
libnl-route-3-200 \
|
||||
libprotobuf-dev \
|
||||
libtinfo5 \
|
||||
netcat \
|
||||
podman \
|
||||
unzip \
|
||||
wget \
|
||||
libtinfo5 \
|
||||
libc6-dev-i386 \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# replace podman with newer version
|
||||
COPY --from=podman /build/usr /usr
|
||||
|
||||
RUN curl -sSL https://install.python-poetry.org/ | \
|
||||
POETRY_VERSION=1.3.1 POETRY_HOME=/etc/poetry python3.10 -
|
||||
POETRY_VERSION=1.4.2 POETRY_HOME=/etc/poetry python3.10 -
|
||||
|
||||
COPY --from=nsjail /nsjail/nsjail /bin/nsjail
|
||||
|
||||
@@ -92,8 +151,12 @@ COPY --from=devkitpro/devkitppc:20210726 /opt/devkitpro/devkitPPC/bin/powerpc* /
|
||||
# nds specifics
|
||||
COPY --from=devkitpro/devkitarm:20210726 /opt/devkitpro/devkitARM/bin/arm* /usr/bin/
|
||||
|
||||
# download compilers
|
||||
COPY compilers/download.py /compilers/
|
||||
# msdos specific
|
||||
RUN if [ "${ENABLE_MSDOS_SUPPORT}" = "YES" ]; then \
|
||||
wget "https://github.com/OmniBlade/binutils-gdb/releases/download/omf-build/omftools.tar.gz" && \
|
||||
tar xvzf omftools.tar.gz -C /usr/bin jwasm omf-nm omf-objdump && \
|
||||
rm omftools.tar.gz; \
|
||||
fi
|
||||
|
||||
ARG ENABLE_GBA_SUPPORT
|
||||
ARG ENABLE_N64_SUPPORT
|
||||
@@ -109,10 +172,6 @@ ENV ENABLE_SATURN_SUPPORT=${ENABLE_SATURN_SUPPORT}
|
||||
ENV ENABLE_MSDOS_SUPPORT=${ENABLE_MSDOS_SUPPORT}
|
||||
ENV ENABLE_WIN9X_SUPPORT=${ENABLE_WIN9X_SUPPORT}
|
||||
|
||||
RUN python3.10 -m pip install requests tqdm \
|
||||
&& python3.10 /compilers/download.py \
|
||||
&& rm -rf /compilers/download_cache/
|
||||
|
||||
RUN mkdir -p /etc/fonts
|
||||
|
||||
WORKDIR /backend
|
||||
@@ -126,6 +185,9 @@ RUN useradd --create-home user \
|
||||
&& mkdir -p "${WINEPREFIX}" \
|
||||
&& chown user:user "${WINEPREFIX}"
|
||||
|
||||
# FIXME: how to properly configure subuids/subgids for podman?
|
||||
RUN echo -e "" >/etc/subgid && echo -e "" >/etc/subuid
|
||||
|
||||
# switch to non-root user
|
||||
USER user
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
n64:
|
||||
- ido5.3
|
||||
- ido7.1
|
||||
- gcc2.7.2kmc
|
||||
- gcc2.8.1pm
|
||||
switch:
|
||||
- clang-4.0.1
|
||||
- clang-8.0.0
|
||||
@@ -0,0 +1,141 @@
|
||||
gba:
|
||||
- agbcc
|
||||
- agbccpp
|
||||
gc_wii:
|
||||
- mwcc_233_144
|
||||
- mwcc_233_159
|
||||
- mwcc_233_163
|
||||
- mwcc_233_163n
|
||||
- mwcc_242_81
|
||||
- mwcc_247_92
|
||||
- mwcc_247_105
|
||||
- mwcc_247_107
|
||||
- mwcc_247_108
|
||||
- mwcc_41_60831
|
||||
- mwcc_41_60126
|
||||
- mwcc_42_142
|
||||
- mwcc_43_151
|
||||
- mwcc_43_172
|
||||
- mwcc_43_213
|
||||
- mwcc_242_81r
|
||||
- mwcc_233_163e
|
||||
- mwcc_42_127
|
||||
n64:
|
||||
- gcc2.7.2kmc
|
||||
- gcc2.7.2sn
|
||||
- gcc2.7.2snew
|
||||
- gcc2.8.1pm
|
||||
- gcc2.8.1sn
|
||||
- ido5.3
|
||||
- ido5.3_c++
|
||||
- ido6.0
|
||||
- ido7.1
|
||||
- mips_pro_744
|
||||
- egcs_1.1.2-4
|
||||
- gcc4.4.0-mips64-elf
|
||||
n3ds:
|
||||
- armcc_40_771
|
||||
- armcc_40_821
|
||||
- armcc_41_561
|
||||
- armcc_41_713
|
||||
- armcc_41_791
|
||||
- armcc_41_894
|
||||
- armcc_41_921
|
||||
- armcc_41_1049
|
||||
- armcc_41_1440
|
||||
- armcc_41_1454
|
||||
- armcc_504_82
|
||||
nds_arm9:
|
||||
- mwcc_20_72
|
||||
- mwcc_20_79
|
||||
- mwcc_20_82
|
||||
- mwcc_20_84
|
||||
- mwcc_20_87
|
||||
- mwcc_30_114
|
||||
- mwcc_30_123
|
||||
- mwcc_30_126
|
||||
- mwcc_30_131
|
||||
- mwcc_30_133
|
||||
- mwcc_30_134
|
||||
- mwcc_30_136
|
||||
- mwcc_30_137
|
||||
- mwcc_30_138
|
||||
- mwcc_30_139
|
||||
- mwcc_40_1018
|
||||
- mwcc_40_1024
|
||||
- mwcc_40_1026
|
||||
- mwcc_40_1027
|
||||
- mwcc_40_1028
|
||||
- mwcc_40_1034
|
||||
- mwcc_40_1036
|
||||
- mwcc_40_1051
|
||||
switch:
|
||||
- clang-3.9.1
|
||||
- clang-4.0.1
|
||||
- clang-8.0.0
|
||||
|
||||
ps1:
|
||||
- psyq3.3
|
||||
- psyq3.5
|
||||
- psyq3.6
|
||||
- psyq4.0
|
||||
- psyq4.1
|
||||
- psyq4.3
|
||||
- psyq4.4
|
||||
- psyq4.5
|
||||
- psyq4.6
|
||||
- gcc2.6.3-psx
|
||||
- gcc2.6.3-mipsel
|
||||
- gcc2.7.1-mipsel
|
||||
- gcc2.7.2-mipsel
|
||||
- gcc2.7.2.1-mipsel
|
||||
- gcc2.7.2.2-mipsel
|
||||
- gcc2.7.2.3-mipsel
|
||||
- gcc2.8.0-mipsel
|
||||
- gcc2.8.1-mipsel
|
||||
- gcc2.91.66-mipsel
|
||||
- gcc2.95.2-mipsel
|
||||
ps2:
|
||||
- ee-gcc2.9-990721
|
||||
- ee-gcc2.9-991111
|
||||
- ee-gcc2.9-991111a
|
||||
- ee-gcc2.9-991111-01
|
||||
- ee-gcc2.95.2-273a
|
||||
- ee-gcc2.95.2-274
|
||||
- ee-gcc2.95.3-107
|
||||
- ee-gcc2.95.3-114
|
||||
- ee-gcc2.95.3-136
|
||||
- ee-gcc2.96
|
||||
- ee-gcc3.2-040921
|
||||
- mwcps2-2.3-991202
|
||||
- mwcps2-3.0b22-011126
|
||||
- mwcps2-3.0b22-020123
|
||||
- mwcps2-3.0b22-020716
|
||||
- mwcps2-3.0b22-020926
|
||||
|
||||
saturn:
|
||||
- cygnus-2.7-96Q3
|
||||
|
||||
macosx:
|
||||
- gcc-5026
|
||||
- gcc-5363
|
||||
- gcc-5370
|
||||
- gcc3-1041
|
||||
|
||||
msdos:
|
||||
- wcc10.5
|
||||
- wcc10.5a
|
||||
- wcc10.6
|
||||
- wcc11.0
|
||||
|
||||
win9x:
|
||||
- msvc4.0
|
||||
- msvc4.2
|
||||
- msvc6.0
|
||||
- msvc6.3
|
||||
- msvc6.4
|
||||
- msvc6.5
|
||||
- msvc6.5pp
|
||||
- msvc6.6
|
||||
- msvc7.0
|
||||
- msvc7.1
|
||||
+312
-1051
File diff suppressed because it is too large
Load Diff
@@ -283,19 +283,19 @@ ARMCC_504_82 = ArmccCompiler(
|
||||
CLANG_391 = ClangCompiler(
|
||||
id="clang-3.9.1",
|
||||
platform=SWITCH,
|
||||
cc='TOOLROOT="$COMPILER_DIR" "$COMPILER_DIR"/bin/clang++ -target aarch64-linux-elf --sysroot="$COMPILER_DIR"/botw-lib-musl-25ed8669943bee65a650700d340e451eda2a26ba -D_LIBCPP_HAS_MUSL_LIBC -fuse-ld=lld -mcpu=cortex-a57+fp+simd+crypto+crc -mno-implicit-float -fstandalone-debug -fPIC -Wl,-Bsymbolic-functions -shared -stdlib=libc++ -nostdlib $COMPILER_FLAGS -o "$OUTPUT" "$INPUT"',
|
||||
cc='TOOLROOT="$COMPILER_DIR" "$COMPILER_DIR"/bin/clang++ -c -target aarch64-linux-elf --sysroot="$COMPILER_DIR"/botw-lib-musl-25ed8669943bee65a650700d340e451eda2a26ba -D_LIBCPP_HAS_MUSL_LIBC -mcpu=cortex-a57+fp+simd+crypto+crc -mno-implicit-float -fstandalone-debug -fPIC -Wl,-Bsymbolic-functions -shared -stdlib=libc++ -nostdlib $COMPILER_FLAGS -o "$OUTPUT" "$INPUT"',
|
||||
)
|
||||
|
||||
CLANG_401 = ClangCompiler(
|
||||
id="clang-4.0.1",
|
||||
platform=SWITCH,
|
||||
cc='TOOLROOT="$COMPILER_DIR" "$COMPILER_DIR"/bin/clang++ -target aarch64-linux-elf --sysroot="$COMPILER_DIR"/botw-lib-musl-25ed8669943bee65a650700d340e451eda2a26ba -fuse-ld=lld -mcpu=cortex-a57+fp+simd+crypto+crc -mno-implicit-float -fstandalone-debug -fPIC -Wl,-Bsymbolic-functions -shared -stdlib=libc++ -nostdlib $COMPILER_FLAGS -o "$OUTPUT" "$INPUT"',
|
||||
cc='TOOLROOT="$COMPILER_DIR" "$COMPILER_DIR"/bin/clang++ -c -target aarch64-linux-elf --sysroot="$COMPILER_DIR"/botw-lib-musl-25ed8669943bee65a650700d340e451eda2a26ba -mcpu=cortex-a57+fp+simd+crypto+crc -mno-implicit-float -fstandalone-debug -fPIC -Wl,-Bsymbolic-functions -shared -stdlib=libc++ -nostdlib $COMPILER_FLAGS -o "$OUTPUT" "$INPUT"',
|
||||
)
|
||||
|
||||
CLANG_800 = ClangCompiler(
|
||||
id="clang-8.0.0",
|
||||
platform=SWITCH,
|
||||
cc='TOOLROOT="$COMPILER_DIR" "$COMPILER_DIR"/bin/clang++ -target aarch64-linux-elf --sysroot="$COMPILER_DIR"/botw-lib-musl-25ed8669943bee65a650700d340e451eda2a26ba -fuse-ld=lld -mcpu=cortex-a57+fp+simd+crypto+crc -mno-implicit-float -fstandalone-debug -fPIC -Wl,-Bsymbolic-functions -shared -stdlib=libc++ -nostdlib $COMPILER_FLAGS -o "$OUTPUT" "$INPUT"',
|
||||
cc='TOOLROOT="$COMPILER_DIR" "$COMPILER_DIR"/bin/clang++ -c -target aarch64-linux-elf --sysroot="$COMPILER_DIR"/botw-lib-musl-25ed8669943bee65a650700d340e451eda2a26ba -mcpu=cortex-a57+fp+simd+crypto+crc -mno-implicit-float -fstandalone-debug -fPIC -Wl,-Bsymbolic-functions -shared -stdlib=libc++ -nostdlib $COMPILER_FLAGS -o "$OUTPUT" "$INPUT"',
|
||||
)
|
||||
|
||||
# PS1
|
||||
@@ -307,6 +307,12 @@ PSYQ_MSDOS_CC = (
|
||||
)
|
||||
PSYQ_CC = 'cpp -P "$INPUT" | unix2dos | ${WINE} ${COMPILER_DIR}/CC1PSX.EXE -quiet ${COMPILER_FLAGS} -o "$OUTPUT".s && ${WINE} ${COMPILER_DIR}/ASPSX.EXE -quiet "$OUTPUT".s -o "$OUTPUT".obj && ${COMPILER_DIR}/psyq-obj-parser "$OUTPUT".obj -o "$OUTPUT"'
|
||||
|
||||
PSYQ33 = GCCPS1Compiler(
|
||||
id="psyq3.3",
|
||||
platform=PS1,
|
||||
cc=PSYQ_MSDOS_CC,
|
||||
)
|
||||
|
||||
PSYQ35 = GCCPS1Compiler(
|
||||
id="psyq3.5",
|
||||
platform=PS1,
|
||||
@@ -337,6 +343,12 @@ PSYQ43 = GCCPS1Compiler(
|
||||
cc=PSYQ_CC,
|
||||
)
|
||||
|
||||
PSYQ44 = GCCPS1Compiler(
|
||||
id="psyq4.4",
|
||||
platform=PS1,
|
||||
cc=PSYQ_CC,
|
||||
)
|
||||
|
||||
PSYQ45 = GCCPS1Compiler(
|
||||
id="psyq4.5",
|
||||
platform=PS1,
|
||||
@@ -1137,11 +1149,13 @@ _all_compilers: List[Compiler] = [
|
||||
CLANG_401,
|
||||
CLANG_800,
|
||||
# PS1
|
||||
PSYQ33,
|
||||
PSYQ35,
|
||||
PSYQ36,
|
||||
PSYQ40,
|
||||
PSYQ41,
|
||||
PSYQ43,
|
||||
PSYQ44,
|
||||
PSYQ45,
|
||||
PSYQ46,
|
||||
GCC263_PSX,
|
||||
@@ -1361,12 +1375,12 @@ _all_presets = [
|
||||
),
|
||||
Preset(
|
||||
"Legacy of Kain: Soul Reaver",
|
||||
PSYQ43,
|
||||
PSYQ44,
|
||||
"-O2 -G65536",
|
||||
),
|
||||
Preset(
|
||||
"Metal Gear Solid",
|
||||
PSYQ43,
|
||||
PSYQ44,
|
||||
"-O2 -G8",
|
||||
),
|
||||
Preset(
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
import django.db.migrations.operations.special
|
||||
from django.apps.registry import Apps
|
||||
from django.db import migrations
|
||||
from django.db.backends.base.schema import BaseDatabaseSchemaEditor
|
||||
|
||||
|
||||
def rename_compilers(apps: Apps, schema_editor: BaseDatabaseSchemaEditor) -> None:
|
||||
"""
|
||||
Migrate the compiler ID 'psyq4.3' to 'psyq4.4'
|
||||
"""
|
||||
|
||||
compiler_map = {
|
||||
"psyq4.3": "psyq4.4",
|
||||
}
|
||||
|
||||
Scratch = apps.get_model("coreapp", "Scratch")
|
||||
for row in (
|
||||
Scratch.objects.only("compiler")
|
||||
.filter(platform="ps1")
|
||||
.filter(compiler="psyq4.3")
|
||||
):
|
||||
if row.compiler in compiler_map:
|
||||
row.compiler = compiler_map[row.compiler]
|
||||
row.save(update_fields=["compiler"])
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("coreapp", "0036_fix_compiler_gah"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(
|
||||
code=rename_compilers,
|
||||
reverse_code=django.db.migrations.operations.special.RunPython.noop,
|
||||
)
|
||||
]
|
||||
@@ -45,9 +45,9 @@ MSDOS = Platform(
|
||||
name="Microsoft DOS",
|
||||
description="x86",
|
||||
arch="i686",
|
||||
assemble_cmd='${COMPILER_BASE_PATH}/msdos/i386_tools/jwasm -c -Fo"$OUTPUT" "$INPUT"',
|
||||
objdump_cmd="${COMPILER_BASE_PATH}/msdos/i386_tools/omf-objdump",
|
||||
nm_cmd="${COMPILER_BASE_PATH}/msdos/i386_tools/omf-nm",
|
||||
assemble_cmd='jwasm -c -Fo"$OUTPUT" "$INPUT"',
|
||||
objdump_cmd="omf-objdump",
|
||||
nm_cmd="omf-nm",
|
||||
asm_prelude="""
|
||||
.386P
|
||||
.model FLAT
|
||||
|
||||
@@ -4,5 +4,4 @@ DEBUG="on"
|
||||
ALLOWED_HOSTS="backend,localhost,127.0.0.1"
|
||||
USE_SANDBOX_JAIL="on"
|
||||
SANDBOX_DISABLE_PROC="true"
|
||||
COMPILER_BASE_PATH=/compilers
|
||||
MEDIA_URL=http://localhost/media/
|
||||
|
||||
@@ -6,17 +6,21 @@ DB_PORT=${DATABASE_PORT:-5432}
|
||||
BE_HOST=${BACKEND_HOST:-0.0.0.0}
|
||||
BE_PORT=${BACKEND_PORT:-8000}
|
||||
|
||||
poetry config virtualenvs.path /backend/virtualenvs
|
||||
|
||||
poetry install
|
||||
|
||||
podman system service --time=0 unix:///tmp/podman.sock &
|
||||
|
||||
poetry run /backend/compilers/download.py --podman
|
||||
|
||||
skill podman
|
||||
|
||||
until nc -z ${DB_HOST} ${DB_PORT} > /dev/null; do
|
||||
echo "Waiting for database to become available on ${DB_HOST}:${DB_PORT}..."
|
||||
sleep 1
|
||||
done
|
||||
|
||||
poetry config virtualenvs.path /backend/virtualenvs
|
||||
|
||||
poetry install
|
||||
|
||||
poetry run /backend/manage.py migrate
|
||||
|
||||
poetry run /backend/manage.py loaddata /backend/db.json
|
||||
|
||||
poetry run /backend/manage.py runserver ${BE_HOST}:${BE_PORT}
|
||||
|
||||
Generated
+104
-9
@@ -469,14 +469,14 @@ testing = ["coverage[toml] (>=5.0a4)", "pytest (>=4.6.11)"]
|
||||
|
||||
[[package]]
|
||||
name = "django-filter"
|
||||
version = "23.2"
|
||||
version = "23.3"
|
||||
description = "Django-filter is a reusable Django application for allowing users to filter querysets dynamically."
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "django-filter-23.2.tar.gz", hash = "sha256:2fe15f78108475eda525692813205fa6f9e8c1caf1ae65daa5862d403c6dbf00"},
|
||||
{file = "django_filter-23.2-py3-none-any.whl", hash = "sha256:d12d8e0fc6d3eb26641e553e5d53b191eb8cec611427d4bdce0becb1f7c172b5"},
|
||||
{file = "django-filter-23.3.tar.gz", hash = "sha256:015fe155582e1805b40629344e4a6cf3cc40450827d294d040b4b8c1749a9fa6"},
|
||||
{file = "django_filter-23.3-py3-none-any.whl", hash = "sha256:65bc5d1d8f4fff3aaf74cb5da537b6620e9214fb4b3180f6c560776b1b6dccd0"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@@ -595,6 +595,28 @@ compatible-mypy = ["mypy (>=1.4.0,<1.5.0)"]
|
||||
coreapi = ["coreapi (>=2.0.0)"]
|
||||
markdown = ["types-Markdown (>=0.1.5)"]
|
||||
|
||||
[[package]]
|
||||
name = "docker"
|
||||
version = "6.1.3"
|
||||
description = "A Python library for the Docker Engine API."
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "docker-6.1.3-py3-none-any.whl", hash = "sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9"},
|
||||
{file = "docker-6.1.3.tar.gz", hash = "sha256:aa6d17830045ba5ef0168d5eaa34d37beeb113948c413affe1d5991fc11f9a20"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
packaging = ">=14.0"
|
||||
pywin32 = {version = ">=304", markers = "sys_platform == \"win32\""}
|
||||
requests = ">=2.26.0"
|
||||
urllib3 = ">=1.26.0"
|
||||
websocket-client = ">=0.32.0"
|
||||
|
||||
[package.extras]
|
||||
ssh = ["paramiko (>=2.4.3)"]
|
||||
|
||||
[[package]]
|
||||
name = "drf-extensions"
|
||||
version = "0.7.1"
|
||||
@@ -926,7 +948,7 @@ files = [
|
||||
name = "packaging"
|
||||
version = "23.1"
|
||||
description = "Core utilities for Python packages"
|
||||
category = "dev"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
@@ -1057,6 +1079,24 @@ files = [
|
||||
docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"]
|
||||
test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"]
|
||||
|
||||
[[package]]
|
||||
name = "podman"
|
||||
version = "4.6.0"
|
||||
description = "Bindings for Podman RESTful API"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
files = [
|
||||
{file = "podman-4.6.0-py3-none-any.whl", hash = "sha256:83bed3d57762bf9df4f703558c303ef019626ad895ba19f876d2e0cca5588e0b"},
|
||||
{file = "podman-4.6.0.tar.gz", hash = "sha256:cf1d009a6a5aed36e4daec61c2e95a49d10b19c5422330ffacb6846c68d18885"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
pyxdg = ">=0.26"
|
||||
requests = ">=2.24"
|
||||
tomli = {version = ">=1.2.3", markers = "python_version < \"3.11\""}
|
||||
urllib3 = "*"
|
||||
|
||||
[[package]]
|
||||
name = "psycopg2-binary"
|
||||
version = "2.9.7"
|
||||
@@ -1217,6 +1257,42 @@ files = [
|
||||
{file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pywin32"
|
||||
version = "306"
|
||||
description = "Python for Window Extensions"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
files = [
|
||||
{file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"},
|
||||
{file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"},
|
||||
{file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"},
|
||||
{file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"},
|
||||
{file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"},
|
||||
{file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"},
|
||||
{file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"},
|
||||
{file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"},
|
||||
{file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"},
|
||||
{file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"},
|
||||
{file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"},
|
||||
{file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"},
|
||||
{file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"},
|
||||
{file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pyxdg"
|
||||
version = "0.28"
|
||||
description = "PyXDG contains implementations of freedesktop.org standards in python."
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
files = [
|
||||
{file = "pyxdg-0.28-py2.py3-none-any.whl", hash = "sha256:bdaf595999a0178ecea4052b7f4195569c1ff4d344567bccdc12dfdf02d545ab"},
|
||||
{file = "pyxdg-0.28.tar.gz", hash = "sha256:3267bb3074e934df202af2ee0868575484108581e6f3cb006af1da35395e88b4"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pyyaml"
|
||||
version = "6.0.1"
|
||||
@@ -1425,14 +1501,14 @@ tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=4.6)", "pytest-cov",
|
||||
|
||||
[[package]]
|
||||
name = "sentry-sdk"
|
||||
version = "1.30.0"
|
||||
version = "1.31.0"
|
||||
description = "Python client for Sentry (https://sentry.io)"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
files = [
|
||||
{file = "sentry-sdk-1.30.0.tar.gz", hash = "sha256:7dc873b87e1faf4d00614afd1058bfa1522942f33daef8a59f90de8ed75cd10c"},
|
||||
{file = "sentry_sdk-1.30.0-py2.py3-none-any.whl", hash = "sha256:2e53ad63f96bb9da6570ba2e755c267e529edcf58580a2c0d2a11ef26e1e678b"},
|
||||
{file = "sentry-sdk-1.31.0.tar.gz", hash = "sha256:6de2e88304873484207fed836388e422aeff000609b104c802749fd89d56ba5b"},
|
||||
{file = "sentry_sdk-1.31.0-py2.py3-none-any.whl", hash = "sha256:64a7141005fb775b9db298a30de93e3b83e0ddd1232dc6f36eb38aebc1553291"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@@ -1442,10 +1518,12 @@ urllib3 = {version = ">=1.26.11", markers = "python_version >= \"3.6\""}
|
||||
[package.extras]
|
||||
aiohttp = ["aiohttp (>=3.5)"]
|
||||
arq = ["arq (>=0.23)"]
|
||||
asyncpg = ["asyncpg (>=0.23)"]
|
||||
beam = ["apache-beam (>=2.12)"]
|
||||
bottle = ["bottle (>=0.12.13)"]
|
||||
celery = ["celery (>=3)"]
|
||||
chalice = ["chalice (>=1.16.0)"]
|
||||
clickhouse-driver = ["clickhouse-driver (>=0.2.0)"]
|
||||
django = ["django (>=1.8)"]
|
||||
falcon = ["falcon (>=1.4)"]
|
||||
fastapi = ["fastapi (>=0.79.0)"]
|
||||
@@ -1536,7 +1614,7 @@ files = [
|
||||
name = "tomli"
|
||||
version = "2.0.1"
|
||||
description = "A lil' TOML parser"
|
||||
category = "dev"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
@@ -1755,6 +1833,23 @@ files = [
|
||||
[package.extras]
|
||||
watchmedo = ["PyYAML (>=3.10)"]
|
||||
|
||||
[[package]]
|
||||
name = "websocket-client"
|
||||
version = "1.6.3"
|
||||
description = "WebSocket client for Python with low level API options"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "websocket-client-1.6.3.tar.gz", hash = "sha256:3aad25d31284266bcfcfd1fd8a743f63282305a364b8d0948a43bd606acc652f"},
|
||||
{file = "websocket_client-1.6.3-py3-none-any.whl", hash = "sha256:6cfc30d051ebabb73a5fa246efdcc14c8fbebbd0330f8984ac3bb6d9edd2ad03"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"]
|
||||
optional = ["python-socks", "wsaccel"]
|
||||
test = ["websockets"]
|
||||
|
||||
[[package]]
|
||||
name = "wrapt"
|
||||
version = "1.15.0"
|
||||
@@ -1843,4 +1938,4 @@ files = [
|
||||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.9"
|
||||
content-hash = "1d087268e1ab077362bdc212b25e10fec9d759ea431f9e6007d1f8032a4a8dd1"
|
||||
content-hash = "11efb2fa54db10150e87ddaffe1517605cdcb6fe3cfc5be82c534ce958dff517"
|
||||
|
||||
@@ -28,6 +28,8 @@ sentry-sdk = "^1.21.1"
|
||||
django-session-timeout = "^0.1.0"
|
||||
django = "^4.2"
|
||||
requests = "^2.29.0"
|
||||
docker = "6.1.3"
|
||||
podman = "4.6.0"
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
black = "^23.3.0"
|
||||
|
||||
+14
-12
@@ -30,19 +30,21 @@ services:
|
||||
- setuid
|
||||
- setgid
|
||||
- setfcap
|
||||
devices:
|
||||
- "/dev/fuse:/dev/fuse"
|
||||
env_file:
|
||||
- backend/docker.dev.env
|
||||
- backend/docker.dev.env
|
||||
ports:
|
||||
- "8000:8000"
|
||||
- "8000:8000"
|
||||
security_opt:
|
||||
- apparmor=unconfined
|
||||
- seccomp=unconfined
|
||||
volumes:
|
||||
- ./backend:/backend
|
||||
- ./backend:/backend
|
||||
tmpfs:
|
||||
# Use a separate tmpfs to prevent a rogue jailed process
|
||||
# from filling /tmp on the parent container
|
||||
- /sandbox/tmp:exec,uid=1000,gid=1000,size=64M,mode=0700
|
||||
# Use a separate tmpfs to prevent a rogue jailed process
|
||||
# from filling /tmp on the parent container
|
||||
- /sandbox/tmp:exec,uid=1000,gid=1000,size=64M,mode=0700
|
||||
frontend:
|
||||
build: frontend
|
||||
environment:
|
||||
@@ -50,14 +52,14 @@ services:
|
||||
INTERNAL_API_BASE: http://backend:8000/api
|
||||
FRONTEND_USE_IMAGE_PROXY: "off"
|
||||
ports:
|
||||
- "8080:8080"
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
- ./frontend:/frontend
|
||||
- .env:/.env
|
||||
- ./frontend:/frontend
|
||||
- .env:/.env
|
||||
nginx:
|
||||
image: nginx:1.22-alpine
|
||||
ports:
|
||||
- "80:80"
|
||||
- "80:80"
|
||||
volumes:
|
||||
- ./nginx:/etc/nginx/conf.d
|
||||
- ./backend/media:/media
|
||||
- ./nginx:/etc/nginx/conf.d
|
||||
- ./backend/media:/media
|
||||
|
||||
@@ -117,13 +117,29 @@
|
||||
"gcc-5026": "GCC 4.0.0 (Xcode 2.1) (C)",
|
||||
"gcc-5026-cpp": "GCC 4.0.0 (Xcode 2.1) (C++)",
|
||||
"gcc3-1041": "GCC 3.1 (Mac OS 10.1.4) (C)",
|
||||
|
||||
"gcc2.6.3-psx": "gcc 2.6.3-psx + maspsx",
|
||||
"gcc2.6.3-mipsel": "gcc 2.6.3 + maspsx",
|
||||
"gcc2.7.1-mipsel": "gcc 2.7.1 + maspsx",
|
||||
"gcc2.7.2-mipsel": "gcc 2.7.2 + maspsx",
|
||||
"gcc2.7.2.1-mipsel": "gcc 2.7.2.1 + maspsx",
|
||||
"gcc2.7.2.2-mipsel": "gcc 2.7.2.2 + maspsx",
|
||||
"gcc2.7.2.3-mipsel": "gcc 2.7.2.3 + maspsx",
|
||||
"gcc2.8.0-mipsel": "gcc 2.8.0 + maspsx",
|
||||
"gcc2.8.1-mipsel": "gcc 2.8.1 + maspsx",
|
||||
"gcc2.91.66-mipsel": "gcc 2.91.66 + maspsx",
|
||||
"gcc2.95.2-mipsel": "gcc 2.95.2 + maspsx",
|
||||
|
||||
"psyq3.3": "PSYQ3.3 (gcc 2.6.0 + aspsx 2.21)",
|
||||
"psyq3.5": "PSYQ3.5 (gcc 2.6.0 + aspsx 2.34)",
|
||||
"psyq3.6": "PSYQ3.6 (gcc 2.6.3 + aspsx 2.34)",
|
||||
"psyq4.0": "PSYQ4.0 (gcc 2.7.2)",
|
||||
"psyq4.1": "PSYQ4.1 (gcc 2.7.2)",
|
||||
"psyq4.3": "PSYQ4.3 (gcc 2.8.1)",
|
||||
"psyq4.5": "PSYQ4.5 (gcc 2.91.66)",
|
||||
"psyq4.6": "PSYQ4.6 (gcc 2.95.2)",
|
||||
"psyq3.6": "PSYQ3.6 (gcc 2.7.2 + aspsx 2.34)",
|
||||
"psyq4.0": "PSYQ4.0 (gcc 2.7.2 + aspsx 2.56)",
|
||||
"psyq4.1": "PSYQ4.1 (gcc 2.7.2 + aspsx 2.67)",
|
||||
"psyq4.3": "PSYQ4.3 (gcc 2.8.0 + aspsx 2.77)",
|
||||
"psyq4.4": "PSYQ4.4 (gcc 2.8.1 + aspsx 2.79)",
|
||||
"psyq4.5": "PSYQ4.5 (gcc 2.91.66 + aspsx 2.81)",
|
||||
"psyq4.6": "PSYQ4.6 (gcc 2.95.2 + aspsx 2.86)",
|
||||
|
||||
"wcc10.5": "Watcom Optimizing C i386 Compiler 10.5",
|
||||
"wpp10.5": "Watcom Optimizing C++ i386 Compiler 10.5",
|
||||
"wcc10.5a": "Watcom Optimizing C i386 Compiler 10.5a",
|
||||
|
||||
Reference in New Issue
Block a user