aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrett Cannon <brett@python.org>2024-03-11 11:59:09 -0700
committerGitHub <noreply@github.com>2024-03-11 11:59:09 -0700
commit05070f40bbc3384c36c8b3dab76345ba92098d42 (patch)
tree8ac94e197b2e22bc042e8e9a870393ce41778472
parentgh-110850: Fix _PyTime_FromSecondsDouble() API (#116606) (diff)
downloadcpython-05070f40bbc3384c36c8b3dab76345ba92098d42.tar.gz
cpython-05070f40bbc3384c36c8b3dab76345ba92098d42.tar.bz2
cpython-05070f40bbc3384c36c8b3dab76345ba92098d42.zip
GH-115976: Add WASI to CI (GH-116516)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
-rw-r--r--.github/workflows/build.yml10
-rw-r--r--.github/workflows/reusable-wasi.yml71
2 files changed, 81 insertions, 0 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 20d1fad40ec..ae14046935b 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -301,6 +301,14 @@ jobs:
- name: SSL tests
run: ./python Lib/test/ssltests.py
+ build_wasi:
+ name: 'WASI'
+ needs: check_source
+ if: needs.check_source.outputs.run_tests == 'true'
+ uses: ./.github/workflows/reusable-wasi.yml
+ with:
+ config_hash: ${{ needs.check_source.outputs.config_hash }}
+
test_hypothesis:
name: "Hypothesis tests on Ubuntu"
runs-on: ubuntu-20.04
@@ -525,6 +533,7 @@ jobs:
- build_ubuntu
- build_ubuntu_free_threading
- build_ubuntu_ssltests
+ - build_wasi
- build_windows
- build_windows_free_threading
- test_hypothesis
@@ -558,6 +567,7 @@ jobs:
build_ubuntu,
build_ubuntu_free_threading,
build_ubuntu_ssltests,
+ build_wasi,
build_windows,
build_windows_free_threading,
build_asan,
diff --git a/.github/workflows/reusable-wasi.yml b/.github/workflows/reusable-wasi.yml
new file mode 100644
index 00000000000..995e669c228
--- /dev/null
+++ b/.github/workflows/reusable-wasi.yml
@@ -0,0 +1,71 @@
+on:
+ workflow_call:
+ inputs:
+ config_hash:
+ required: true
+ type: string
+
+jobs:
+ build_wasi_reusable:
+ name: 'build and test'
+ timeout-minutes: 60
+ runs-on: ubuntu-20.04
+ env:
+ WASMTIME_VERSION: 18.0.2
+ WASI_SDK_VERSION: 20
+ WASI_SDK_PATH: /opt/wasi-sdk
+ CROSS_BUILD_PYTHON: cross-build/build
+ CROSS_BUILD_WASI: cross-build/wasm32-wasi
+ steps:
+ - uses: actions/checkout@v4
+ # No problem resolver registered as one doesn't currently exist for Clang.
+ - name: "Install wasmtime"
+ uses: jcbhmr/setup-wasmtime@v2
+ with:
+ wasmtime-version: ${{ env.WASMTIME_VERSION }}
+ - name: "Restore WASI SDK"
+ id: cache-wasi-sdk
+ uses: actions/cache@v4
+ with:
+ path: ${{ env.WASI_SDK_PATH }}
+ key: ${{ runner.os }}-wasi-sdk-${{ env.WASI_SDK_VERSION }}
+ - name: "Install WASI SDK"
+ if: steps.cache-wasi-sdk.outputs.cache-hit != 'true'
+ run: |
+ mkdir ${{ env.WASI_SDK_PATH }} && \
+ curl -s -S --location https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${{ env.WASI_SDK_VERSION }}/wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-linux.tar.gz | \
+ tar --strip-components 1 --directory ${{ env.WASI_SDK_PATH }} --extract --gunzip
+ - name: "Configure ccache action"
+ uses: hendrikmuhs/ccache-action@v1.2
+ with:
+ save: ${{ github.event_name == 'push' }}
+ max-size: "200M"
+ - name: "Add ccache to PATH"
+ run: echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
+ - name: "Install Python"
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.x'
+ - name: "Restore Python build config.cache"
+ uses: actions/cache@v4
+ with:
+ path: ${{ env.CROSS_BUILD_PYTHON }}/config.cache
+ key: ${{ github.job }}-${{ runner.os }}-${{ env.IMAGE_VERSION }}-${{ inputs.config_hash }}
+ - name: "Configure build Python"
+ run: python3 Tools/wasm/wasi.py configure-build-python -- --config-cache --with-pydebug
+ - name: "Make build Python"
+ run: python3 Tools/wasm/wasi.py make-build-python
+ - name: "Restore host config.cache"
+ uses: actions/cache@v4
+ with:
+ path: ${{ env.CROSS_BUILD_WASI }}/config.cache
+ key: ${{ github.job }}-${{ runner.os }}-${{ env.IMAGE_VERSION }}-wasi-sdk-${{ env.WASI_SDK_VERSION }}-${{ inputs.config_hash }}
+ - name: "Configure host"
+ # `--with-pydebug` inferred from configure-build-python
+ run: python3 Tools/wasm/wasi.py configure-host -- --config-cache
+ - name: "Make host"
+ run: python3 Tools/wasm/wasi.py make-host
+ - name: "Display build info"
+ run: make --directory ${{ env.CROSS_BUILD_WASI }} pythoninfo
+ - name: "Test"
+ run: make --directory ${{ env.CROSS_BUILD_WASI }} test