|
@@ -1,36 +1,92 @@
|
|
-#!/bin/sh
|
|
|
|
|
|
+#!/bin/bash
|
|
|
|
|
|
set -e
|
|
set -e
|
|
|
|
|
|
-echo "-- Preparing package build"
|
|
|
|
-export QT_CELLAR_PREFIX="$(find /usr/local/Cellar/qt -d 1 | tail -n 1)"
|
|
|
|
|
|
+source ../ci_config.inc.sh
|
|
|
|
|
|
-export GIT_HASH=$(git rev-parse --short HEAD)
|
|
|
|
|
|
+OSTYPE=$(uname)
|
|
|
|
|
|
-export VERSION="$GIT_HASH-$TRAVIS_BRANCH"
|
|
|
|
-export LATEST_VERSION="$TRAVIS_BRANCH"
|
|
|
|
-if [ -n "${TRAVIS_TAG}" ]; then
|
|
|
|
- export VERSION="$TRAVIS_TAG"
|
|
|
|
- export LATEST_VERSION="$TRAVIS_TAG"
|
|
|
|
|
|
+if [ "${OSTYPE}" != "Darwin" ]; then
|
|
|
|
+ echo "[Error] macOS package script can be run on Darwin-type OS only."
|
|
|
|
+ exit 1
|
|
fi
|
|
fi
|
|
|
|
|
|
-export FILENAME="$PROJECT_NAME-$VERSION.pkg"
|
|
|
|
-export LATEST_FILENAME="$PROJECT_NAME-latest-$LATEST_VERSION.pkg"
|
|
|
|
|
|
+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)"
|
|
|
|
|
|
-echo "-- Modifying $PROJECT_NAME.so"
|
|
|
|
|
|
+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 \
|
|
install_name_tool \
|
|
- -change /usr/local/opt/qt/lib/QtWidgets.framework/Versions/5/QtWidgets @rpath/QtWidgets \
|
|
|
|
- -change /usr/local/opt/qt/lib/QtGui.framework/Versions/5/QtGui @rpath/QtGui \
|
|
|
|
- -change /usr/local/opt/qt/lib/QtCore.framework/Versions/5/QtCore @rpath/QtCore \
|
|
|
|
- ./build/$PROJECT_NAME.so
|
|
|
|
|
|
+ -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
|
|
# Check if replacement worked
|
|
-echo "-- Dependencies for obs-websocket"
|
|
|
|
-otool -L ./build/obs-websocket.so
|
|
|
|
|
|
+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 ./CI/macos/installer-macOS.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 "-- Actual package build"
|
|
|
|
-packagesbuild ./CI/installer/installer-macOS.pkgproj
|
|
|
|
|
|
+ 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
|
|
|
|
|
|
-echo "-- Renaming $PROJECT_NAME.pkg to $FILENAME"
|
|
|
|
-mv ./release/$PROJECT_NAME.pkg ./release/$FILENAME
|
|
|
|
-cp ./release/$FILENAME ./release/$LATEST_FILENAME
|
|
|
|
|
|
+ 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
|