Skip to content

Update CI runners, dependencies, and macOS packaging - #3424

Open
gretel wants to merge 1 commit into
ZDoom:masterfrom
gretel:ci-update-runners
Open

gretel wants to merge 1 commit into
ZDoom:masterfrom
gretel:ci-update-runners

Conversation

@gretel

@gretel gretel commented Aug 4, 2026 •

Copy link
Copy Markdown

Summary

Update the CI matrix to current GitHub-hosted runners and fix the macOS build and packaging so the artifacted app actually launches and has audio.

Changes

Runners and actions

  • Move the matrix to windows-2025, macos-15, and ubuntu-26.04, remapping the compiler pins to the toolchains those images ship (GCC 13/15, Clang 20/22).
  • Rename the Visual Studio entries to match the windows-2025 toolchain (VS 2026 / MSVC 19.51).
  • Bump actions/checkout, actions/upload-artifact, and proudust/gh-describe to current releases
  • Fix a shellcheck finding (SC2035) by prefixing globs with ./.

macOS build fixes

  • Install sdl2: ZWidget's only non-Windows macOS backend is SDL2, so without it the built app fails at startup with "Unable to create init zwidget".
  • Link Homebrew OpenAL explicitly: the SDK's OpenAL.framework is a broken symlink on current macOS, so the default search produces a build with no audio.
  • Add libsndfile to the macOS brew dependencies.
  • Set -DDYN_OPENAL=OFF and -DCMAKE_BUILD_RPATH=/opt/homebrew/lib so ZMusic can dlopen libsndfile/libmpg123 at runtime — without the rpath, mod sounds decode to silence (sfx_empty).
  • Use the Makefiles generator for both macOS jobs (drop -G Xcode from the Debug job).

Packaging

  • Remove the non-Release mv of gzdoom.app from a per-config subdirectory. That layout only exists with the Xcode generator; with Makefiles the app is already at the build root, which broke the Debug packaging step.

Notes

  • proudust/gh-describe@v2.2.0 targets Node 20 (deprecated; GitHub forces Node 24 with a warning). It is the action's latest release — flagging so it can be replaced or upstreamed.
  • The macOS CI artifact is a dynamic Homebrew-linked build and diverges from the official release binary, which is a universal2 static build (embedded ZMusic, OpenAL Soft, MoltenVK, libsndfile, libmpg123) signed with a Developer ID and notarized.
  • Reproducing the release build in CI is follow-up work: the static dependency recipe is not in-tree, and signing requires maintainer credentials.

Move the CI matrix onto current GitHub-hosted runners: windows-2025, macos-15, ubuntu-26.04, with the compiler pins remapped to the new toolset (GCC 13 and 15, Clang 20 and 22), and bump checkout, upload-artifact, and gh-describe to current releases while fixing SC2035 glob quoting.

The macOS builds get the dependencies and flags the local build needs: sdl2 (ZWidget's macOS backend is SDL2; without it the app fails to initialize), explicit Homebrew OpenAL include and library paths (the SDK OpenAL.framework is a broken symlink on current macOS), -DDYN_OPENAL=OFF, and -DCMAKE_BUILD_RPATH=/opt/homebrew/lib so ZMusic can dlopen libsndfile and libmpg123 at runtime. The Debug job drops -G Xcode so both macOS jobs use the Makefiles generator.

The Create Package step drops the non-Release mv of gzdoom.app from a per-config subdirectory, a layout only the Xcode generator produces; with the Makefiles generator the app is already at the build root, so the mv failed the Debug packaging.
@gretel
gretel marked this pull request as ready for review August 4, 2026 18:10
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