From 25b08916b6190724dac911424ea6849ba9acc960 Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Thu, 6 Aug 2026 00:49:25 +0200 Subject: [PATCH] =?UTF-8?q?fix(flatpak):=20the=20WSI=20layer=20module=20bu?= =?UTF-8?q?ilds=20again=20=E2=80=94=20vkroots=20was=20declared=20twice?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The flatpak has not built since 35ba64ca. Every push to main fails at "Build the flatpak", before a single build command runs: cp: cannot overwrite non-directory '.../build/gamescope-wsi-layer-1/subprojects/vkroots/.git' with directory '.../git/https_github.com_Joshua-Ashton_vkroots.git' Error: module gamescope-wsi-layer: Child process exited with code 1 vkroots was declared twice. flatpak-builder clones git sources WITH SUBMODULES by default, and `subprojects/vkroots` is a real gamescope submodule — `git ls-tree 8c676c39 subprojects/` shows it as mode 160000 at 5106d8a0, which is byte-for-byte the commit the explicit source pinned. So the submodule checkout already produced the right tree and left `subprojects/vkroots/.git` as a gitlink FILE; the second, redundant source then tried to copy the bare mirror onto that path as a DIRECTORY, and cp refused. Source extraction died there — `buildsystem: simple` and the hand-applied glm/stb patch_directory copies were never reached, so neither is at fault. Removing the redundant source is therefore a no-op on the resulting tree: the submodule supplies that exact rev. glm and stb are NOT submodules — `subprojects/ glm.wrap` and `stb.wrap` are plain blobs at that rev — so nothing else populates them and their explicit sources have to stay. That asymmetry is the whole trap, and it is now written down in the manifest next to the sources, along with the disable-submodules escape hatch for anyone who later needs to pin a subproject away from the gamescope rev. Why this reached main: flatpak.yml has no `pull_request:` trigger — only `push` on main with path filters, `tags: ['v*']`, and workflow_dispatch. PR #64's checks were green because the flatpak was never built on the PR; run 15775 was the first time this module had ever been built in CI. Adding a PR trigger (or a manifest lint) is the durable follow-up, deliberately not bundled here. This blocks the release, not just main. flatpak.yml runs on `tags: ['v*']`, and the failing step gates the bundle export, the generic-registry publish, the OSTree push to flatpak.unom.io and the release-asset attach — all of which stay skipped. A v0.25.0 tag cut today would ship with NO Linux/Steam Deck flatpak at all, on the release whose headline Linux change is Deck HDR working out of the box. NOT VALIDATED LOCALLY: this cannot be built on macOS. The reasoning is confirmed against the upstream tree (the ls-tree above) but the green run is still owed — dispatch flatpak.yml on this branch before merging. --- packaging/flatpak/io.unom.Punktfunk.yml | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/packaging/flatpak/io.unom.Punktfunk.yml b/packaging/flatpak/io.unom.Punktfunk.yml index 6f27c165..b1d6a017 100644 --- a/packaging/flatpak/io.unom.Punktfunk.yml +++ b/packaging/flatpak/io.unom.Punktfunk.yml @@ -251,12 +251,19 @@ modules: url: https://github.com/ValveSoftware/gamescope.git # KEEP IN SYNC with `_gsrev` in packaging/gamescope/PKGBUILD. commit: 8c676c399c761e4540587f61004c957993d12fea - # Submodule + wrap pins as of that rev. `git ls-tree subprojects/` for the - # submodules; subprojects/*.wrap for the rest. - - type: git - url: https://github.com/Joshua-Ashton/vkroots.git - commit: 5106d8a0df95de66cc58dc1ea37e69c99afc9540 - dest: subprojects/vkroots + # Wrap pins as of that rev (`subprojects/*.wrap`). These are meson WRAPS, not gamescope + # submodules, so nothing else populates them and they need explicit sources. + # + # vkroots is deliberately NOT listed here. It is a real gamescope SUBMODULE, and + # flatpak-builder clones git sources with submodules by default — so it is already + # checked out at exactly the rev above (`git ls-tree subprojects/vkroots`), which + # leaves `subprojects/vkroots/.git` as a gitlink FILE. Declaring it again with + # `dest: subprojects/vkroots` made the extractor copy the bare mirror onto that path and + # die before any build command ran: + # cp: cannot overwrite non-directory '.../subprojects/vkroots/.git' with directory + # Re-adding it re-breaks the whole flatpak. If the submodule ever needs to be pinned away + # from the gamescope rev, set `disable-submodules: true` on the source above and then + # declare ALL THREE subprojects explicitly — not one of them alone. - type: git url: https://github.com/g-truc/glm.git commit: 0af55ccecd98d4e5a8d1fad7de25ba429d60e863