Squirrel / Squirrel.Mac

:shipit: Cocoa framework for updating OS X apps :shipit:
MIT License
1.57k stars 128 forks source link

Xcode 12 / macOS 11 Support #251

Open mRs- opened 4 years ago

mRs- commented 4 years ago

Currently i'm trying to get Squirrel up and running with macOS 11 and Xcode 12.

The major Problem is how outdated the used 3rd Party Libraries are and that macOS 10.8 is being dropped from Xcode 12.

ReactiveCococa ReactiveCocoa was moved to ReactiveObjC and the versioning is completly different from the ReactiveCocoa Repository. https://github.com/ReactiveCocoa/ReactiveObjC

How is it possible to be sure that everything is working with this dependency?

Mantle Seems easily updateable only some methods have changed and we need to link the new files as well in ShipIt directly.

Quick The Version used is on the 1.x Releases to the current release should be at least on the 2.x Range

Nimble Used nimble version is 6.x and the current release version is at least 8.x.

xcconfigs Is not even building anymore on macOS...

If Electron and Slack using Squirrel to update Software on the mac and want to use this on Apple Silicone as well there is now time to act. The earlier the better. How should we proceed to update the dependencies. Are Pull Request even welcomed?

MarshallOfSound commented 4 years ago

@mRs- Electron currently builds Squirrel.Mac from source with a small number of patches applied.

  1. Add configuration for building with Chromiums build system (GN) --> https://github.com/electron/electron/blob/master/patches/squirrel.mac/build_add_gn_config.patch
  2. Update to support newer version of ARC --> https://github.com/electron/electron/blob/master/patches/squirrel.mac/fix_ensure_that_self_is_retained_until_the_racsignal_is_complete.patch
  3. Depend on ReactiveObjC --> https://github.com/electron/electron/blob/master/DEPS#L110-L121

This work was done recently in order to support to Apple Silicon builds, Electron has it's own auto updater tests so we have confidence in Electron usage of Squirrel.Mac with these changes. They weren't upstreamed as it is heavily tied to Electrons / Chromiums build system which no one else uses.

mRs- commented 4 years ago

Okay, we make the decision to move away for Squirrel. Thanks for your Input

cbenhagen commented 4 years ago

@mRs- Please reopen the issue. Even if your project is moving away from Squirrel, others might still want to use it.

glennawatson commented 4 years ago

Was talking to Ana,

@MarshallOfSound would you be interested in a PR to update this to XCode 11/12 level?

Need it for a current project I'm working on and figured could pay it forward a little?

cooncesean commented 3 years ago

Okay, we make the decision to move away for Squirrel. Thanks for your Input

@mRs- may I ask what your team moved to as an alternative?

kklash commented 3 years ago

Our Electron (v8.5.1) application, called 'Exodus', is encountering a bug when using Electron's AutoUpdater.quitAndInstall method on the MacOS 11 Big Sur beta. The app quits and installs the update successfully, but fails to relaunch after quitting.

Checking ~/Library/Caches/com.electron.exodus.ShipIt/ShipIt_stderr.log, we find this:

2020-09-23 15:34:57.631 ShipIt[8329:31677] Beginning installation
2020-09-23 15:34:58.112 ShipIt[8329:29598] Moved bundle from file:///Applications/Exodus.app/ to file:///var/folders/nq/2z0ndbtj65gfcslvd2cv3zh80000gn/T/com.electron.exodus.ShipIt.igZIafRe/Exodus.app
2020-09-23 15:34:58.113 ShipIt[8329:29598] Moved bundle from file:///var/folders/nq/2z0ndbtj65gfcslvd2cv3zh80000gn/T/com.electron.exodus.ShipIt.c9hPQtzb/Exodus.app to file:///Applications/Exodus.app/
2020-09-23 15:34:58.154 ShipIt[8329:29598] Couldn't remove owned bundle at location file:///var/folders/nq/2z0ndbtj65gfcslvd2cv3zh80000gn/T/com.electron.exodus.ShipIt.c9hPQtzb/Exodus.app, error NSError { domain: NSCocoaErrorDomain, code: 4, description: "“Exodus.app” couldn’t be removed.", failureReason: "The file doesn’t exist.", underlying error: NSError { domain: NSPOSIXErrorDomain, code: 2, description: "The operation couldn’t be completed. No such file or directory" }, userInfo: {
    NSFilePath = "/var/folders/nq/2z0ndbtj65gfcslvd2cv3zh80000gn/T/com.electron.exodus.ShipIt.c9hPQtzb/Exodus.app";
    NSUserStringVariant =     (
        Remove
    );
} }
2020-09-23 15:34:58.205 ShipIt[8329:29598] Installation completed successfully

The 'file doesnt exist' error would seem to be irrelevant. But compare it to a log from the same app performing an auto-update on Mac OS Catalina:

2020-09-17 17:55:13.704 ShipIt[4099:100428] Beginning installation
2020-09-17 17:55:15.095 ShipIt[4099:100040] Moved bundle from file:///Applications/Exodus.app/ to file:///var/folders/cq/220vc6_s0s5d988lcl0pftwm0000gn/T/com.electron.exodus.ShipIt.1hZyvbC9/Exodus.app
2020-09-17 17:55:15.096 ShipIt[4099:100040] Moved bundle from file:///var/folders/cq/220vc6_s0s5d988lcl0pftwm0000gn/T/com.electron.exodus.ShipIt.lYSp0JQw/Exodus.app to file:///Applications/Exodus.app/
2020-09-17 17:55:15.165 ShipIt[4099:100040] Couldn't remove owned bundle at location file:///var/folders/cq/220vc6_s0s5d988lcl0pftwm0000gn/T/com.electron.exodus.ShipIt.lYSp0JQw/Exodus.app, error NSError { domain: NSCocoaErrorDomain, c
ode: 4, description: "“Exodus.app” couldn’t be removed.", failureReason: "The file doesn’t exist.", underlying error: NSError { domain: NSPOSIXErrorDomain, code: 2, description: "The operation couldn’t be completed. No such file or di
rectory" }, userInfo: {
    NSFilePath = "/var/folders/cq/220vc6_s0s5d988lcl0pftwm0000gn/T/com.electron.exodus.ShipIt.lYSp0JQw/Exodus.app";
    NSUserStringVariant =     (
        Remove
    );
} }
2020-09-17 17:55:15.252 ShipIt[4099:100040] Installation completed successfully
2020-09-17 17:55:15.344 ShipIt[4099:100431] Application launched at file:///Applications/Exodus.app/
2020-09-17 17:55:15.344 ShipIt[4099:100431] ShipIt quitting

It's almost identical except that the last two lines are missing on the Big Sur log.

2020-09-17 17:55:15.344 ShipIt[4099:100431] Application launched at file:///Applications/Exodus.app/
2020-09-17 17:55:15.344 ShipIt[4099:100431] ShipIt quitting

Those lines are logged from these locations:

https://github.com/Squirrel/Squirrel.Mac/blob/44468f858ce0d25c27bd5e674abfa104e0119738/Squirrel/ShipIt-main.m#L128 https://github.com/Squirrel/Squirrel.Mac/blob/44468f858ce0d25c27bd5e674abfa104e0119738/Squirrel/ShipIt-main.m#L145

Is ShipIt quitting's absence indicative of some kind of segmentation fault occurring? Seems like it should be logged no matter what, so why is it missing in the Big Sur log?

If i wanted to build electron+squirrel myself to insert print statements and debug this, how would i do it? Where would i find resources or documentation to help me fix such a bug?

khomin commented 11 months ago

Can anyone share information about alternatives? macos 10.8 seems antique to me