annotate deploy/osx/build-and-package.sh @ 105:9bdb0b058d0d v1.0-pre1-windows

Fixes for static build on Windows
author Chris Cannam
date Mon, 02 Mar 2020 14:04:39 +0000
parents bf0fc15c3e21
children ddcb0e606d28
rev   line source
Chris@62 1 #!/bin/bash
Chris@62 2
Chris@62 3 # Run this from the project root, without arguments, or with the
Chris@62 4 # single argument --no-notarization to skip the notarize step
Chris@62 5
Chris@62 6 set -e
Chris@62 7
Chris@62 8 notarize=yes
Chris@62 9 if [ "$1" = "--no-notarization" ]; then
Chris@62 10 notarize=no
Chris@62 11 elif [ -n "$1" ]; then
Chris@62 12 echo "Usage: $0 [--no-notarization]"
Chris@62 13 exit 2
Chris@62 14 fi
Chris@62 15
Chris@62 16 set -u
Chris@62 17
Chris@62 18 app="Vamp Plugin Pack Installer"
Chris@62 19 identity="Developer ID Application: Chris Cannam"
Chris@62 20
Chris@62 21 version=`perl -p -e 's/^[^"]*"([^"]*)".*$/$1/' version.h`
Chris@62 22
Chris@62 23 qmake=$(grep '^# Command: ' Makefile | awk '{ print $3; }')
Chris@62 24
Chris@62 25 echo "Proceed to rebuild, package, and sign version $version using"
Chris@62 26 echo -n "qmake path \"$qmake\" [Yn] ? "
Chris@62 27 read yn
Chris@62 28 case "$yn" in "") ;; [Yy]) ;; *) exit 3;; esac
Chris@62 29 echo "Proceeding"
Chris@62 30
Chris@62 31 source="$app.app"
Chris@62 32 volume="$app"-"$version"
Chris@62 33 target="$volume"/"$app".app
Chris@62 34 dmg="$volume".dmg
Chris@62 35
Chris@62 36 if [ -d "$volume" ]; then
Chris@62 37 echo "Target directory $volume already exists, not overwriting"
Chris@62 38 exit 2
Chris@62 39 fi
Chris@62 40
Chris@62 41 if [ -f "$dmg" ]; then
Chris@62 42 echo "Target disc image $dmg already exists, not overwriting"
Chris@62 43 exit 2
Chris@62 44 fi
Chris@62 45
Chris@62 46 if [ "$notarize" = no ]; then
Chris@62 47 echo
Chris@62 48 echo "Note: The --no-notarization flag is set: won't be submitting for notarization"
Chris@62 49 fi
Chris@62 50
Chris@62 51 rm -rf "$app.app"
Chris@62 52 rm -rf "$volume"
Chris@62 53 rm -f "$dmg"
Chris@62 54
Chris@62 55 ./repoint install
Chris@62 56 rm -rf .qmake.stash
Chris@62 57 "$qmake" -r
Chris@62 58 make clean
Chris@62 59 rm -rf out
Chris@62 60
Chris@62 61 echo
Chris@62 62 echo "Building plugins..."
Chris@62 63 make -j3 -f Makefile.plugins
Chris@62 64 echo "Done"
Chris@62 65
Chris@62 66 echo
Chris@62 67 echo "Signing plugins..."
Chris@62 68 codesign -s "$identity" -fv --timestamp --options runtime out/*.dylib
Chris@62 69 echo "Done"
Chris@62 70
Chris@62 71 if [ "$notarize" = no ]; then
Chris@62 72 echo
Chris@62 73 echo "The --no-notarization flag was set: not submitting for notarization"
Chris@62 74 else
Chris@62 75 echo
Chris@62 76 echo "Notarizing plugins..."
Chris@62 77 rm -f plugins.zip
Chris@62 78 ditto -c -k out plugins.zip
Chris@62 79 deploy/osx/notarize.sh plugins.zip
Chris@62 80 echo "Done"
Chris@62 81
Chris@62 82 ## No, it doesn't seem to be possible to pass a dylib to stapler
Chris@62 83 # echo
Chris@62 84 # echo "Stapling plugins..."
Chris@62 85 # xcrun stapler staple out/*.dylib
Chris@62 86 # echo "Done"
Chris@62 87 fi
Chris@62 88
Chris@62 89 echo
Chris@62 90 echo "Building installer..."
Chris@62 91 make -j3 -f Makefile.installer
Chris@62 92 echo "Done"
Chris@62 93
Chris@62 94 echo
Chris@62 95 echo "Deploying installer..."
Chris@62 96 deploy/osx/deploy.sh "$app" || exit 1
Chris@62 97 echo "Done"
Chris@62 98
Chris@62 99 echo
Chris@62 100 echo "Making target tree..."
Chris@62 101 mkdir "$volume" || exit 1
Chris@62 102
Chris@62 103 #cp README.md "$volume/README.txt"
Chris@62 104 #cp README.OSC "$volume/README-OSC.txt"
Chris@62 105 #cp COPYING "$volume/COPYING.txt"
Chris@62 106 #cp CHANGELOG "$volume/CHANGELOG.txt"
Chris@62 107 #cp CITATION "$volume/CITATION.txt"
Chris@62 108 cp -rp "$source" "$target"
Chris@62 109
Chris@62 110 # update file timestamps so as to make the build date apparent
Chris@62 111 find "$volume" -exec touch \{\} \;
Chris@62 112 echo "Done"
Chris@62 113
Chris@62 114 echo
Chris@62 115 echo "Signing installer..."
Chris@64 116 find "$target" -name \*.dylib -print | while read fr; do
Chris@64 117 codesign -s "$identity" -fv --deep --timestamp --options runtime "$fr"
Chris@64 118 done
Chris@64 119 codesign -s "$identity" -fv --deep --timestamp --options runtime "$target/Contents/MacOS/$app"
Chris@64 120 codesign -s "$identity" -fv --deep --timestamp --options runtime "$target"
Chris@62 121 echo "Done"
Chris@62 122
Chris@62 123 echo
Chris@62 124 echo "Making dmg..."
Chris@62 125 rm -f "$dmg"
Chris@62 126 hdiutil create -srcfolder "$volume" "$dmg" -volname "$volume" -fs HFS+ &&
Chris@62 127 rm -r "$volume"
Chris@62 128 echo "Done"
Chris@62 129
Chris@62 130 echo
Chris@62 131 echo "Signing dmg..."
Chris@62 132 codesign -s "$identity" -fv --timestamp "$dmg"
Chris@62 133 echo "Done"
Chris@62 134
Chris@62 135 if [ "$notarize" = no ]; then
Chris@62 136 echo
Chris@62 137 echo "The --no-notarization flag was set: not submitting for notarization"
Chris@62 138 else
Chris@62 139 echo
Chris@62 140 echo "Submitting disk image for notarization..."
Chris@62 141 deploy/osx/notarize.sh "$dmg"
Chris@62 142 echo "Done"
Chris@62 143
Chris@62 144 echo
Chris@62 145 echo "Stapling disk image..."
Chris@62 146 xcrun stapler staple "$dmg"
Chris@62 147 echo "Done"
Chris@62 148 fi
Chris@62 149