annotate deploy/osx/build-and-package.sh @ 129:afd72eb2b0aa tip

Added tag v1.0-windows-32bit for changeset 7d5387c63447
author Chris Cannam
date Fri, 12 Jun 2020 17:20:52 +0100
parents ddcb0e606d28
children
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@123 66 echo
Chris@123 67 echo "Building get-version..."
Chris@123 68 make -j3 -f Makefile.get-version
Chris@123 69 echo "Done"
Chris@123 70
Chris@62 71 echo
Chris@123 72 echo "Signing plugins and get-version..."
Chris@123 73 codesign -s "$identity" -fv --timestamp --options runtime out/*.dylib out/get-version
Chris@62 74 echo "Done"
Chris@62 75
Chris@62 76 if [ "$notarize" = no ]; then
Chris@62 77 echo
Chris@62 78 echo "The --no-notarization flag was set: not submitting for notarization"
Chris@62 79 else
Chris@62 80 echo
Chris@123 81 echo "Notarizing plugins and get-version..."
Chris@62 82 rm -f plugins.zip
Chris@62 83 ditto -c -k out plugins.zip
Chris@62 84 deploy/osx/notarize.sh plugins.zip
Chris@62 85 echo "Done"
Chris@62 86
Chris@62 87 ## No, it doesn't seem to be possible to pass a dylib to stapler
Chris@62 88 # echo
Chris@62 89 # echo "Stapling plugins..."
Chris@62 90 # xcrun stapler staple out/*.dylib
Chris@62 91 # echo "Done"
Chris@62 92 fi
Chris@62 93
Chris@62 94 echo
Chris@62 95 echo "Building installer..."
Chris@62 96 make -j3 -f Makefile.installer
Chris@62 97 echo "Done"
Chris@62 98
Chris@62 99 echo
Chris@62 100 echo "Deploying installer..."
Chris@62 101 deploy/osx/deploy.sh "$app" || exit 1
Chris@62 102 echo "Done"
Chris@62 103
Chris@62 104 echo
Chris@62 105 echo "Making target tree..."
Chris@62 106 mkdir "$volume" || exit 1
Chris@62 107
Chris@62 108 #cp README.md "$volume/README.txt"
Chris@62 109 #cp README.OSC "$volume/README-OSC.txt"
Chris@62 110 #cp COPYING "$volume/COPYING.txt"
Chris@62 111 #cp CHANGELOG "$volume/CHANGELOG.txt"
Chris@62 112 #cp CITATION "$volume/CITATION.txt"
Chris@62 113 cp -rp "$source" "$target"
Chris@62 114
Chris@62 115 # update file timestamps so as to make the build date apparent
Chris@62 116 find "$volume" -exec touch \{\} \;
Chris@62 117 echo "Done"
Chris@62 118
Chris@62 119 echo
Chris@62 120 echo "Signing installer..."
Chris@64 121 find "$target" -name \*.dylib -print | while read fr; do
Chris@64 122 codesign -s "$identity" -fv --deep --timestamp --options runtime "$fr"
Chris@64 123 done
Chris@64 124 codesign -s "$identity" -fv --deep --timestamp --options runtime "$target/Contents/MacOS/$app"
Chris@64 125 codesign -s "$identity" -fv --deep --timestamp --options runtime "$target"
Chris@62 126 echo "Done"
Chris@62 127
Chris@62 128 echo
Chris@62 129 echo "Making dmg..."
Chris@62 130 rm -f "$dmg"
Chris@62 131 hdiutil create -srcfolder "$volume" "$dmg" -volname "$volume" -fs HFS+ &&
Chris@62 132 rm -r "$volume"
Chris@62 133 echo "Done"
Chris@62 134
Chris@62 135 echo
Chris@62 136 echo "Signing dmg..."
Chris@62 137 codesign -s "$identity" -fv --timestamp "$dmg"
Chris@62 138 echo "Done"
Chris@62 139
Chris@62 140 if [ "$notarize" = no ]; then
Chris@62 141 echo
Chris@62 142 echo "The --no-notarization flag was set: not submitting for notarization"
Chris@62 143 else
Chris@62 144 echo
Chris@62 145 echo "Submitting disk image for notarization..."
Chris@62 146 deploy/osx/notarize.sh "$dmg"
Chris@62 147 echo "Done"
Chris@62 148
Chris@62 149 echo
Chris@62 150 echo "Stapling disk image..."
Chris@62 151 xcrun stapler staple "$dmg"
Chris@62 152 echo "Done"
Chris@62 153 fi
Chris@62 154