mirror of
https://github.com/python/cpython.git
synced 2026-04-15 16:21:24 +00:00
(cherry picked from commit c94048be02)
Co-authored-by: Hood Chatham <roberthoodchatham@gmail.com>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Co-authored-by: Victor Stinner <vstinner@python.org>
74 lines
2.8 KiB
YAML
74 lines
2.8 KiB
YAML
name: Reusable Emscripten
|
|
|
|
on:
|
|
workflow_call:
|
|
|
|
env:
|
|
FORCE_COLOR: 1
|
|
|
|
jobs:
|
|
build-emscripten-reusable:
|
|
name: 'build and test'
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 60
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
persist-credentials: false
|
|
- name: "Read Emscripten config"
|
|
id: emscripten-config
|
|
shell: python
|
|
run: |
|
|
import hashlib
|
|
import json
|
|
import os
|
|
import tomllib
|
|
from pathlib import Path
|
|
|
|
config = tomllib.loads(Path("Platforms/emscripten/config.toml").read_text())
|
|
h = hashlib.sha256()
|
|
h.update(json.dumps(config["dependencies"], sort_keys=True).encode())
|
|
h.update(Path("Platforms/emscripten/make_libffi.sh").read_bytes())
|
|
h.update(b'1') # Update to explicitly bust cache
|
|
emsdk_cache = Path(os.environ["RUNNER_TEMP"]) / "emsdk-cache"
|
|
with open(os.environ["GITHUB_OUTPUT"], "a") as f:
|
|
f.write(f"emscripten-version={config['emscripten-version']}\n")
|
|
f.write(f"node-version={config['node-version']}\n")
|
|
f.write(f"deps-hash={h.hexdigest()}\n")
|
|
with open(os.environ["GITHUB_ENV"], "a") as f:
|
|
f.write(f"EMSDK_CACHE={emsdk_cache}\n")
|
|
- name: "Install Node.js"
|
|
uses: actions/setup-node@v6
|
|
with:
|
|
node-version: ${{ steps.emscripten-config.outputs.node-version }}
|
|
- name: "Cache Emscripten SDK"
|
|
id: emsdk-cache
|
|
uses: actions/cache@v5
|
|
with:
|
|
path: ${{ env.EMSDK_CACHE }}
|
|
key: emsdk-${{ steps.emscripten-config.outputs.emscripten-version }}-${{ steps.emscripten-config.outputs.deps-hash }}
|
|
restore-keys: emsdk-${{ steps.emscripten-config.outputs.emscripten-version }}
|
|
- 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: "Install Emscripten"
|
|
run: python3 Platforms/emscripten install-emscripten
|
|
- name: "Configure build Python"
|
|
run: python3 Platforms/emscripten configure-build-python -- --config-cache --with-pydebug
|
|
- name: "Make build Python"
|
|
run: python3 Platforms/emscripten make-build-python
|
|
- name: "Make dependencies"
|
|
run: >-
|
|
python3 Platforms/emscripten make-dependencies
|
|
${{ steps.emsdk-cache.outputs.cache-hit == 'true' && '--check-up-to-date' || '' }}
|
|
- name: "Configure host Python"
|
|
run: python3 Platforms/emscripten configure-host --host-runner node -- --config-cache
|
|
- name: "Make host Python"
|
|
run: python3 Platforms/emscripten make-host
|
|
- name: "Display build info"
|
|
run: python3 Platforms/emscripten run --pythoninfo
|
|
- name: "Test"
|
|
run: python3 Platforms/emscripten run --test
|