Skip to content

ci(Linux GUI): add GLFW/OpenGL build and Xvfb smoke coverage #115

Description

@cervantesh

Help wanted

Linux CI currently tests and packages only the headless command. We need a GUI lane that installs the real X11/OpenGL prerequisites, compiles the GLFW frontend, and performs a software-rendered smoke under Xvfb.

Suggested Ubuntu dependencies

Confirm and minimize this list rather than copying it blindly:

sudo apt-get update
sudo apt-get install -y build-essential pkg-config xorg-dev libgl1-mesa-dev mesa-utils xvfb

Required commands

go version
go env GOOS GOARCH CGO_ENABLED
go run ./scripts/check-maturity-gates.go
go test ./... -count=1
go test -tags glfw ./internal/fontglyph ./internal/frontend/glfwgl ./cmd/cervterm -count=1
go vet -unsafeptr=false ./...
go build -tags glfw -o dist/cervterm-linux-gui ./cmd/cervterm
xvfb-run -a ./dist/cervterm-linux-gui --doctor
xvfb-run -a ./dist/cervterm-linux-gui --print-default-config > dist/cervterm.lua
LIBGL_ALWAYS_SOFTWARE=1 xvfb-run -a ./dist/cervterm-linux-gui --doctor

Retain the existing headless zip and PTY coverage. Add the VT parser fuzz smoke if it is not already run in the Linux lane.

Acceptance criteria

  • Pull requests compile and test the Linux GLFW/OpenGL frontend.
  • CI records distro, kernel, architecture, CGO, Mesa/OpenGL renderer, and relevant dependency versions.
  • Xvfb/llvmpipe can initialize diagnostics without crashing.
  • Headless and GUI builds are separate and clearly named.
  • Build/test artifacts and logs are uploaded.
  • No privileged display server or real GPU is required for the mandatory lane.
  • Platform-specific skips are narrowly scoped and explained.
  • A follow-up matrix strategy for Fedora/Arch dependency drift is documented.

Evidence requested

PR link, successful Actions run, dependency list, glxinfo -B or equivalent output, job duration, and any quarantined/flaky test explanation.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is neededplatform: LinuxLinux-specific work or validationtestingCommunity testing and platform validation

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions