mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
89 lines
2.8 KiB
Bash
89 lines
2.8 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
OSTYPE=$(uname)
|
|
|
|
if [ "${OSTYPE}" != "Darwin" ]; then
|
|
echo "[obs-websocket - Error] macOS package script can be run on Darwin-type OS only."
|
|
exit 1
|
|
fi
|
|
|
|
echo "[obs-websocket] Preparing package build"
|
|
|
|
GIT_HASH=$(git rev-parse --short HEAD)
|
|
GIT_BRANCH_OR_TAG=$(git name-rev --name-only HEAD | awk -F/ '{print $NF}')
|
|
|
|
VERSION="$GIT_HASH-$GIT_BRANCH_OR_TAG"
|
|
|
|
FILENAME_UNSIGNED="obs-websocket-$VERSION-Unsigned.pkg"
|
|
FILENAME="obs-websocket-$VERSION.pkg"
|
|
|
|
echo "[obs-websocket] Modifying obs-websocket.so linking"
|
|
install_name_tool \
|
|
-change /tmp/obsdeps/lib/QtWidgets.framework/Versions/5/QtWidgets \
|
|
@executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets \
|
|
-change /tmp/obsdeps/lib/QtGui.framework/Versions/5/QtGui \
|
|
@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui \
|
|
-change /tmp/obsdeps/lib/QtCore.framework/Versions/5/QtCore \
|
|
@executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore \
|
|
./build/obs-websocket.so
|
|
|
|
# Check if replacement worked
|
|
echo "[obs-websocket] Dependencies for obs-websocket"
|
|
otool -L ./build/obs-websocket.so
|
|
|
|
if [[ "$RELEASE_MODE" == "True" ]]; then
|
|
echo "[obs-websocket] Signing plugin binary: obs-websocket.so"
|
|
codesign --sign "$CODE_SIGNING_IDENTITY" ./build/obs-websocket.so
|
|
else
|
|
echo "[obs-websocket] Skipped plugin codesigning"
|
|
fi
|
|
|
|
echo "[obs-websocket] Actual package build"
|
|
packagesbuild ./CI/macos/obs-websocket.pkgproj
|
|
|
|
echo "[obs-websocket] Renaming obs-websocket.pkg to $FILENAME"
|
|
mv ./release/obs-websocket.pkg ./release/$FILENAME_UNSIGNED
|
|
|
|
if [[ "$RELEASE_MODE" == "True" ]]; then
|
|
echo "[obs-websocket] Signing installer: $FILENAME"
|
|
productsign \
|
|
--sign "$INSTALLER_SIGNING_IDENTITY" \
|
|
./release/$FILENAME_UNSIGNED \
|
|
./release/$FILENAME
|
|
rm ./release/$FILENAME_UNSIGNED
|
|
|
|
echo "[obs-websocket] Submitting installer $FILENAME for notarization"
|
|
zip -r ./release/$FILENAME.zip ./release/$FILENAME
|
|
UPLOAD_RESULT=$(xcrun altool \
|
|
--notarize-app \
|
|
--primary-bundle-id "fr.palakis.obs-websocket" \
|
|
--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 "[obs-websocket] 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 "[obs-websocket] Staple ticket to installer: $FILENAME"
|
|
xcrun stapler staple ./release/$FILENAME
|
|
break
|
|
fi
|
|
done
|
|
else
|
|
echo "[obs-websocket] Skipped installer codesigning and notarization"
|
|
fi |