From d5835fbf761db6a7dfcba6e8f8c3a005b9e77de3 Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Mon, 31 Aug 2026 05:11:34 +0800 Subject: [PATCH] =?UTF-8?q?feat(wayland-protocols):=201.49.1=20=E2=80=94?= =?UTF-8?q?=20the=20enum=20headers=20upstream=20installs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit wlroots 0.20 includes `` from TEN of its public headers. Upstream wayland-protocols installs those (include/wayland- protocols/meson.build runs `wayland-scanner enum-header` over every XML); the fork generated only client-header, server-header and public-code. So a consumer of wlroots writing the ordinary `#include ` had nothing to resolve them against. Purely additive: 65 protocols x 1 new header, no existing generated file changes, upstream/ untouched. mcpplibs/wayland-protocols#1, all four CI jobs green. ⭐ WHY THEY ARE CHECKED IN RATHER THAN GENERATED BY build.mcpp §14 of the graphics-stack design doc prescribes build-time generation. It cannot apply to a package whose PRODUCT is headers, and the reason is measured (2026-08-31, two-package probe): mcpp::include_dir() from a build program -> PACKAGE-PRIVATE; the consumer gets 'No such file or directory' [build] include_dirs in the manifest -> propagates to consumers VERSION: the third component is the FORK's revision. Upstream ships two-component versions and 1.49 is the newest. Not a re-cut of 1.49 — the store is keyed by (name, version) and would not re-extract it, while the tag archive's sha256 changes under every published descriptor. 1.49 stays exactly as published; nothing that depends on it moves. --- .../freedesktop.wayland-protocols-stable.lua | 31 +++++++++++++++++++ .../freedesktop.wayland-protocols-staging.lua | 31 +++++++++++++++++++ ...freedesktop.wayland-protocols-unstable.lua | 31 +++++++++++++++++++ 3 files changed, 93 insertions(+) diff --git a/pkgs/f/freedesktop.wayland-protocols-stable.lua b/pkgs/f/freedesktop.wayland-protocols-stable.lua index 4e1b3c2..3e6c02f 100644 --- a/pkgs/f/freedesktop.wayland-protocols-stable.lua +++ b/pkgs/f/freedesktop.wayland-protocols-stable.lua @@ -79,6 +79,37 @@ package = { linux = { -- wayland-protocols' own release number. Upstream tags without a -- leading v, and so does the fork. + -- 1.49.1 — the third component is THIS FORK's revision, not + -- upstream's: wayland-protocols releases two-component versions and + -- 1.49 is the newest. 1.49.1 is 1.49's XML plus the + -- `wayland-protocols/-enum.h` headers that upstream's own + -- meson installs (include/wayland-protocols/meson.build runs + -- `wayland-scanner enum-header` over every XML) and that this fork + -- did not previously generate. + -- + -- wlroots 0.20 includes them from TEN of its public headers, so a + -- consumer of wlroots writing a plain `#include ` needs + -- them on the include path. + -- + -- ⭐ They are checked into the fork rather than produced by a + -- `build.mcpp`, which the fork spec otherwise prescribes, because + -- a package cannot export a generated header. Measured + -- 2026-08-31 with a two-package probe: + -- + -- mcpp::include_dir() from a build program → PACKAGE-PRIVATE + -- [build] include_dirs in the manifest → propagates + -- + -- Additive, not a re-cut of 1.49: the store is keyed by + -- (name, version) and would not re-extract a version it already + -- holds, so a re-cut tag reaches nobody who already built against + -- it. 1.49 stays exactly as published. + ["1.49.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/wayland-protocols/archive/refs/tags/1.49.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/wayland-protocols/releases/download/1.49.1/wayland-protocols-1.49.1.tar.gz", + }, + sha256 = "52b219f5e307c1d0d49fe9429a877aef8d4b65e69224c97053cbf8434fb79237", + }, ["1.49"] = { url = { GLOBAL = "https://github.com/mcpplibs/wayland-protocols/archive/refs/tags/1.49.tar.gz", diff --git a/pkgs/f/freedesktop.wayland-protocols-staging.lua b/pkgs/f/freedesktop.wayland-protocols-staging.lua index 37e3862..3f5ea6b 100644 --- a/pkgs/f/freedesktop.wayland-protocols-staging.lua +++ b/pkgs/f/freedesktop.wayland-protocols-staging.lua @@ -73,6 +73,37 @@ package = { linux = { -- wayland-protocols' own release number. Upstream tags without a -- leading v, and so does the fork. + -- 1.49.1 — the third component is THIS FORK's revision, not + -- upstream's: wayland-protocols releases two-component versions and + -- 1.49 is the newest. 1.49.1 is 1.49's XML plus the + -- `wayland-protocols/-enum.h` headers that upstream's own + -- meson installs (include/wayland-protocols/meson.build runs + -- `wayland-scanner enum-header` over every XML) and that this fork + -- did not previously generate. + -- + -- wlroots 0.20 includes them from TEN of its public headers, so a + -- consumer of wlroots writing a plain `#include ` needs + -- them on the include path. + -- + -- ⭐ They are checked into the fork rather than produced by a + -- `build.mcpp`, which the fork spec otherwise prescribes, because + -- a package cannot export a generated header. Measured + -- 2026-08-31 with a two-package probe: + -- + -- mcpp::include_dir() from a build program → PACKAGE-PRIVATE + -- [build] include_dirs in the manifest → propagates + -- + -- Additive, not a re-cut of 1.49: the store is keyed by + -- (name, version) and would not re-extract a version it already + -- holds, so a re-cut tag reaches nobody who already built against + -- it. 1.49 stays exactly as published. + ["1.49.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/wayland-protocols/archive/refs/tags/1.49.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/wayland-protocols/releases/download/1.49.1/wayland-protocols-1.49.1.tar.gz", + }, + sha256 = "52b219f5e307c1d0d49fe9429a877aef8d4b65e69224c97053cbf8434fb79237", + }, ["1.49"] = { url = { GLOBAL = "https://github.com/mcpplibs/wayland-protocols/archive/refs/tags/1.49.tar.gz", diff --git a/pkgs/f/freedesktop.wayland-protocols-unstable.lua b/pkgs/f/freedesktop.wayland-protocols-unstable.lua index e5120f7..37eef05 100644 --- a/pkgs/f/freedesktop.wayland-protocols-unstable.lua +++ b/pkgs/f/freedesktop.wayland-protocols-unstable.lua @@ -80,6 +80,37 @@ package = { linux = { -- wayland-protocols' own release number. Upstream tags without a -- leading v, and so does the fork. + -- 1.49.1 — the third component is THIS FORK's revision, not + -- upstream's: wayland-protocols releases two-component versions and + -- 1.49 is the newest. 1.49.1 is 1.49's XML plus the + -- `wayland-protocols/-enum.h` headers that upstream's own + -- meson installs (include/wayland-protocols/meson.build runs + -- `wayland-scanner enum-header` over every XML) and that this fork + -- did not previously generate. + -- + -- wlroots 0.20 includes them from TEN of its public headers, so a + -- consumer of wlroots writing a plain `#include ` needs + -- them on the include path. + -- + -- ⭐ They are checked into the fork rather than produced by a + -- `build.mcpp`, which the fork spec otherwise prescribes, because + -- a package cannot export a generated header. Measured + -- 2026-08-31 with a two-package probe: + -- + -- mcpp::include_dir() from a build program → PACKAGE-PRIVATE + -- [build] include_dirs in the manifest → propagates + -- + -- Additive, not a re-cut of 1.49: the store is keyed by + -- (name, version) and would not re-extract a version it already + -- holds, so a re-cut tag reaches nobody who already built against + -- it. 1.49 stays exactly as published. + ["1.49.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/wayland-protocols/archive/refs/tags/1.49.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/wayland-protocols/releases/download/1.49.1/wayland-protocols-1.49.1.tar.gz", + }, + sha256 = "52b219f5e307c1d0d49fe9429a877aef8d4b65e69224c97053cbf8434fb79237", + }, ["1.49"] = { url = { GLOBAL = "https://github.com/mcpplibs/wayland-protocols/archive/refs/tags/1.49.tar.gz",