| name: Reusable WASI |
| |
| on: |
| workflow_call: |
| |
| env: |
| FORCE_COLOR: 1 |
| |
| jobs: |
| build-wasi-reusable: |
| name: 'build and test' |
| runs-on: ubuntu-24.04-arm |
| timeout-minutes: 60 |
| env: |
| WASMTIME_VERSION: 38.0.3 |
| CROSS_BUILD_PYTHON: cross-build/build |
| CROSS_BUILD_WASI: cross-build/wasm32-wasip1 |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| persist-credentials: false |
| # No problem resolver registered as one doesn't currently exist for Clang. |
| - name: "Install wasmtime" |
| uses: bytecodealliance/actions/wasmtime/setup@v1 |
| with: |
| version: ${{ env.WASMTIME_VERSION }} |
| - name: "Read WASI SDK version" |
| id: wasi-sdk-version |
| run: | |
| import tomllib |
| from pathlib import Path |
| import os |
| config = tomllib.loads(Path("Platforms/WASI/config.toml").read_text()) |
| version = config["targets"]["wasi-sdk"] |
| with open(os.environ["GITHUB_OUTPUT"], "a") as f: |
| f.write(f"version={version}\n") |
| shell: python |
| - name: "Install WASI SDK" |
| id: install-wasi-sdk |
| uses: bytecodealliance/setup-wasi-sdk-action@b2de090b44eb70013ee96b393727d473b35e1728 |
| with: |
| version: ${{ steps.wasi-sdk-version.outputs.version }} |
| add-to-path: false |
| - name: "Install Python" |
| uses: actions/setup-python@v6 |
| with: |
| python-version: '3.x' |
| - name: "Runner image version" |
| run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV" |
| - name: "Configure build Python" |
| run: python3 Platforms/WASI configure-build-python -- --config-cache --with-pydebug |
| - name: "Make build Python" |
| run: python3 Platforms/WASI make-build-python |
| - name: "Configure host" |
| # `--with-pydebug` inferred from configure-build-python |
| run: python3 Platforms/WASI configure-host -- --config-cache |
| env: |
| WASI_SDK_PATH: ${{ steps.install-wasi-sdk.outputs.wasi-sdk-path }} |
| - name: "Make host" |
| run: python3 Platforms/WASI make-host |
| - name: "Display build info" |
| run: make --directory "${CROSS_BUILD_WASI}" pythoninfo |
| - name: "Test" |
| run: make --directory "${CROSS_BUILD_WASI}" test |