Sparkle automatic updates for macOS disabled in 3.x

• Mar 3, 2021 - 20:37
Reported version
3.6
Priority
P0 - Critical
Type
Functional
Frequency
Many
Severity
S3 - Major
Reproducibility
Always
Status
closed
Regression
Yes
Workaround
Yes
Project

We had reports that 3.6 and 3.6.1 were not updating to 3.6.2 on macOS. It turns out that the updater is disabled on the 3.x branch for macOS (BUILD_AUTOUPDATE=OFF). This probably happened accidentally during the transition from Travis CI to GitHub Actions. Unfortunately there's no way for us to enable automatic updates for those releases retrospectively.

Workaround: Fortunately, there is a fallback mechanism via the update checking facility that was used before we started doing automatic updates via Sparkle. We can't use this to install an update automatically, but we should at least be able to alert users to the fact that an update is available for them to download on their own.

For future reference, here's what the different updater screens look like:

Automatic updates via Sparkle

Feed: https://sparkle.musescore.org/stable/3/macos/appcast.xml

Sparkle.png

Update Checker

Feed: https://update.musescore.org/update_mac_stable.xml

UpdateChecker.png


Comments

Note for fixing this: the Sparkle updater will only build with -G Xcode. Attempting to use the default "Unix Makefiles" generator gives this error at build time:

[ 92%] Building CXX object mscore/CMakeFiles/mscoreapp.dir/macos/SparkleAutoUpdater.mm.o
error: Objective-C was disabled in PCH file but is currently enabled
1 error generated.
make[2]: *** [mscore/CMakeFiles/mscoreapp.dir/macos/SparkleAutoUpdater.mm.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [mscore/CMakeFiles/mscoreapp.dir/all] Error 2
make: *** [all] Error 2
21:26:36: The process "/usr/local/bin/cmake" exited with code 2.

Recent versions of CMake also require -T buildsystem=1 to prevent this error during configuration:

CMake Error in mscore/CMakeLists.txt:
  The custom command generating

    [...]/MuseScore/builds/xcode/mscore/qrc_musescore.cpp

  is attached to multiple targets:

    mscoreapp
    inspectorplugin

  but none of these is a common dependency of the other(s).  This is not
  allowed by the Xcode "new build system".


CMake Generate step failed.  Build files cannot be regenerated correctly.

The first error might be fundamental, but the second error could probably be fixed by modifying mscore/qrc_musescore.cpp or mscore/CMakeLists.txt.

Severity S3 - Major S1 - Blocker

Blocker means it blocks a release, not that it blocks the user or is an immediate danger. We consider this important enough that we would not do another release without fixing it, therefore it's a blocker.

I assigned 3.x as the reported version because I was building that branch with release flags enabled and found the bug to be active. I guess it could make sense to assign 3.6 since development builds are not expected to update automatically (release flags are disabled by default). It depends what you want "reported version" to mean and how you want it to be used. I'll leave it on 3.6 for now.

Priority P1 - High P0 - Critical
Severity S1 - Blocker S3 - Major

The problem is with the 3.6 release and a regression with that. It is not a 3.x problem at all, as that doesn#t do autoupdates. And the definition of Blocker is different, see https://musescore.org/en/node/309537#Severity:
S1 - Blocker - The bug prevents a user from running/opening MuseScore.
Clearly not the case here.
But see https://musescore.org/en/node/309537#Priority:
P0 - Critical - The issue must be fixed asap. Usually, this priority is used for the issues affecting development/deploy/infrastructure issues.