Repository navigation
feat(release): dual-arch builds (universal + arm64) with per-lane feeds - #72
Merged
Merged
Conversation
Ship two separately auto-updating artifacts per release and slim them down. - Build once with xcodebuild (universal), derive the arm64 artifact by lipo-thinning the products — avoids a second ~8-min build. - Two lanes, two Sparkle feeds: universal → appcast.xml (unchanged, so existing installs keep updating), arm64 → appcast-arm64.xml (derived from SIMPLETON_SU_FEED_URL; no extra variable). Each bundle embeds its own feed so a copy only auto-updates within its lane. - Slim the binary: pass -enableCodeCoverage NO (the auto-generated SPM scheme instruments every compile with -profile-generate/-fcoverage- mapping, bloating the binary and dropping a .profraw at runtime), and strip the executable in make-app-bundle. Universal ~202 MB → ~100 MB; arm64 ~50 MB. - Factor sign → notarize → EdDSA → publish into scripts/ci/publish-lane.sh, called once per lane; make-app-bundle gains SIMPLETON_APP_OUT so it can emit both bundles in one run. - Attach both zips to the GitHub release; docs updated. Verified locally end-to-end against real products: both bundles assemble, carry the right arch + feed URL + rpath, and launch without crashing.
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.
What
Ship two separately auto-updating artifacts per release, and slim them down.
lipo-thinning the products — no second ~8-min build.appcast.xml(unchanged, so existing v0.1.7 installs keep updating); arm64 →appcast-arm64.xml(derived fromSIMPLETON_SU_FEED_URL, no new variable). Each bundle embeds its own feed, so a copy only ever auto-updates within its own lane.-enableCodeCoverage NO(the auto-generated SPM scheme was instrumenting every compile with-profile-generate/-fcoverage-mapping— hence__LLVM_COV+ a runtime.profraw) plus a symbolstrip. Universal ~202 MB → ~100 MB; arm64 ~50 MB.scripts/ci/publish-lane.sh(called once per lane);make-app-bundle.shgainsSIMPLETON_APP_OUTto emit both bundles in one run.docs/release-and-updates.mdupdated.Verification (local, against real published products)
x86_64 arm64), arm64 is arm64-only.SUFeedURL(appcast.xmlvsappcast-arm64.xml) and the@executable_pathrpath.actionlint+shellcheckclean.Coverage-off is verified by a new CI build-step diagnostic (
size -mchecks for__LLVM_COV) since it's a build-time setting.After merge
Cut v0.1.8 → confirm both artifacts attach, both appcasts publish, and both download+launch — then promote to Latest.