Skip to content
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

MacOS Catalina Support + Notarization + GCC 8.4 #3600

Merged
merged 16 commits into from
Jul 8, 2020
Merged

Conversation

jonoomph
Copy link
Member

@jonoomph jonoomph commented Jul 7, 2020

Big changes to our Mac builder, including an upgrade to Catalina (10.15). This change was required due to new Gatekeeper changes on newer MacOS versions. Apple now requires all apps to be notarized, which involves many things, including a hardened runtime, more strict code signing, and entitlements. It also required a newer compiler than GCC 4.8 (our previous one), so I upgraded to GCC 8.4.

The openshot-qt changes are mostly related to notarization, and include:

  • Notarization script improvements (upload *.dmg to Apple, wait for a notarization decision, parse the output and get the ID, staple the successful notarization to the *.dmg and *.app)
  • Adding entitlements, to allow for using @rpath and @executablepath in our dependencies.
  • Renamed launch-mac.sh to launch-mac to fix an error related to "sh" trying to take over the computer
  • Fixed a broken emoji folder location
  • Updated build-server.py "success" criteria, since lots of output changed
  • Related libopenshot PR: MacOS Catalina Support + _CXX11 + GCC 8.4 libopenshot#540

echo "Code Sign App Bundle (deep)"
codesign -s "OpenShot Studios, LLC" "build/$OS_APP_NAME" --deep --force
codesign -s "OpenShot Studios, LLC" --force --deep --entitlements "installer/openshot.entitlements" --options runtime --timestamp=http://timestamp.apple.com/ts01 "build/$OS_APP_NAME"
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Every single file must be signed. If I don't sign with --deep, I get errors on *.svg files and all sorts of other files. Also, this adds a hardened runtime, a signature with a timestamp (required for notarization), and some entitlements, required to allow our @rpath handling.

@@ -52,8 +53,11 @@ if [ -d "$OS_PATH/MacOS/python3.6" ]; then
mv "$OS_PATH/MacOS/python36.zip" "$OS_PATH/Resources/python36.zip"; ln -s "../../Resources/python36.zip" "$OS_PATH/MacOS/lib/python36.zip";
fi

echo "Loop through bundled files and sign all binary files"
find "build" \( -iname '*.dylib' -o -iname '*.so' \) -exec codesign -s "OpenShot Studios, LLC" --timestamp=http://timestamp.apple.com/ts01 --entitlements "installer/openshot.entitlements" --force "{}" \;
Copy link
Member Author

@jonoomph jonoomph Jul 7, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This re-signs all *.dylib and *.so files with a timestamp, since the --deep option ignores files that are already signed... and thus, forces a failed notarization.

@jonoomph jonoomph merged commit cb81d4c into develop Jul 8, 2020
@jonoomph jonoomph deleted the mac-catalina-changes branch July 8, 2020 07:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant