From 8479f2b607eb1491cb1d10f522c2cc3cec8c68c9 Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Mon, 31 Aug 2026 22:31:16 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(pangocairo):=20=E5=88=A0=E6=8E=89=20ca?= =?UTF-8?q?iro.h=20=E5=8F=98=E9=80=9A=20=E2=80=94=E2=80=94=20cairo=20?= =?UTF-8?q?=E7=9A=84=E4=BF=AE=E5=A4=8D=E5=B7=B2=E7=BB=8F=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit freedesktop.cairo 1.18.2-mcpp3 已在 main:697 个名字,cairo_t 与 192 个枚举量 都在。普通的 export import cairo; 就够了 —— 本来就该够 —— 而且模块名现在是 cairo。 ⚠️ 难的是次序不是代码。这个包从**已发布的**索引解析 cairo,而一个索引 PR 没法 同时验证两边:一个成员只能声明一个项目级 index repo(xlings#374 / mcpp#238), 所以 tests/examples/pangocairo 不能同时用本地的 gnome.* 和本地的 freedesktop.* 描述符。在 cairo 发布之前删这个变通,会让两边都红,而每一行代码都是对的。 tarball 重切:sha256 → e6664cfe…,CN 容器 tag → 1.56.1-7。 五个示例 × 两条工具链全绿。 --- ...26-08-30-graphics-stack-coverage-design.md | 11 +++++++++- pkgs/p/gnome.pango.lua | 6 ++--- pkgs/p/gnome.pangocairo.lua | 22 +++++++++---------- pkgs/p/gnome.pangoft2.lua | 6 ++--- 4 files changed, 27 insertions(+), 18 deletions(-) diff --git a/.agents/docs/2026-08-30-graphics-stack-coverage-design.md b/.agents/docs/2026-08-30-graphics-stack-coverage-design.md index 56ce83e..f8e3f94 100644 --- a/.agents/docs/2026-08-30-graphics-stack-coverage-design.md +++ b/.agents/docs/2026-08-30-graphics-stack-coverage-design.md @@ -2261,7 +2261,16 @@ error: xlings install_packages failed … with 2 index repos configured ⚠️ 我一度反过来做了(先把 pango 的变通删掉),两边都红。**代码是对的,次序是 错的**;已经回滚并把这段理由写进了 `gnome.pangocairo` 的描述符,免得下次再犯。 -### 23.6 结果 +### 23.6 收尾:pango 随后切过来 + +cairo 落地后,`gnome.pangocairo` 的 `cairo.h` 变通**已经删掉**,改成普通的 +`export import cairo;`。两侧都绿。 + +> **代码是对的,次序错了,两边都红。** 这不是本 fork 的问题,是索引机制的形状: +> 一个成员只能声明一个项目级 index repo,所以跨 namespace 的联动改动**必须**分两 +> 次落地,而且顺序唯一。 + +### 23.7 结果 | | | |---|---| diff --git a/pkgs/p/gnome.pango.lua b/pkgs/p/gnome.pango.lua index 7f66672..78f138c 100644 --- a/pkgs/p/gnome.pango.lua +++ b/pkgs/p/gnome.pango.lua @@ -84,14 +84,14 @@ package = { ["1.56.1"] = { url = { GLOBAL = "https://github.com/mcpplibs/pango/archive/refs/tags/1.56.1.tar.gz", - -- ⚠️ The container tag is `1.56.1-6`, not `1.56.1`. gitcode + -- ⚠️ The container tag is `1.56.1-7`, not `1.56.1`. gitcode -- refuses to REPLACE an asset of the same name in an -- existing release, so each corrected tarball needs a new -- container tag while the PACKAGE version stays upstream's. -- Verified byte-identical to the GLOBAL tag archive. - CN = "https://gitcode.com/mcpp-res/pango/releases/download/1.56.1-6/pango-1.56.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/pango/releases/download/1.56.1-7/pango-1.56.1.tar.gz", }, - sha256 = "19507c6712304750a0e9cc282135dda1919a1b89c0c4ce61e22411df0532a980", + sha256 = "e6664cfefd58df72ea59b529527088e0efb5418c2eb59510f33742591c810429", }, }, }, diff --git a/pkgs/p/gnome.pangocairo.lua b/pkgs/p/gnome.pangocairo.lua index 5f4d576..aafca2e 100644 --- a/pkgs/p/gnome.pangocairo.lua +++ b/pkgs/p/gnome.pangocairo.lua @@ -31,19 +31,19 @@ -- -- It surfaced here because pangocairo CANNOT mix the two routes -- (`pangocairo.h` reaches glib and therefore ), so it had to ask the --- module for `cairo_t` and got nothing. This package therefore scans cairo.h --- itself. +-- module for `cairo_t` and got nothing. This package carried a workaround — +-- scanning cairo.h itself — for two releases; it is GONE, and it re-exports +-- the `cairo` module plainly. -- --- ⚠️ THAT WORKAROUND STAYS UNTIL cairo's FIX IS PUBLISHED, not merely written. --- It is fixed in `1.18.2-mcpp3` (697 names), but this package resolves cairo --- from the PUBLISHED index — and the change cannot even be TESTED in one index --- PR, because a member may declare only ONE project-level index repo: +-- ⚠️ THE ORDER WAS THE HARD PART, not the code. The workaround could not be +-- removed in the same change that fixed cairo: this package resolves cairo +-- from the PUBLISHED index, and a member may declare only ONE project-level +-- index repo — -- -- error: ≥2 project-level index repos is a known xlings resolution gap -- -- so an example cannot use a local `gnome.*` descriptor and a local --- `freedesktop.*` descriptor at the same time. cairo lands first; this --- follows.-- +-- `freedesktop.*` descriptor together. cairo landed first; this follows.-- -- ───────────────────────────────────────────────────────────────────────── -- ⭐ TWO WAYS TO CONSUME IT, AND YOU PICK ONE -- @@ -106,14 +106,14 @@ package = { ["1.56.1"] = { url = { GLOBAL = "https://github.com/mcpplibs/pango/archive/refs/tags/1.56.1.tar.gz", - -- ⚠️ The container tag is `1.56.1-6`, not `1.56.1`. gitcode + -- ⚠️ The container tag is `1.56.1-7`, not `1.56.1`. gitcode -- refuses to REPLACE an asset of the same name in an -- existing release, so each corrected tarball needs a new -- container tag while the PACKAGE version stays upstream's. -- Verified byte-identical to the GLOBAL tag archive. - CN = "https://gitcode.com/mcpp-res/pango/releases/download/1.56.1-6/pango-1.56.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/pango/releases/download/1.56.1-7/pango-1.56.1.tar.gz", }, - sha256 = "19507c6712304750a0e9cc282135dda1919a1b89c0c4ce61e22411df0532a980", + sha256 = "e6664cfefd58df72ea59b529527088e0efb5418c2eb59510f33742591c810429", }, }, }, diff --git a/pkgs/p/gnome.pangoft2.lua b/pkgs/p/gnome.pangoft2.lua index d984db7..b5cd429 100644 --- a/pkgs/p/gnome.pangoft2.lua +++ b/pkgs/p/gnome.pangoft2.lua @@ -68,14 +68,14 @@ package = { ["1.56.1"] = { url = { GLOBAL = "https://github.com/mcpplibs/pango/archive/refs/tags/1.56.1.tar.gz", - -- ⚠️ The container tag is `1.56.1-6`, not `1.56.1`. gitcode + -- ⚠️ The container tag is `1.56.1-7`, not `1.56.1`. gitcode -- refuses to REPLACE an asset of the same name in an -- existing release, so each corrected tarball needs a new -- container tag while the PACKAGE version stays upstream's. -- Verified byte-identical to the GLOBAL tag archive. - CN = "https://gitcode.com/mcpp-res/pango/releases/download/1.56.1-6/pango-1.56.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/pango/releases/download/1.56.1-7/pango-1.56.1.tar.gz", }, - sha256 = "19507c6712304750a0e9cc282135dda1919a1b89c0c4ce61e22411df0532a980", + sha256 = "e6664cfefd58df72ea59b529527088e0efb5418c2eb59510f33742591c810429", }, }, }, From b46751e1a7c05da5cf3333202e66191608aae3e1 Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Mon, 31 Aug 2026 22:48:19 +0800 Subject: [PATCH 2/2] =?UTF-8?q?chore:=20pango=20tarball=20=E9=87=8D?= =?UTF-8?q?=E5=8F=91=20=E2=80=94=E2=80=94=20pangocairo=20=E7=9A=84?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E4=B8=8B=E9=99=90=E4=BB=8E=20200=20=E6=94=B9?= =?UTF-8?q?=E6=88=90=2025?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 删掉 cairo.h 变通后 pangocairo 正确地从 284 个导出降到 32(它不再自己转出 cairo 的名字,而是转出 cairo 模块)—— 32 对上游 33 个 pango_cairo_* 函数是对的。 下限留在 200 会把一次**正确的收缩**判成红,这和下限存在的目的正相反:它们是用来 抓**塌陷**的,而这次没有塌陷。 sha256 → e9a1c28d…,CN 容器 tag → 1.56.1-8。 --- pkgs/p/gnome.pango.lua | 6 +++--- pkgs/p/gnome.pangocairo.lua | 6 +++--- pkgs/p/gnome.pangoft2.lua | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pkgs/p/gnome.pango.lua b/pkgs/p/gnome.pango.lua index 78f138c..e933462 100644 --- a/pkgs/p/gnome.pango.lua +++ b/pkgs/p/gnome.pango.lua @@ -84,14 +84,14 @@ package = { ["1.56.1"] = { url = { GLOBAL = "https://github.com/mcpplibs/pango/archive/refs/tags/1.56.1.tar.gz", - -- ⚠️ The container tag is `1.56.1-7`, not `1.56.1`. gitcode + -- ⚠️ The container tag is `1.56.1-8`, not `1.56.1`. gitcode -- refuses to REPLACE an asset of the same name in an -- existing release, so each corrected tarball needs a new -- container tag while the PACKAGE version stays upstream's. -- Verified byte-identical to the GLOBAL tag archive. - CN = "https://gitcode.com/mcpp-res/pango/releases/download/1.56.1-7/pango-1.56.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/pango/releases/download/1.56.1-8/pango-1.56.1.tar.gz", }, - sha256 = "e6664cfefd58df72ea59b529527088e0efb5418c2eb59510f33742591c810429", + sha256 = "e9a1c28defa0e21a85eac3e0b4301c340a2ffc26592bd74d479fcd8af77e90b5", }, }, }, diff --git a/pkgs/p/gnome.pangocairo.lua b/pkgs/p/gnome.pangocairo.lua index aafca2e..2cbca22 100644 --- a/pkgs/p/gnome.pangocairo.lua +++ b/pkgs/p/gnome.pangocairo.lua @@ -106,14 +106,14 @@ package = { ["1.56.1"] = { url = { GLOBAL = "https://github.com/mcpplibs/pango/archive/refs/tags/1.56.1.tar.gz", - -- ⚠️ The container tag is `1.56.1-7`, not `1.56.1`. gitcode + -- ⚠️ The container tag is `1.56.1-8`, not `1.56.1`. gitcode -- refuses to REPLACE an asset of the same name in an -- existing release, so each corrected tarball needs a new -- container tag while the PACKAGE version stays upstream's. -- Verified byte-identical to the GLOBAL tag archive. - CN = "https://gitcode.com/mcpp-res/pango/releases/download/1.56.1-7/pango-1.56.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/pango/releases/download/1.56.1-8/pango-1.56.1.tar.gz", }, - sha256 = "e6664cfefd58df72ea59b529527088e0efb5418c2eb59510f33742591c810429", + sha256 = "e9a1c28defa0e21a85eac3e0b4301c340a2ffc26592bd74d479fcd8af77e90b5", }, }, }, diff --git a/pkgs/p/gnome.pangoft2.lua b/pkgs/p/gnome.pangoft2.lua index b5cd429..53f0c0f 100644 --- a/pkgs/p/gnome.pangoft2.lua +++ b/pkgs/p/gnome.pangoft2.lua @@ -68,14 +68,14 @@ package = { ["1.56.1"] = { url = { GLOBAL = "https://github.com/mcpplibs/pango/archive/refs/tags/1.56.1.tar.gz", - -- ⚠️ The container tag is `1.56.1-7`, not `1.56.1`. gitcode + -- ⚠️ The container tag is `1.56.1-8`, not `1.56.1`. gitcode -- refuses to REPLACE an asset of the same name in an -- existing release, so each corrected tarball needs a new -- container tag while the PACKAGE version stays upstream's. -- Verified byte-identical to the GLOBAL tag archive. - CN = "https://gitcode.com/mcpp-res/pango/releases/download/1.56.1-7/pango-1.56.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/pango/releases/download/1.56.1-8/pango-1.56.1.tar.gz", }, - sha256 = "e6664cfefd58df72ea59b529527088e0efb5418c2eb59510f33742591c810429", + sha256 = "e9a1c28defa0e21a85eac3e0b4301c340a2ffc26592bd74d479fcd8af77e90b5", }, }, },