Skip to content

ci(linux): add desktop validation and diagnostics - #7

Open
ofers wants to merge 1 commit into
ArjunKdaf:linux-desktop-supportfrom
ofers:ci/linux-desktop-validation
Open

ofers wants to merge 1 commit into
ArjunKdaf:linux-desktop-supportfrom
ofers:ci/linux-desktop-validation

Conversation

@ofers

@ofers ofers commented Aug 24, 2026

Copy link
Copy Markdown

Summary

  • add a minimal Ubuntu 24.04 Linux desktop validation workflow
  • build both Linux native player bridges and run the desktop/media-player JVM suites under Xvfb
  • run the existing Linux DEB tooling fixture tests
  • document Ubuntu build/runtime dependencies and focused playback diagnostics
  • allow secret-free builds by leaving the optional local.properties input unset when the file is absent

PR type

  • Reproducible bug fix
  • UI glitch/bug fix
  • Behavior bug/regression fix
  • Small maintenance only, with no UI or behavior change
  • Docs accuracy fix
  • Translation/localization only
  • Approved larger or directional change

Why

The Linux branch currently has no build/test check. A clean-worktree CI spike also found that generateRuntimeConfigs assigned a nonexistent local.properties file to an optional Gradle input, which made otherwise secret-free desktop tests fail before compilation.

This is the CI job and Linux note Arjun explicitly requested after merging the teardown and EOF replay follow-ups.

Desktop scope

Linux desktop only. The workflow builds the libmpv application bridge and GStreamer media-player bridge, then runs the Linux-relevant desktop JVM suites. The Gradle input fix only makes an already-optional local file genuinely optional; generated values and builds with an existing file are unchanged.

Issue or approval

Approved/requested in #6 (comment).

UI / behavior impact

  • No UI change
  • No behavior change
  • UI changed only to fix a documented glitch/bug
  • Behavior changed only to fix a documented bug/regression
  • UI change has explicit maintainer approval
  • Behavior change has explicit maintainer approval

Policy check

  • I have read and understood CONTRIBUTING.md.
  • This PR is small, focused, and limited to one problem.
  • This PR is scoped to the desktop app, desktop packaging, desktop documentation, or shared code required for desktop behavior.
  • This PR is not cosmetic-only.
  • Any UI change fixes a linked glitch/bug and includes visual proof, or this PR has no UI change.
  • Any behavior change fixes a linked bug/regression or has explicit approval, or this PR has no behavior change.
  • This PR does not bundle unrelated refactors, cleanups, formatting, or drive-by changes.
  • This PR does not add dependencies, architecture changes, migrations, or product-direction changes without explicit approval.
  • I listed the testing performed below.

Scope boundaries

  • does not add Linux packaging to desktop-release.yml
  • does not upload or publish artifacts
  • does not require repository or application secrets
  • does not alter player behavior or production dependencies
  • does not address the separate kdroidfilter upstreaming follow-up

Testing

Linux host, clean worktree based on 78e454cc, with no local.properties:

  • RED before the Gradle input fix: generateRuntimeConfigs rejected the missing optional input
  • xvfb-run --auto-servernum ./gradlew :composeApp:buildLinuxPlayerBridge :composeApp:desktopTest :composeMediaPlayer:jvmTest --no-daemon --stacktrace
    • desktop: 124 suites / 757 tests / 0 failures
    • media player: 16 suites / 82 tests / 0 failures
  • ./scripts/test-linux-deb-tools.sh: passed
  • :composeApp:generateRuntimeConfigs --rerun-tasks with a disposable present local.properties: passed
  • every apt package name checked in an actual ubuntu:24.04 container
  • workflow YAML parse and git diff --check: passed

Screenshots / Video

Not a UI change.

Breaking changes

None.

Linked issues

Approved follow-up to NuvioMedia#295; maintainer request linked above.

@ArjunKdaf

Copy link
Copy Markdown
Owner

Thanks for building this — a Linux CI job was a real gap.

One thing changed under it: NuvioMedia#295 was merged into Dev as 1654a8c3, so linux-desktop-support has served its purpose.

The better route is straight to NuvioMedia/NuvioDesktop, targeting Dev. Your commits went in with NuvioMedia#295 so you're already a contributor there, and this is your work — it should carry your name into the upstream history rather than arrive through me.

If you retarget it upstream I'll follow it there and answer anything on the Linux side. I'll leave this PR open until you've opened that one, so nothing gets lost.

One small note for when you do, not blocking: the base will need to move from linux-desktop-support to Dev. The Linux bridge is byte-identical between the two, so nothing under composeApp/src/desktopMain/native/linux should conflict.

@ofers

ofers commented Aug 25, 2026

Copy link
Copy Markdown
Author

Thanks — I moved the reviewed CI/docs commit directly upstream as requested: NuvioMedia#474

It targets Dev at exact head faf20aac77000bc90fb359a8802f20817338435f. PR-template validation has passed and the Linux workflow is running. I have left this fork PR open for you to close or retain as you prefer.

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.

2 participants