-
Notifications
You must be signed in to change notification settings - Fork 38.7k
build: Use a zip instead of dmg for macOS releases #19068
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Gitian Build seems to work: https://bitcoin.jonasschnelli.ch/gitian/build/142 Conceptual, I'm currently ~0 (I commented on the concept before). However, if there is a difference in user experience between a zip and a dmg, it is probably marginal. |
|
Is there any "official" mac documention or user surveys that suggest which one is the recommended or preferred way? |
|
Concept ACK! Great to see the amount of code we can remove.
Just to make myself clear, I am for this change because it is a great simplification for a marginal difference in user experience and not because of anything specific to Guix (my current implementation of the Guix macOS build is already able to build the |
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
"Keeping that around" would mostly defeat the point of these changes. |
It still gets rid of |
This simply zips the staticly built app bundle that has been placed into /dist.
A make deploy won't currently work because -fancy is still passed to macdeployqtplus
17d2ee1 to
88fd25d
Compare
|
Pushed a few more removals, updated the descriptors and fixed whitespace.
The Apple documentation is mainly focused on using Xcode and App Store distribution: https://help.apple.com/xcode/mac/current/#/devac02c5ab8. There is a section on distribution outside the App Store: https://help.apple.com/xcode/mac/current/#/dev033e997ca, however I couldn't quickly find any mention of using There seem to be at least some companies that are using a combination of
I'm not aware of any projects that are using a symlink inside a Also, as far as I'm aware, you can open and use an app bundle from any directory on macOS, and it makes little to no difference to how the app actually runs? |
That's because most projects use a DMG with a symlink and background image. We have a good reason to avoid that, namely to make deterministic builds easier. Even as an experienced macOS user, I find the symlink useful; it saves me from opening a new Finder window, navigating to Applications and then dragging between two windows. And it's a trivial thing to add.
Whenever I deal with applications that don't have an installer or a symlink, I very often make the mistake of running it from the Download folder. That works, until I accidentally clean up the download folder. There's no obvious alternative folder to drag the program to. When downloading an upgrade there's an additional risk that a user doesn't replace the original version. The first time they might double click on the download and run the new version. Second time they might use command + space and launch the old version. |
| echo $(OSX_VOLNAME) >$@ | ||
|
|
||
| if BUILD_DARWIN | ||
| $(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING) $(OSX_BACKGROUND_IMAGE) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One possible simplification after this change, would be to make the otool and installnametool checks no longer cross-compiling dependent. Then we should be able to have a single OSX_ZIP rule, and drop the need for BUILD_DARWIN.
|
Can we add the ZIP and remove the DMG in two steps? IMO it'd be nice to build both for 0.21, but only distribute the ZIP. That way if it causes too much problems/confusion we can just change it back without rebuilds/etc. |
|
I might come back to this in future, but closing for now as I've made some changes to the existing macdeploy process. Any discussion should continue in #18128. |

Implements #18128 (mostly). From discussion on that issue we've got 3
ACKs (to move from .dmg to .zip), 1~0and 1NACK. So I've opened this PR to give a better overview of what the changes might actually look like.Gitian builds currently work, however I haven't tested the signer, and that likely needs some additional changes. As mentioned we can drop quite a few packages from depends. There's some commits here that can cleaned up, squashed or dropped.
If you're compiling macOS,
make appbundlewill (as before) build a dynamically linkedBitcoin Core.app.make deploywill still build a statically linkeddist/Bitcoin Core.appand will now also create adist/Bitcoin-Core.zip.Compiling on Linux there has never been a
make appbundlerule, and with these changes,make deploynow behaves the same as on macOS. Themake deploydirrule has been removed.Initially I was unconvinced (of a swap from .dmg to .zip), however I have come around after looking at these changes. If there is not agreement that "this is the way", then I'll revive #18151 and fix it up to include
xorrisoin depends etc.