nightly: bundle the unified Wine engine into the app so nightlies install like a release - #175
Open
realmaitreal wants to merge 2 commits into
Open
nightly: bundle the unified Wine engine into the app so nightlies install like a release#175realmaitreal wants to merge 2 commits into
realmaitreal wants to merge 2 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #103 (nightly release automation).
Makes a nightly build behave like an official release: the unified Wine engine
ships inside
Contents/Resources, so opening a nightly installs/updates theengine offline exactly as an official DMG does, instead of building or
downloading Wine. Installing is a wholesale replace —
installer.shalreadydoes
rm -rf deps/wine-unifiedbefore extracting.Until now nothing in the repo put those payloads into
Resources; officialDMGs were assembled by hand.
How it works
nightly.ymldownloads the newest engine release from the private enginerepo and drops it in
payload/wine-unified-bundle.tar.xz.buildapp.shcopies everything in$MNC_PAYLOAD_DIR(defaultpayload/)into
Resources, so the payload set can grow without touching the script.installer.shnow accepts a.tar.xzbundle as well as the historical.zip, and uses themnc-d3dpack the bundle already carries.Notes on a few choices
--latest. Engine builds are oftenprereleases and the engine repo also publishes d3d-pack-only releases, so
--latestselects the wrong one.--strip-components=1on extract. The tarball wraps everything in asingle
wine-unified/dir, but that dir is the destination, so a plainextract would nest it twice.
WINE_ENGINE_TOKENis not fatal. It warns and buildslauncher-only, so a fork without the secret still gets a usable nightly. An
incomplete engine bundle does fail hard: a d3d pack missing either half of
the D3DMetal runtime loads fine and then dies on
Failed to dlopen D3DMetalwith no hint a file is missing.
limit; uploads past it are rejected late and confusingly, so this fails early
and says so.
Setup required before this can run
A repository secret
WINE_ENGINE_TOKEN— a fine-grained PAT, resource ownermont127, scoped toMacNdCheese-WineEngine-PRIVATE, permissionContents: read-only (the engine repo is private, so the workflow's own
GITHUB_TOKENcannot read it).Verified
Extraction, bundle-completeness checks and the release-selection logic were run
against the real engine asset:
--strip-components=1yieldsdlls/ loader/ mnc-d3d/ server/…at the destination root, all required paths resolve, andinstaller.shcorrectly skips re-staging the d3d pack.Not yet exercised end-to-end in Actions — that needs the secret to exist.