openpencil/.github/workflows/wasm-bundle-check.yml
Kayshen-X 22003f9b0c chore(shell-native): add transient P0 probe gate (Step 1a)
Drives the three-OS CI matrix verification of the skia-safe + glutin +
glow + winit dep stack per Step 1a spec §7.

- examples/p0_probe.rs: stencil_visibility + readback chain runner (must
  own a real OS main thread because winit on macOS rejects
  EventLoop::new() from cargo test worker threads).
- tests/p0_probe.rs: subprocess-invoke wrapper, gated
  #[ignore = "P0_PROBE_GATE"] so default cargo test stays untouched.
- Cargo.toml: add transient [target.'cfg(not(target_arch = "wasm32"))'.
  dev-dependencies] block (skia-safe 0.97 + glutin 0.32.3 + glutin-winit
  0.5.0 + glow 0.17.0 + raw-window-handle 0.6.2 + scopeguard 1.2.0 +
  winit defaults). Pinned to versions resolved in /tmp/skia-glow-probe.
- .github/workflows/rust-check.yml: install Linux GL prereqs (xvfb,
  mesa, libxkbcommon, libwayland) and add a P0-probe-gate step running
  cargo test --ignored on each OS (Linux through xvfb-run; Windows
  early-returns per spec §8.2 WINDOWS_GPU_DEFERRED_NO_RUNNER).

All three artefacts are TRANSIENT — reverted in a follow-up cleanup
commit after CI is green and the loader-compat notes commit lands.
Task 1 owns the permanent integration.
2026-05-05 12:23:49 +08:00

51 lines
1.5 KiB
YAML

name: WASM bundle check (kickoff §1.2)
on:
pull_request:
paths:
- 'Cargo.toml'
- 'Cargo.lock'
- 'crates/**'
- 'deny.toml'
- '.github/workflows/wasm-bundle-check.yml'
push:
branches: [main, 'feat/rust-ification']
jobs:
wasm32-check:
name: cargo check --target wasm32-unknown-unknown
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.85"
targets: wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
with:
shared-key: wasm32-cache
- name: Forward — bucket A crates compile on wasm32
run: |
cargo check --target wasm32-unknown-unknown \
-p openpencil-shell-web --no-default-features --features web
cargo check --target wasm32-unknown-unknown \
-p pen-types -p pen-core -p pen-engine -p pen-codegen -p pen-figma
wasm32-deny:
name: cargo-deny --target wasm32-unknown-unknown check bans
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
- name: Reverse — blacklisted crates not in wasm bundle
uses: EmbarkStudios/cargo-deny-action@v2 # cargo-deny 0.18+ via the action (Phase 1 Task 1.8 finding)
with:
command: check bans
arguments: --target wasm32-unknown-unknown