Table of Contents
Building the Mac client
Use Xcode 11+ and OS 10.15+.
The main instructions are here: https://github.com/BOINC/boinc/blob/master/mac_build/HowToBuildBOINC_XCode.pdf
To notarize the installer and uninstaller
Make sure you've signed the relevant Apple docs: https://appstoreconnect.apple.com/ See https://stackoverflow.com/questions/58358449/notarizing-electron-apps-throws-you-must-first-sign-the-relevant-contracts-on
Create an app-specific password at https://appleid.apple.com/account/manage.
$ xcrun altool --notarize-app -t osx -f {path to ...macOSX_x86_64.zip} --primary-bundle-id edu.berkeley.boinc.Installer -u {userID} -p {password}
where userId is your Apple ID and password is the app-specific password.
Note: I (Charlie) have only one development "team" under my Apple Developer account, but U.C. Berkeley may have several. If so, you may need to add an extra argument to the altool command line for notarization:
--asc-provider <ProviderShortname>
This is explained about 1/3 of the way down on this web page: <https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution/customizing_the_notarization_workflow?language=objc>
After a few minutes, check whether the notarize-app request succeeded:
$ xcrun altool --notarization-info {UUID from last step} -u {userID} -p {password}
If the notarize-app request succeeded, attach tickets to top level applications:
$ xcrun stapler staple {path to "...macOSX_x86_64/BOINC Installer.app"}
$ xcrun stapler staple {path to "...macOSX_x86_64/extras/Uninstall BOINC.app"}
Delete or rename the original ...macOSX_x86_64.zip}
Run this ditto command again to create a new ...macOSX_x86_64.zip containing the updated (notarized) BOINC Installer.app and Uninstall BOINC.app:
$ ditto -ck --sequesterRsrc --keepParent boinc_x.y.z_macOSX_x86_64 boinc_x.y.z_macOSX_x86_64.zip
replacing x.y.z with the current version number.
For more information:
$ xcrun altool --help
$ man stapler