123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #!/bin/bash
- set -e
- script_dir=$(dirname "$0")
- source "$script_dir/../ci_includes.generated.sh"
- OSTYPE=$(uname)
- if [ "${OSTYPE}" != "Darwin" ]; then
- echo "[Error] macOS package script can be run on Darwin-type OS only."
- exit 1
- fi
- echo "=> Preparing package build"
- export QT_CELLAR_PREFIX="$(/usr/bin/find /usr/local/Cellar/qt -d 1 | sort -t '.' -k 1,1n -k 2,2n -k 3,3n | tail -n 1)"
- GIT_HASH=$(git rev-parse --short HEAD)
- GIT_BRANCH_OR_TAG=$(git name-rev --name-only HEAD | awk -F/ '{print $NF}')
- PKG_VERSION="$GIT_HASH-$GIT_BRANCH_OR_TAG"
- FILENAME_UNSIGNED="$PLUGIN_NAME-$PKG_VERSION-Unsigned.pkg"
- FILENAME="$PLUGIN_NAME-$PKG_VERSION.pkg"
- echo "=> Modifying $PLUGIN_NAME.so"
- install_name_tool \
- -change /usr/local/opt/qt/lib/QtWidgets.framework/Versions/5/QtWidgets \
- @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets \
- -change /usr/local/opt/qt/lib/QtGui.framework/Versions/5/QtGui \
- @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui \
- -change /usr/local/opt/qt/lib/QtCore.framework/Versions/5/QtCore \
- @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore \
- ./build/$PLUGIN_NAME.so
- # Check if replacement worked
- echo "=> Dependencies for $PLUGIN_NAME"
- otool -L ./build/$PLUGIN_NAME.so
- if [[ "$RELEASE_MODE" == "True" ]]; then
- echo "=> Signing plugin binary: $PLUGIN_NAME.so"
- codesign --sign "$CODE_SIGNING_IDENTITY" ./build/$PLUGIN_NAME.so
- else
- echo "=> Skipped plugin codesigning"
- fi
- echo "=> Actual package build"
- packagesbuild ./installer/installer-macOS.generated.pkgproj
- echo "=> Renaming $PLUGIN_NAME.pkg to $FILENAME"
- mv ./release/$PLUGIN_NAME.pkg ./release/$FILENAME_UNSIGNED
- if [[ "$RELEASE_MODE" == "True" ]]; then
- echo "=> Signing installer: $FILENAME"
- productsign \
- --sign "$INSTALLER_SIGNING_IDENTITY" \
- ./release/$FILENAME_UNSIGNED \
- ./release/$FILENAME
- rm ./release/$FILENAME_UNSIGNED
- echo "=> Submitting installer $FILENAME for notarization"
- zip -r ./release/$FILENAME.zip ./release/$FILENAME
- UPLOAD_RESULT=$(xcrun altool \
- --notarize-app \
- --primary-bundle-id "$MACOS_BUNDLEID" \
- --username "$AC_USERNAME" \
- --password "$AC_PASSWORD" \
- --asc-provider "$AC_PROVIDER_SHORTNAME" \
- --file "./release/$FILENAME.zip")
- rm ./release/$FILENAME.zip
- REQUEST_UUID=$(echo $UPLOAD_RESULT | awk -F ' = ' '/RequestUUID/ {print $2}')
- echo "Request UUID: $REQUEST_UUID"
- echo "=> Wait for notarization result"
- # Pieces of code borrowed from rednoah/notarized-app
- while sleep 30 && date; do
- CHECK_RESULT=$(xcrun altool \
- --notarization-info "$REQUEST_UUID" \
- --username "$AC_USERNAME" \
- --password "$AC_PASSWORD" \
- --asc-provider "$AC_PROVIDER_SHORTNAME")
- echo $CHECK_RESULT
- if ! grep -q "Status: in progress" <<< "$CHECK_RESULT"; then
- echo "=> Staple ticket to installer: $FILENAME"
- xcrun stapler staple ./release/$FILENAME
- break
- fi
- done
- else
- echo "=> Skipped installer codesigning and notarization"
- fi
|