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
|