openpencil/crates/openpencil-shell-native/Cargo.toml
Kayshen-X 881cdd2a46 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:03 +08:00

41 lines
2 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[package]
name = "openpencil-shell-native"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
description = "OpenPencil shell — native (winit + skia-safe + accesskit) backend"
[lib]
name = "openpencil_shell_native"
path = "src/lib.rs"
[dependencies]
openpencil-shell-core = { path = "../openpencil-shell-core", version = "0.1.0" }
# Native-only deps cfg-gated 在 wasm32 之外。这一步关键(解 codex round 2 B1 BLOCK
# 如果不 cfg-gatecargo 会先 fetch + run skia-safe 的 build.rs在 wasm32 上构建失败),
# Step 5 grep `must NOT be compiled for wasm32` 永远命中不到——会被 skia 错误盖过。
#
# Phase 1 skeleton 阶段:故意保持 deps 最小,仅声明意图所需的核心 cratewinit
# skia-safe / accesskit / accesskit_winit 等在 Stage F 真正实现 RenderBackend 时再加。
# 原因Rust 1.80 toolchain (rust-toolchain.toml) 对 home/hashbrown 等 crate 当前
# 版本的 edition2024 / MSRV 1.81+ 需求不兼容,加完整依赖会导致下载阶段失败。
# 详见提交说明 + Phase 1 Gate codex review。
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
winit = { version = "0.30", default-features = false }
# TRANSIENT (Step 1a P0 CI gate only — reverted after notes commit, before Task 1 starts).
# These deps power `examples/p0_probe.rs` + `tests/p0_probe.rs` (gated `#[ignore = "P0_PROBE_GATE"]`).
# Pinned to versions resolved in /tmp/skia-glow-probe per spec §7. Task 1 will
# re-introduce them as permanent prod deps in this same target block.
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
skia-safe = { version = "0.97.0", features = ["gl"] }
glutin = "0.32.3"
glutin-winit = "0.5.0"
glow = "0.17.0"
raw-window-handle = "0.6.2"
scopeguard = "1.2.0"
# Re-enable winit defaults for the dev probe (prod dep is no-default — Stage F
# will choose the final feature set). Defaults pull in x11+wayland on Linux.
winit = { version = "0.30" }