Skip to content

ci(macos): Add App Bundle artifacts and runtime data discovery#2050

Draft
TmLev wants to merge 2 commits intoOpenXRay:devfrom
TmLev:tmlev/1780-macos-app-bundle
Draft

ci(macos): Add App Bundle artifacts and runtime data discovery#2050
TmLev wants to merge 2 commits intoOpenXRay:devfrom
TmLev:tmlev/1780-macos-app-bundle

Conversation

@TmLev
Copy link
Contributor

@TmLev TmLev commented Feb 11, 2026

  • Add macOS Release CI step that creates OpenXRay.app plus .app.zip and .dmg artifacts

  • Install dylibbundler on macOS runners and include bundle step success in artifact upload gating

  • Add misc/macos/make_app_bundle.sh to assemble bundle, bundle dylibs, and package outputs

  • Bundle only open-source resources from repository (res/fsgame.ltx and res/gamedata), no proprietary game assets

  • Add macOS runtime best-effort data resolution for app bundles: check App Support, app-neighbor root, common install paths, then prompt user to choose folder

  • When bundle resources exist, use in-bundle openxray resources for fsgame.ltx and shaders symlink targets

- Add macOS Release CI step that creates OpenXRay.app plus .app.zip and
.dmg artifacts

- Install `dylibbundler` on macOS runners and include bundle step
success in artifact upload gating

- Add `misc/macos/make_app_bundle.sh` to assemble bundle, bundle dylibs,
and package outputs

- Bundle only open-source resources from repository (`res/fsgame.ltx`
and `res/gamedata`), no proprietary game assets

- Add macOS runtime best-effort data resolution for app bundles: check
App Support, app-neighbor root, common install paths, then prompt user
to choose folder

- When bundle resources exist, use in-bundle openxray resources for
`fsgame.ltx` and shaders symlink targets
Copy link
Member

@Xottab-DUTY Xottab-DUTY left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible to reuse the functionality available in CMake?

xr_sprintf(tmp_link, "%s/fsgame.ltx", resourcesRoot);
else
#endif
xr_sprintf(tmp_link, "%s/openxray/fsgame.ltx", CMAKE_INSTALL_FULL_DATAROOTDIR);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Always enclose the else body into {} when if and else are under the #ifdef.

Suggested change
xr_sprintf(tmp_link, "%s/openxray/fsgame.ltx", CMAKE_INSTALL_FULL_DATAROOTDIR);
{
xr_sprintf(tmp_link, "%s/openxray/fsgame.ltx", CMAKE_INSTALL_FULL_DATAROOTDIR);
}

xr_sprintf(tmp_link, "%s/gamedata/shaders/gl", resourcesRoot);
else
#endif
xr_sprintf(tmp_link, "%s/openxray/gamedata/shaders/gl", CMAKE_INSTALL_FULL_DATAROOTDIR);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Always enclose the else body into {} when if and else are under the #ifdef.

Suggested change
xr_sprintf(tmp_link, "%s/openxray/gamedata/shaders/gl", CMAKE_INSTALL_FULL_DATAROOTDIR);
{
xr_sprintf(tmp_link, "%s/openxray/gamedata/shaders/gl", CMAKE_INSTALL_FULL_DATAROOTDIR);
}

@TmLev
Copy link
Contributor Author

TmLev commented Feb 11, 2026

Appreciate the early review, but this is still in draft :)

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

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

2 participants