diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f0d8b38..cc2559a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,8 +8,25 @@ on: branches: [main] jobs: + build_devcontainer: + name: Build (Devcontainer) + run-on: ubuntu-latest + env: + TAG: cpython-devcontainer:1.0.0-${{ github.run_id }} + steps: + - name: Checkout Push to Registry action + uses: actions/checkout@v4 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build Dockerfile + uses: docker/build-push-action@v5 + with: + context: ./devcontainer + load: true + tags: ${{ env.TAG }} + build_autoconf: - name: Build and test + name: Build and test (Autoconf) strategy: fail-fast: false matrix: diff --git a/devcontainer/Dockerfile b/devcontainer/Dockerfile new file mode 100644 index 0000000..5367238 --- /dev/null +++ b/devcontainer/Dockerfile @@ -0,0 +1,26 @@ +FROM docker.io/library/fedora:40 + +ENV CC=clang + +ENV WASI_SDK_VERSION=24 +ENV WASI_SDK_PATH=/opt/wasi-sdk + +ENV WASMTIME_HOME=/opt/wasmtime +ENV WASMTIME_VERSION=22.0.0 +ENV WASMTIME_CPU_ARCH=x86_64 + +RUN dnf -y --nodocs --setopt=install_weak_deps=False install /usr/bin/{blurb,clang,curl,git,ln,tar,xz} 'dnf-command(builddep)' && \ + dnf -y --nodocs --setopt=install_weak_deps=False builddep python3 && \ + dnf -y clean all + +RUN mkdir ${WASI_SDK_PATH} && \ + curl --location https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION}/wasi-sdk-${WASI_SDK_VERSION}.0-x86_64-linux.tar.gz | \ + tar --strip-components 1 --directory ${WASI_SDK_PATH} --extract --gunzip + +RUN mkdir --parents ${WASMTIME_HOME} && \ + curl --location "https://github.com/bytecodealliance/wasmtime/releases/download/v${WASMTIME_VERSION}/wasmtime-v${WASMTIME_VERSION}-${WASMTIME_CPU_ARCH}-linux.tar.xz" | \ + xz --decompress | \ + tar --strip-components 1 --directory ${WASMTIME_HOME} -x && \ + ln -s ${WASMTIME_HOME}/wasmtime /usr/local/bin + +