Repository navigation
test: run the Wayland keyboard suite on Ubuntu 24.04 and 26.04 - #3
Merged
Merged
Conversation
The `sdl` pin moves to fizzyedit/SDL `wayland/xkb-mod-mask-optional`: the suite for the Wayland driver on an older libxkbcommon (testautomation_fizzy_xkb.c, now built by test-fizzy) and the patch that makes `xkb_keymap_mod_get_mask` optional at runtime. A test pin until that commit is tagged. CI gains a test-fizzy-xkb job in ubuntu:24.04 (libxkbcommon 1.6) and ubuntu:26.04 (1.13) containers, so both SDL's fallback and its 1.10 path run. Weston runs on its X11 backend inside Xvfb, not headless: the headless backend has no seat, the X11 one has a keyboard with the X server's layout, set to German (de) for the suite's level checks. Fixes fizzyedit/fizzy#289. Part of fizzyedit/fizzy#280. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
foxnne
marked this pull request as ready for review
October 9, 2026 18:48
This was referenced Oct 9, 2026
foxnne
added a commit
to fizzyedit/fizzy
that referenced
this pull request
Oct 9, 2026
…294) Fixes #289. Part of #280 (steps A1, A2 and A4b landed on the forks). Moves fizzy's `.sdl` pin to sdl_zig `fizzy-1.0.3+3.4.16-8` (SDL `fizzy-3.4.16-8`). That brings two things: **1. The forks carry tests now.** fizzyedit/SDL has fizzy's own suites on SDL's test harness, one per patch, each failing without its patch. fizzyedit/sdl_zig runs them with `zig build test-fizzy` in CI: Linux on lavapipe under Xvfb and headless weston, and the hosted macOS runners, which have a Metal device. - fizzyedit/SDL#1 → `fizzy-3.4.16-6` (`4839ede`): the runner, plus patch 1's suite (transparent window claimed on Metal and Vulkan). - fizzyedit/sdl_zig#1 → `fizzy-1.0.3+3.4.16-6` (`0f6a2a8`): the `test-fizzy` step. - fizzyedit/SDL#2 → `fizzy-3.4.16-8` (`a518aaf`), fizzyedit/sdl_zig#2 → `fizzy-1.0.3+3.4.16-8` (`a02dda8`): patch 6's suite, Wayland frame insets. - **How:** it reads libwayland's request trace under headless weston, at scale 1 and 2. - **Checks:** geometry, input region, min/max sizes and published insets while floating; zero insets when maximized or fullscreen; popup anchoring. - **Result:** passes on the fork, and fails on upstream 3.4.16. - **Problems it found in patch 6:** five, listed in #280 (C2b). **2. SDL patch 8: Wayland loads where libxkbcommon is older than 1.10** (#289). - **The bug:** built against 1.10+ headers (sdl_zig uses 1.13), SDL required `xkb_keymap_mod_get_mask()`. On Ubuntu 24.04 (1.6) or Debian 12 (1.5) the whole Wayland driver reported itself unavailable, and fizzy fell back to X11. Upstream `main` has the same problem. - **The fix:** the symbol is now optional at runtime, and the masks fall back to `xkb_keymap_mod_get_index()`, the path SDL already takes when built against older headers. For standard keymaps both paths give the same masks. - **The proof:** - [red](https://github.com/fizzyedit/sdl_zig/actions/runs/37968707700) on `ubuntu:24.04` without the patch ("wayland not available"); - [green](https://github.com/fizzyedit/sdl_zig/actions/runs/37971005996) on 24.04 and 26.04 with it, where a German keymap's Shift, Caps Lock and AltGr levels come out right. - **The PRs:** fizzyedit/SDL#3 → `fizzy-3.4.16-7` (`36dda37`); fizzyedit/sdl_zig#3 → `fizzy-1.0.3+3.4.16-7` (`264af2a`). `docs/DEPENDENCIES.md` records patch 8, the three suites, sdl_zig's step and CI jobs, all six tags, and each patch's check at a rebase. ## Verified On macOS (arm64), in a fresh workspace on `main`: | Gate | Result | |---|---| | `zig build` | 43/43 steps | | `zig build test` | 75/75 steps | | `zig build test-integration` | 33/33 steps, 347/347 tests | | `zig build check-web` | 16/16 steps | | `zig build test-sdk-version` | 12/12 steps | | `zig build -Dtarget=x86_64-linux-gnu` | 54/54 steps (builds the patched Wayland file) | Not verified: a fizzy binary running on a real Ubuntu 24.04 Wayland desktop. The evidence is the fork suite in CI containers, built from the same sdl_zig. The SDK fingerprint doesn't move, since plugins never link SDL. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes fizzyedit/fizzy#289. Part of fizzyedit/fizzy#280 (step A4b). Needs fizzyedit/SDL#3, whose commit this pins. Builds on #1 (merged,
fizzy=fizzy-1.0.3+3.4.16-6).What changes
sdlpin moves to fizzyedit/SDLwayland/xkb-mod-mask-optional@36dda37. That isfizzy-3.4(fizzy-3.4.16-6) plus theFizzyXkbsuite and patch 8, which makesxkb_keymap_mod_get_maskoptional at runtime. It's a test pin until that commit is tagged.build.zig:testautomation_fizzy_xkb.cjoins the test-fizzy sources (one line).test-fizzy-xkbjob, separate from A1's jobs. It runs inubuntu:24.04(libxkbcommon 1.6, so SDL's fallback runs) and inubuntu:26.04(1.13, so the 1.10 path runs). This package builds SDL against libxkbcommon 1.13's headers, which is what made the Wayland driver unloadable on 24.04.setxkbmap -layout degives the suite German levels (AltGr+Q =@and so on), which SDL's built-in default keymap can't produce.Xvfb -noresetis needed: without it Xvfb resets the layout tousevery time its last client disconnects, setxkbmap included.zig build test-fizzy -- --filter FizzyXkbwithFIZZY_TEST_XKB_LAYOUT=de.Red, then green
test-fizzy-xkb (ubuntu:24.04)fails withValidate that the Wayland video driver started, got error: wayland not available. On 26.04 the driver loads. (Both keymap checks failed in that run because the layout hadn't been set yet. The-noresetfix came later.)test-fizzy-xkbpasses on 24.04 and 26.04, 2/2 tests each, with 16/16 asserts in the keymap test.test-fizzy-linuxandtest-fizzy-macosstill pass.Those were
workflow_dispatchruns on this branch, while it was stacked on the A1 branch. This PR's own checks run againstfizzy.Before merge
fizzyedit/SDL#3 goes onto
fizzy-3.4and gets a permanent tag (the maintainer names it; I created none). Then the pin here changes from the test pin to the tagged commit. After that, fizzy repins sdl_zig anddocs/DEPENDENCIES.mdgets SDL patch 8.🤖 Generated with Claude Code