Chris@62: #!/bin/bash Chris@62: Chris@62: # Run this from the project root, without arguments, or with the Chris@62: # single argument --no-notarization to skip the notarize step Chris@62: Chris@62: set -e Chris@62: Chris@62: notarize=yes Chris@62: if [ "$1" = "--no-notarization" ]; then Chris@62: notarize=no Chris@62: elif [ -n "$1" ]; then Chris@62: echo "Usage: $0 [--no-notarization]" Chris@62: exit 2 Chris@62: fi Chris@62: Chris@62: set -u Chris@62: Chris@62: app="Vamp Plugin Pack Installer" Chris@62: identity="Developer ID Application: Chris Cannam" Chris@62: Chris@62: version=`perl -p -e 's/^[^"]*"([^"]*)".*$/$1/' version.h` Chris@62: Chris@62: qmake=$(grep '^# Command: ' Makefile | awk '{ print $3; }') Chris@62: Chris@62: echo "Proceed to rebuild, package, and sign version $version using" Chris@62: echo -n "qmake path \"$qmake\" [Yn] ? " Chris@62: read yn Chris@62: case "$yn" in "") ;; [Yy]) ;; *) exit 3;; esac Chris@62: echo "Proceeding" Chris@62: Chris@62: source="$app.app" Chris@62: volume="$app"-"$version" Chris@62: target="$volume"/"$app".app Chris@62: dmg="$volume".dmg Chris@62: Chris@62: if [ -d "$volume" ]; then Chris@62: echo "Target directory $volume already exists, not overwriting" Chris@62: exit 2 Chris@62: fi Chris@62: Chris@62: if [ -f "$dmg" ]; then Chris@62: echo "Target disc image $dmg already exists, not overwriting" Chris@62: exit 2 Chris@62: fi Chris@62: Chris@62: if [ "$notarize" = no ]; then Chris@62: echo Chris@62: echo "Note: The --no-notarization flag is set: won't be submitting for notarization" Chris@62: fi Chris@62: Chris@62: rm -rf "$app.app" Chris@62: rm -rf "$volume" Chris@62: rm -f "$dmg" Chris@62: Chris@62: ./repoint install Chris@62: rm -rf .qmake.stash Chris@62: "$qmake" -r Chris@62: make clean Chris@62: rm -rf out Chris@62: Chris@62: echo Chris@62: echo "Building plugins..." Chris@62: make -j3 -f Makefile.plugins Chris@62: echo "Done" Chris@62: Chris@123: echo Chris@123: echo "Building get-version..." Chris@123: make -j3 -f Makefile.get-version Chris@123: echo "Done" Chris@123: Chris@62: echo Chris@123: echo "Signing plugins and get-version..." Chris@123: codesign -s "$identity" -fv --timestamp --options runtime out/*.dylib out/get-version Chris@62: echo "Done" Chris@62: Chris@62: if [ "$notarize" = no ]; then Chris@62: echo Chris@62: echo "The --no-notarization flag was set: not submitting for notarization" Chris@62: else Chris@62: echo Chris@123: echo "Notarizing plugins and get-version..." Chris@62: rm -f plugins.zip Chris@62: ditto -c -k out plugins.zip Chris@62: deploy/osx/notarize.sh plugins.zip Chris@62: echo "Done" Chris@62: Chris@62: ## No, it doesn't seem to be possible to pass a dylib to stapler Chris@62: # echo Chris@62: # echo "Stapling plugins..." Chris@62: # xcrun stapler staple out/*.dylib Chris@62: # echo "Done" Chris@62: fi Chris@62: Chris@62: echo Chris@62: echo "Building installer..." Chris@62: make -j3 -f Makefile.installer Chris@62: echo "Done" Chris@62: Chris@62: echo Chris@62: echo "Deploying installer..." Chris@62: deploy/osx/deploy.sh "$app" || exit 1 Chris@62: echo "Done" Chris@62: Chris@62: echo Chris@62: echo "Making target tree..." Chris@62: mkdir "$volume" || exit 1 Chris@62: Chris@62: #cp README.md "$volume/README.txt" Chris@62: #cp README.OSC "$volume/README-OSC.txt" Chris@62: #cp COPYING "$volume/COPYING.txt" Chris@62: #cp CHANGELOG "$volume/CHANGELOG.txt" Chris@62: #cp CITATION "$volume/CITATION.txt" Chris@62: cp -rp "$source" "$target" Chris@62: Chris@62: # update file timestamps so as to make the build date apparent Chris@62: find "$volume" -exec touch \{\} \; Chris@62: echo "Done" Chris@62: Chris@62: echo Chris@62: echo "Signing installer..." Chris@64: find "$target" -name \*.dylib -print | while read fr; do Chris@64: codesign -s "$identity" -fv --deep --timestamp --options runtime "$fr" Chris@64: done Chris@64: codesign -s "$identity" -fv --deep --timestamp --options runtime "$target/Contents/MacOS/$app" Chris@64: codesign -s "$identity" -fv --deep --timestamp --options runtime "$target" Chris@62: echo "Done" Chris@62: Chris@62: echo Chris@62: echo "Making dmg..." Chris@62: rm -f "$dmg" Chris@62: hdiutil create -srcfolder "$volume" "$dmg" -volname "$volume" -fs HFS+ && Chris@62: rm -r "$volume" Chris@62: echo "Done" Chris@62: Chris@62: echo Chris@62: echo "Signing dmg..." Chris@62: codesign -s "$identity" -fv --timestamp "$dmg" Chris@62: echo "Done" Chris@62: Chris@62: if [ "$notarize" = no ]; then Chris@62: echo Chris@62: echo "The --no-notarization flag was set: not submitting for notarization" Chris@62: else Chris@62: echo Chris@62: echo "Submitting disk image for notarization..." Chris@62: deploy/osx/notarize.sh "$dmg" Chris@62: echo "Done" Chris@62: Chris@62: echo Chris@62: echo "Stapling disk image..." Chris@62: xcrun stapler staple "$dmg" Chris@62: echo "Done" Chris@62: fi Chris@62: