Skip to content

Commit a5f8164

Browse files
committed
docs: 清掉两份文档里被本轮实现推翻的断言
三处过时: §20.2 的缺口表还写着 libxkbcommon / libinput / libudev+libseat 仍缺 —— 当天都做完了。 结论也从「缺的是输入链」变成「渲染链和输入链都补齐了,只剩 xkeyboard-config 的数据集, 而它属于生态」。 覆盖面设计 §0.1 那句「新增仓 0」当时就写在判据旁边,实现推翻了它 —— 而且不止 G3: libevdev 的 event-names.h 和 libxkbcommon 的 bison parser 各自是必须先跑的生成器, 两者又都是独立上游独立版本。新增仓数量 = 3。判据本身没错,错的是「已有的 fork 装得下」 这个假设,而装不下的原因很具体:一个仓一个上游一个版本,因为 CI 要对着一份 release tarball 逐字节 diff upstream/。 交付表补上输入链五个包和九份 CN 镜像。
1 parent b7121aa commit a5f8164

2 files changed

Lines changed: 29 additions & 10 deletions

File tree

‎.agents/docs/2026-08-30-gbm-cross-repo-closed-loop-plan.md‎

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1441,11 +1441,16 @@ issue #527 问的是「在系统级开发(Wayland 合成器、Mesa/Vulkan 扩展
14411441
| **`libGLESv2`** | ❌ **没有**(最要命的一个) | ✅ `freedesktop.glesv2`,连同 glesv1 / opengl |
14421442
| `wayland-protocols`(xdg-shell 等 XML) | ❌ 没有 | ✅ 三个 tier 包 stable / staging / unstable |
14431443
| `pixman` | ❌ 没有 | ✅ `compat.pixman` |
1444-
| `libxkbcommon` | ❌ 没有 | ❌ **仍缺**(键盘;还需 xkeyboard-config 数据包) |
1445-
| `libinput` | ❌ 没有 | ❌ **仍缺**(输入;拖 libevdev / mtdev / libudev) |
1446-
| `libudev` / `libseat` | ❌ 没有 | ❌ **仍缺**,需单独决策 |
1447-
1448-
**所以现在缺的是输入链,不再是渲染链。**
1444+
| `libxkbcommon` | ❌ 没有 | ✅ `freedesktop.libxkbcommon`(fork,bison parser 预生成) |
1445+
| `libinput` | ❌ 没有 | ✅ `compat.libinput`,连同 `libevdev` / `mtdev` |
1446+
| `libudev` / `libseat` | ❌ 没有 | ✅ `compat.libudev`(libudev-zero)、`compat.libseat`,**都没碰 systemd** |
1447+
| xkeyboard-config 数据 | ❌ 没有 | ⚠ **属于生态而非本索引** —— 见覆盖面设计 §10.9 |
1448+
1449+
**当天之内渲染链和输入链都补齐了。** 唯一剩下的是 xkeyboard-config 的**数据集**,而它
1450+
的正确归属是 xim-pkgindex:那是运行期数据发现,与 `GBM_BACKENDS_PATH` /
1451+
`__EGL_VENDOR_LIBRARY_DIRS` 同类,一律由环境声明。实测生态里的 `xim:libxkbcommon`
1452+
payload 只有库、不带 xkb 数据,所以 `XKB_CONFIG_ROOT` 无处可指 —— 与 Vulkan 静默落到
1453+
llvmpipe 完全同构的一个缺口。
14491454

14501455
**`libGLESv2` 为什么最要命**:合成器是通过 EGL 拿 context、然后用 **GLES2** 画的。
14511456
这一轮建出了 `libEGL.so.1`,但 libglvnd 的 GL/GLES 系列(`libGL`、`libGLX`、`libOpenGL`、

‎.agents/docs/2026-08-30-graphics-stack-coverage-design.md‎

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ Date: 2026-08-30 · 前置:[`2026-08-30-gbm-cross-repo-closed-loop-plan.md`](202
3131
能就是 A,不能就是 B。B 的成本主要在维护一个 fork,所以**不要因为「顺便加个模块层」而
3232
把 A 推成 B** —— 模块层是 B 的**结果**,不是选 B 的理由。
3333

34-
按这条,本设计里 G1/G3 是 B(都进已有的 fork,新增仓 0),G4 全是 A。
34+
按这条,本设计里 G1/G3 是 B,G4 全是 A。
35+
⚠ 设计时以为「都进已有的 fork,新增仓 0」——**实现推翻了这一半**:wayland-protocols、
36+
libevdev、libxkbcommon 各是独立上游、独立版本,一个仓一个上游一个版本,所以新增了三个
37+
fork。见 §10.2。
3538

3639
---
3740

@@ -408,16 +411,27 @@ G6 libudev 路线决策 → libseat ← 最后,单独评估
408411
| G3 | **mcpplibs/wayland-protocols**(新建)三个 tier | `1.49`,CI 待绿 |
409412
| G4a | `compat.pixman` 0.46.4 | 已实测 |
410413
| 索引 | `freedesktop.{glesv2,glesv1,opengl}`、三个 `wayland-protocols-*`、`compat.pixman` | PR #294 |
411-
| 镜像 | libglvnd / wayland-protocols / pixman 三份 CN,均已核对 sha256 | 完成 |
414+
| G4b | **mcpplibs/libxkbcommon**(新建)bison parser 预生成 | `1.13.2`,CI 全绿 |
415+
| G5 | `compat.mtdev`、`compat.libudev`(libudev-zero)、**mcpplibs/libevdev**(新建)、`compat.libinput` | 全部实测 |
416+
| G6 | `compat.libseat`,只开 seatd + builtin,**没碰 systemd** | 实测 |
417+
| 镜像 | libglvnd / wayland-protocols / pixman / mtdev / libudev-zero / seatd / libevdev / libxkbcommon / libinput 九份 CN,均已核对 sha256 | 完成 |
412418

413-
### 10.2 被推翻的:G3 的「新增仓 0」
419+
### 10.2 被推翻的:「新增仓 0」——实际新增了三个
414420

415421
设计 §6 写着「新增仓数量 = 0 —— G1 复用 libglvnd,G3 做 wayland fork 的第五个成员」。
416-
**G3 那半是错的。**
422+
**G3 那半是错的,而且做到输入链之后错得更多。**
417423

418424
`mcpplibs/wayland` 的 `upstream/` 是 wayland **1.26.0** 且 CI 逐字节 diff;
419425
wayland-protocols 是**另一个上游项目、另一个版本(1.49)**。一个仓一个上游一个版本,
420-
所以它必须是独立 fork。**新增仓数量 = 1。**
426+
所以它必须是独立 fork。
427+
428+
同一条规则在输入链上又触发了两次:`libevdev` 的 `event-names.h` 和 `libxkbcommon` 的
429+
bison parser 各自是必须先跑的生成器,而两者都是独立上游、独立版本。
430+
431+
**新增仓数量 = 3**:`mcpplibs/wayland-protocols`、`mcpplibs/libevdev`、
432+
`mcpplibs/libxkbcommon`。判据本身没错 —— 错的是「已有的 fork 装得下」这个假设,而它
433+
装不下的原因很具体:**一个仓一个上游一个版本**,因为 CI 要对着一份 release tarball
434+
逐字节 diff `upstream/`。
421435

422436
### 10.3 被推翻的:G3 的「一个包装全部 65 个协议」
423437

0 commit comments

Comments
 (0)