Skip to content

ci: run the Wayland frame-insets suite under headless weston - #2

Merged
foxnne merged 1 commit into
fizzyfrom
test/wayland-insets-job
Oct 9, 2026
Merged

foxnne merged 1 commit into
fizzyfrom
test/wayland-insets-job

Conversation

@foxnne

@foxnne foxnne commented Oct 9, 2026 •

Copy link
Copy Markdown

Part of fizzyedit/fizzy#280 (step A2), with fizzyedit/SDL#2.

  • zig build test-fizzy builds fizzyedit/SDL's new test/testautomation_fizzy_wayland.c (suite FizzyWayland, patch 6: Wayland frame insets).
  • A new job, test-fizzy-wayland-insets, runs --filter FizzyWayland under weston --backend=headless at output scale 1 and 2, in the same Ubuntu 26.04 container as A1's Linux job. The suite reads libwayland's request trace, so it needs a real compositor. Weston's default desktop shell maximizes and fullscreens, and lavapipe presents the frames that map the windows. weston's log is printed after the run. It's a job of its own rather than a step in test-fizzy-linux so it can carry the scale matrix and stays clear of the ubuntu:24.04 work for linux: Wayland unavailable where libxkbcommon is older than 1.10 fizzy#289. test-fizzy-linux (wayland) also runs the suite, since it runs every suite.
  • The pin moves to fizzyedit/SDL eb7e688 (branch test/fizzy-wayland-insets = fizzy-3.4, tag fizzy-3.4.16-6, plus the suite). That commit needs a permanent tag before this merges.

Verified

  • Fork: https://github.com/fizzyedit/sdl_zig/actions/runs/37970592319, where test-fizzy-wayland-insets (1), (2) and test-fizzy-linux (wayland) are green, 4/4 tests and 123/123 asserts. This PR's own run, on the same pin, is linked from the checks.
  • Upstream release-3.4.16 + the suite, this job only: https://github.com/fizzyedit/sdl_zig/actions/runs/37970651360. Both scales fail all four tests, with clear assertion failures and no crash. The throwaway branches are deleted.
  • build (master, ubuntu-latest) and build (master, windows-latest) fail in translate-c (Zig master's avx512bmmintrin.h builtins). That's unrelated to this change: Zig master against the build, not the suites.

What the suite asserts and what headless weston can't cover are in fizzyedit/SDL#2.

🤖 Generated with Claude Code

fizzyedit/SDL's suite for patch 6 (`FizzyWayland`, test/testautomation_fizzy_wayland.c) joins
`zig build test-fizzy`, and a job of its own runs it under weston's headless backend with its
desktop shell, at output scale 1 and 2, in the Ubuntu 26.04 container. The suite reads libwayland's
request trace, so it needs a real compositor; lavapipe presents the frames that map its windows.
The pin moves to SDL's `test/fizzy-wayland-insets` (the suite for patch 6 on
`fizzy-3.4`), which needs a permanent tag before this merges.

Part of fizzyedit/fizzy#280 (step A2).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@foxnne
foxnne force-pushed the test/wayland-insets-job branch from 3515e9b to a02dda8 Compare October 9, 2026 18:56
@foxnne
foxnne marked this pull request as ready for review October 9, 2026 19:17
@foxnne
foxnne merged commit a02dda8 into fizzy Oct 9, 2026
12 of 15 checks passed
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant