Skip to content

meta: add github actions ci - #4

Merged
DeedleFake merged 7 commits into
masterfrom
ci
Sep 28, 2026
Merged

DeedleFake merged 7 commits into
masterfrom
ci

Conversation

@DeedleFake

Copy link
Copy Markdown
Owner

Coder created this PR.

Why

Add GitHub Actions CI that compiles the module with CGO against a pinned wlroots built from source, so master (#cgo pkg-config: wlroots, ~0.17) and stacked API bumps (e.g. wlroots-0.20) share one workflow.

Scope

  • .github/wlroots-version — pin currently 0.17.4 (last 0.17)
  • .github/workflows/ci.yml — ubuntu-latest, apt build deps, clone/build/install pinned wlroots under $HOME/wlroots, set PKG_CONFIG_PATH / LD_LIBRARY_PATH, Go matrix 1.26.x and 1.27.x, CGO_ENABLED=1 go build ./... + go vet ./...
  • Does not change go.mod (go 1.25.7 stays; newer toolchains via GOTOOLCHAIN)

Child bump path

Stacked PRs bump .github/wlroots-version (e.g. to 0.20.2) so meson installs wlroots-0.20.pc and the existing #cgo pkg-config: wlroots-0.20 … line resolves.

Verification

Locally against a from-source 0.17.4 install ($HOME/wlroots-0.17):

  • pkg-config --modversion wlroots → 0.17.4
  • Main package links; full go build ./... on master currently fails in xkb against libxkbcommon 1.7 (stale generated keysyms referencing removed XF86_* symbols). That is fixed by the stacked xkb: regenerate on PR wlr: retarget to wlroots 0.20.2 #3 — expect CI green there after retarget; this CI-only PR may stay red on ./... until that stacks or keysyms are regenerated on master.

Tradeoffs

Building wlroots from source each run is slower than distro packages, but keeps the pin exact across 0.17 / 0.20 pc-name changes without Nix.

Pin wlroots via .github/wlroots-version and build it from source in CI so
master (wlroots.pc / 0.17.x) and stacked branches (e.g. wlroots-0.20) can
share one workflow by bumping the pin.
Committed syms.go can target a newer libxkbcommon than ubuntu-latest
ships. Generate against the runner headers before build.
wlroots 0.20 needs wayland-server >= 1.24; ubuntu-latest ships
1.22. Override the project's wrap_mode=nodownload so meson can
pull the wayland wrap when the system package is too old.
ubuntu-latest ships meson 1.3.2; libxkbcommon's wrap (HEAD) requires
>=1.4. Install a current meson via pip before building wlroots.
Wrap fallbacks (v4l via libdisplay-info) try to install udev keymaps
under /usr. Stage into $HOME/wlroots-root so CI stays unprivileged.
Drop meson wraps: HEAD wraps need a newer meson, pull v4l into /usr,
and leave .pc files pointing at the wrong prefix under DESTDIR.
Build only packages ubuntu-latest is too old for into $HOME/deps,
then build the pinned wlroots with wrap_mode=nodownload.
Public wlr headers include generated *-protocol.h with quotes, but
meson leaves those as private build artifacts. Copy them into the
versioned include dir after ninja install so go build can find them.
@DeedleFake
DeedleFake added this pull request to stack #5 September 28, 2026 15:53
@DeedleFake
DeedleFake merged commit 1f61bc8 into master Sep 28, 2026
4 checks passed
@DeedleFake
DeedleFake deleted the ci branch September 28, 2026 16:06
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