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
|