FROM ghcr.io/webassembly/wasi-sdk:wasi-sdk-21

RUN apt-get update && apt-get install -y --no-install-recommends \
    python3 \
    ca-certificates \
    curl \
    xz-utils \
  && rm -rf /var/lib/apt/lists/*

ARG WASMTIME_VERSION=v41.0.3
RUN arch="$(uname -m)" && \
    case "$arch" in \
      x86_64) target="x86_64-linux" ;; \
      aarch64|arm64) target="aarch64-linux" ;; \
      *) echo "unsupported arch: $arch" && exit 1 ;; \
    esac && \
    curl -fsSL "https://github.com/bytecodealliance/wasmtime/releases/download/${WASMTIME_VERSION}/wasmtime-${WASMTIME_VERSION}-${target}.tar.xz" -o /tmp/wasmtime.tar.xz && \
    mkdir -p /tmp/wasmtime && \
    tar -xf /tmp/wasmtime.tar.xz -C /tmp/wasmtime --strip-components=1 && \
    mv /tmp/wasmtime/wasmtime /usr/local/bin/wasmtime && \
    chmod +x /usr/local/bin/wasmtime && \
    rm -rf /tmp/wasmtime /tmp/wasmtime.tar.xz

WORKDIR /app
COPY judge.py /app/judge.py

ENV CHALLENGE_FILE=/pack.json
ENV SUBMISSION_FILE=/solution.c
ENV WASM_CLANG=/usr/lib/llvm-17/bin/clang
ENV WASI_SYSROOT=/wasi-sysroot
ENTRYPOINT ["python3", "/app/judge.py"]
