3 SYNTAX="make_dmg.sh <environment> <builddir> <intel-sdk> <arm-sdk> <apple-id> <apple-password>"
5 # e.g. make_dmg.sh /Users/carl/osx-environment /Users/carl/cdist 10.9 11.0 foo@bar.net opensesame
7 # Don't set -e here as egrep (used a few times) returns 1 if no matches
10 version=`git describe --tags --abbrev=0 | sed -e "s/v//"`
12 # DMG size in megabytes
21 # This is our work area for making up the .dmgs
22 mkdir -p build/platform/osx
25 cat <<EOF > entitlements.plist
26 <?xml version="1.0" encoding="UTF-8"?>
27 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
30 <key>com.apple.security.cs.disable-library-validation</key>
32 <key>com.apple.security.cs.allow-dyld-environment-variables</key>
39 for f in $1/arm64/$2; do
41 ln -s $(readlink $f) "$3/`basename $f`"
43 g=`echo $f | sed -e "s/\/arm64\//\/x86_64\//g"`
45 lipo -create $f $g -output "$3/`basename $f`"
50 function copy_lib_root {
51 for f in $ROOT/arm64/lib/$1*.dylib; do
53 ln -s $(readlink $f) "$2/`basename $f`"
55 g=`echo $f | sed -e "s/\/arm64\//\/x86_64\//g"`
57 lipo -create $f $g -output "$2/`basename $f`"
60 to_relink="$to_relink|$1"
63 function copy_lib_env {
64 for f in $ENV/arm64/$ARM_SDK/lib/$1*.dylib; do
66 ln -s $(readlink $f) "$2/`basename $f`"
68 g=`echo $f | sed -e "s/\/arm64\//\/x86_64\//g"`
70 lipo -create $f $g -output "$2/`basename $f`"
73 to_relink="$to_relink|$1"
76 # @param #1 directory to copy to
79 copy_lib_root libcxml "$dest"
80 copy_lib_root libdcp-1.0 "$dest"
81 copy_lib_root libasdcp-carl "$dest"
82 copy_lib_root libkumu-carl "$dest"
83 copy_lib_root libsub "$dest"
84 copy_lib_root libopenjp2 "$dest"
85 copy_lib_root libavdevice "$dest"
86 copy_lib_root libavformat "$dest"
87 copy_lib_root libavfilter "$dest"
88 copy_lib_root libavutil "$dest"
89 copy_lib_root libavcodec "$dest"
90 copy_lib_root libswscale "$dest"
91 copy_lib_root libpostproc "$dest"
92 copy_lib_root libswresample "$dest"
93 copy_lib_root liblwext4 "$dest"
94 copy_lib_root libblockdev "$dest"
95 copy_lib_root libleqm_nrt "$dest"
96 copy $ROOT src/dcpomatic/build/src/lib/libdcpomatic2.dylib "$dest"
97 copy $ROOT src/dcpomatic/build/src/wx/libdcpomatic2-wx.dylib "$dest"
98 copy_lib_env libboost_system "$dest"
99 copy_lib_env libboost_filesystem "$dest"
100 copy_lib_env libboost_thread "$dest"
101 copy_lib_env libboost_date_time "$dest"
102 copy_lib_env libboost_locale "$dest"
103 copy_lib_env libboost_regex "$dest"
104 copy_lib_env libxml++ "$dest"
105 copy_lib_env libxslt "$dest"
106 copy_lib_env libxml2 "$dest"
107 copy_lib_env libglibmm-2.4 "$dest"
108 copy_lib_env libgobject "$dest"
109 copy_lib_env libgthread "$dest"
110 copy_lib_env libgmodule "$dest"
111 copy_lib_env libsigc "$dest"
112 copy_lib_env libglib-2 "$dest"
113 copy_lib_env libintl "$dest"
114 copy_lib_env libsndfile "$dest"
115 copy_lib_env libssh "$dest"
116 copy_lib_env libwx "$dest"
117 copy_lib_env libfontconfig "$dest"
118 copy_lib_env libfreetype "$dest"
119 copy_lib_env libexpat "$dest"
120 copy_lib_env libltdl "$dest"
121 copy_lib_env libxmlsec1 "$dest"
122 copy_lib_env libcurl "$dest"
123 copy_lib_env libffi "$dest"
124 copy_lib_env libpango "$dest"
125 copy_lib_env libcairo "$dest"
126 copy_lib_env libpixman "$dest"
127 copy_lib_env libharfbuzz "$dest"
128 copy_lib_env libsamplerate "$dest"
129 copy_lib_env libicui18n "$dest"
130 copy_lib_env libicudata "$dest"
131 copy_lib_env libicuio "$dest"
132 copy_lib_env libicule "$dest"
133 copy_lib_env libiculx "$dest"
134 copy_lib_env libicutest "$dest"
135 copy_lib_env libicutu "$dest"
136 copy_lib_env libicuuc "$dest"
137 copy_lib_env libFLAC "$dest"
138 copy_lib_env libvorbis "$dest"
139 copy_lib_env libogg "$dest"
140 copy_lib_env libxerces-c "$dest"
141 copy_lib_env libcrypto "$dest"
142 copy_lib_env libssl "$dest"
143 copy_lib_env libfribidi "$dest"
144 copy_lib_env libgio "$dest"
145 copy_lib_env libz "$dest"
148 # @param #1 directory to copy to
149 function copy_resources {
151 local prefix=$ROOT/x86_64
152 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic_small.png "$dest"
153 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2.icns "$dest"
154 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_kdm.icns "$dest"
155 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_server.icns "$dest"
156 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_player.icns "$dest"
157 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_batch.icns "$dest"
158 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_playlist.icns "$dest"
159 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_disk.icns "$dest"
160 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_combiner.icns "$dest"
161 cp $prefix/src/dcpomatic/graphics/osx/preferences/defaults.png "$dest"
162 cp $prefix/src/dcpomatic/graphics/osx/preferences/defaults@2x.png "$dest"
163 cp $prefix/src/dcpomatic/graphics/osx/preferences/kdm_email.png "$dest"
164 cp $prefix/src/dcpomatic/graphics/osx/preferences/kdm_email@2x.png "$dest"
165 cp $prefix/src/dcpomatic/graphics/osx/preferences/email.png "$dest"
166 cp $prefix/src/dcpomatic/graphics/osx/preferences/email@2x.png "$dest"
167 cp $prefix/src/dcpomatic/graphics/osx/preferences/servers.png "$dest"
168 cp $prefix/src/dcpomatic/graphics/osx/preferences/servers@2x.png "$dest"
169 cp $prefix/src/dcpomatic/graphics/osx/preferences/tms.png "$dest"
170 cp $prefix/src/dcpomatic/graphics/osx/preferences/tms@2x.png "$dest"
171 cp $prefix/src/dcpomatic/graphics/osx/preferences/keys.png "$dest"
172 cp $prefix/src/dcpomatic/graphics/osx/preferences/keys@2x.png "$dest"
173 cp $prefix/src/dcpomatic/graphics/osx/preferences/cover_sheet.png "$dest"
174 cp $prefix/src/dcpomatic/graphics/osx/preferences/cover_sheet@2x.png "$dest"
175 cp $prefix/src/dcpomatic/graphics/osx/preferences/notifications.png "$dest"
176 cp $prefix/src/dcpomatic/graphics/osx/preferences/notifications@2x.png "$dest"
177 cp $prefix/src/dcpomatic/graphics/osx/preferences/sound.png "$dest"
178 cp $prefix/src/dcpomatic/graphics/osx/preferences/sound@2x.png "$dest"
179 cp $prefix/src/dcpomatic/graphics/osx/preferences/identifiers.png "$dest"
180 cp $prefix/src/dcpomatic/graphics/osx/preferences/identifiers@2x.png "$dest"
181 cp $prefix/src/dcpomatic/graphics/osx/preferences/general.png "$dest"
182 cp $prefix/src/dcpomatic/graphics/osx/preferences/general@2x.png "$dest"
183 cp $prefix/src/dcpomatic/graphics/osx/preferences/advanced.png "$dest"
184 cp $prefix/src/dcpomatic/graphics/osx/preferences/advanced@2x.png "$dest"
185 cp $prefix/src/dcpomatic/graphics/osx/preferences/locations.png "$dest"
186 cp $prefix/src/dcpomatic/graphics/osx/preferences/locations@2x.png "$dest"
187 cp $prefix/src/dcpomatic/fonts/LiberationSans-Regular.ttf "$dest"
188 cp $prefix/src/dcpomatic/fonts/LiberationSans-Italic.ttf "$dest"
189 cp $prefix/src/dcpomatic/fonts/LiberationSans-Bold.ttf "$dest"
190 cp $prefix/src/dcpomatic/fonts/fonts.conf.osx "$dest"/fonts.conf
191 cp $prefix/src/dcpomatic/graphics/splash.png "$dest"
192 cp $prefix/src/dcpomatic/graphics/zoom.png "$dest"
193 cp $prefix/src/dcpomatic/graphics/zoom_all.png "$dest"
194 cp $prefix/src/dcpomatic/graphics/select.png "$dest"
195 cp $prefix/src/dcpomatic/graphics/snap.png "$dest"
196 cp $prefix/src/dcpomatic/graphics/sequence.png "$dest"
197 cp $prefix/src/dcpomatic/graphics/me.jpg "$dest"
198 cp $prefix/src/dcpomatic/graphics/link.png "$dest"
199 cp $prefix/src/dcpomatic/graphics/tick.png "$dest"
200 cp $prefix/src/dcpomatic/graphics/no_tick.png "$dest"
201 cp -r $prefix/share/libdcp/xsd "$dest"
202 cp -r $prefix/share/libdcp/tags "$dest"
204 # i18n: DCP-o-matic .mo files
205 for lang in de_DE es_ES fr_FR it_IT sv_SE nl_NL ru_RU pl_PL da_DK pt_PT pt_BR sk_SK cs_CZ uk_UA zh_CN tr_TR; do
206 mkdir -p "$dest/$lang/LC_MESSAGES"
207 cp $prefix/src/dcpomatic/build/src/lib/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
208 cp $prefix/src/dcpomatic/build/src/wx/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
209 cp $prefix/src/dcpomatic/build/src/tools/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
212 # i18n: wxWidgets .mo files
213 for lang in de es fr it sv nl ru pl da cs; do
215 cp $ENV/x86_64/$INTEL_SDK/share/locale/$lang/LC_MESSAGES/wxstd.mo "$dest/$lang"
219 # param $1 list of things that link to other things
220 function relink_relative {
221 to_relink=`echo $to_relink | sed -e "s/\+//g"`
224 for obj in "${linkers[@]}"; do
225 deps=`otool -L "$obj" | awk '{print $1}' | egrep "($to_relink)" | egrep "($ENV|$ROOT|boost|libicu|libssh)"`
229 # $dep will be a path within x86_64; make arm64 path too
230 dep_arm64=`echo $dep | sed -e "s/\/x86_64\//\/arm64\//g"`
231 changes="$changes -change $dep @executable_path/../Frameworks/$base -change $dep_arm64 @executable_path/../Frameworks/$base"
233 if test "x$changes" != "x"; then
234 install_name_tool $changes -id `basename "$obj"` "$obj"
239 # param $1 directory things should be relinked into
240 # $2 list of things that link to other things
241 function relink_absolute {
242 to_relink=`echo $to_relink | sed -e "s/\+//g"`
247 for obj in "${linkers[@]}"; do
248 deps=`otool -L "$obj" | awk '{print $1}' | egrep "($to_relink)" | egrep "($ENV|$ROOT|boost|libicu|libssh)"`
251 install_name_tool -change "$dep" "$target"/$base -id `basename "$obj"` "$obj"
257 codesign --deep --force --verify --verbose --options runtime --entitlements entitlements.plist --sign "Developer ID Application: Carl Hetherington (R82DXSR997)" "$1"
258 if [ "$?" != "0" ]; then
259 echo "Failed to sign $1"
265 # @param #1 .app directory
266 # @param #2 .pkg or ""
267 # @param #3 full name e.g. DCP-o-matic Batch Converter
272 tmp_dmg=dcpomatic_tmp.dmg
273 dmg="$full_name $version.dmg"
274 vol_name=DCP-o-matic-$version
278 if [ "$pkg" != "" ]; then
279 productsign --sign "Developer ID Installer: Carl Hetherington (R82DXSR997)" "$pkg" "signed_temp.pkg"
280 if [ "$?" != "0" ]; then
281 echo "Failed to sign .pkg"
284 mv signed_temp.pkg "$pkg"
288 cp -a "$appdir" $vol_name
289 if [ "$pkg" != "" ]; then
290 cp -a "$pkg" $vol_name
292 ln -s /Applications "$vol_name/Applications"
293 cat<<EOF > "$vol_name/READ ME.txt"
294 Welcome to DCP-o-matic! The first time you run the program there may be
295 a long (several-minute) delay while OS X checks the code for viruses and
296 other malware. Please be patient!
298 cat<<EOF > "$vol_name/READ ME.de_DE.txt"
299 Beim erstmaligen Start der DCP-o-matic Anwendungen kann ein längerer
300 Verifikationsvorgang auftreten. Dies ist von der OS X Sicherheitsumgebung
301 'Gatekeeper' verursacht. Dieser je nach Rechner teils minutenlange
302 Verifikationsvorgang ist gegenwärtig normal und nicht zu umgehen,
303 es ist kein Programmfehler. Warten sie die Verifikation für jede der
304 DCP-o-matic Anwendungen ab, bei weiteren Programmstarts wird sie nicht
308 if [ "$pkg" != "" ]; then
309 cat<<EOF > "$vol_name/READ ME.txt"
311 To run this software successfully you must install $pkg before running
316 if [ "$pkg" != "" ]; then
317 cat<<EOF > "$vol_name/READ ME.de_DE.txt"
319 To run this software successfully you must install $pkg before running
324 rm -f $tmp_dmg "$dmg"
325 hdiutil create -srcfolder $vol_name -volname $vol_name -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -size $DMG_SIZE $tmp_dmg
326 attach=$(hdiutil attach -readwrite -noverify -noautoopen $tmp_dmg)
327 device=`echo $attach | egrep '^/dev/' | sed 1q | awk '{print $5}'`
331 tell application "Finder"
332 tell disk "'$vol_name'"
334 set current view of container window to icon view
335 set toolbar visible of container window to false
336 set statusbar visible of container window to false
337 set the bounds of container window to {400, 200, 1160, 600}
338 set the bounds of container window to {400, 200, 1160, 600}
339 set the bounds of container window to {400, 200, 1160, 600}
340 set theViewOptions to the icon view options of container window
341 set arrangement of theViewOptions to not arranged
342 set icon size of theViewOptions to 64
343 set position of item "'$appdir'" of container window to {90, 80}
344 set position of item "Applications" of container window to {265, 80}
345 set position of item "READ ME.txt" of container window to {430, 80}
346 set position of item "READ ME.de_DE.txt" of container window to {595, 80}
347 set position of item "DCP-o-matic Disk Writer.pkg" of container window to {90, 255}
350 update without registering applications
356 chmod -Rf go-w /Volumes/"$vol_name"/"$appdir"
359 hdiutil eject $device
360 hdiutil convert -format UDZO $tmp_dmg -imagekey zlib-level=9 -o "$dmg"
361 sips -i "$appdir/Contents/Resources/dcpomatic2.icns"
362 DeRez -only icns "$appdir/Contents/Resources/dcpomatic2.icns" > "$appdir/Contents/Resources/DCP-o-matic.rsrc"
363 Rez -append "$appdir/Contents/Resources/DCP-o-matic.rsrc" -o "$dmg"
368 codesign --verify --verbose --options runtime --entitlements entitlements.plist --sign "Developer ID Application: Carl Hetherington (R82DXSR997)" "$dmg"
378 approot="$appdir/Contents"
380 mkdir -p "$approot/MacOS"
381 mkdir -p "$approot/Frameworks"
382 mkdir -p "$approot/Resources"
384 to_relink="dcpomatic"
385 copy_libs "$approot/Frameworks"
386 copy_resources "$approot/Resources"
392 setup "DCP-o-matic 2.app"
393 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2 "$approot/MacOS"
394 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_cli "$approot/MacOS"
395 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_create "$approot/MacOS"
396 copy $ROOT bin/ffprobe "$approot/MacOS"
397 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
398 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2.Info.plist "$approot/Info.plist"
399 rl=("$approot/MacOS/dcpomatic2" "$approot/MacOS/dcpomatic2_cli" "$approot/MacOS/dcpomatic2_create" "$approot/MacOS/ffprobe" "$approot/Frameworks/"*.dylib)
400 relink_relative "${rl[@]}"
401 make_dmg "$appdir" "" "DCP-o-matic"
403 # DCP-o-matic KDM Creator
404 setup "DCP-o-matic 2 KDM Creator.app"
405 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_kdm "$approot/MacOS"
406 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_kdm_cli "$approot/MacOS"
407 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
408 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_kdm.Info.plist "$approot/Info.plist"
409 rl=("$approot/MacOS/dcpomatic2_kdm" "$approot/MacOS/dcpomatic2_kdm_cli" "$approot/Frameworks/"*.dylib)
410 relink_relative "${rl[@]}"
411 make_dmg "$appdir" "" "DCP-o-matic KDM Creator"
413 # DCP-o-matic Encode Server
414 setup "DCP-o-matic 2 Encode Server.app"
415 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_server "$approot/MacOS"
416 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_server_cli "$approot/MacOS"
417 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
418 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_server.Info.plist "$approot/Info.plist"
419 rl=("$approot/MacOS/dcpomatic2_server" "$approot/MacOS/dcpomatic2_server_cli" "$approot/Frameworks/"*.dylib)
420 relink_relative "${rl[@]}"
421 make_dmg "$appdir" "" "DCP-o-matic Encode Server"
423 # DCP-o-matic Batch Converter
424 setup "DCP-o-matic 2 Batch converter.app"
425 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_batch "$approot/MacOS"
426 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
427 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_batch.Info.plist "$approot/Info.plist"
428 rl=("$approot/MacOS/dcpomatic2_batch" "$approot/Frameworks/"*.dylib)
429 relink_relative "${rl[@]}"
430 make_dmg "$appdir" "" "DCP-o-matic Batch Converter"
433 setup "DCP-o-matic 2 Player.app"
434 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_player "$approot/MacOS"
435 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
436 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_player.Info.plist "$approot/Info.plist"
437 rl=("$approot/MacOS/dcpomatic2_player" "$approot/Frameworks/"*.dylib)
438 relink_relative "${rl[@]}"
439 make_dmg "$appdir" "" "DCP-o-matic Player"
441 # DCP-o-matic Playlist Editor
442 setup "DCP-o-matic 2 Playlist Editor.app"
443 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_playlist "$approot/MacOS"
444 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
445 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_playlist.Info.plist "$approot/Info.plist"
446 rl=("$approot/MacOS/dcpomatic2_playlist" "$approot/Frameworks/"*.dylib)
447 relink_relative "${rl[@]}"
448 make_dmg "$appdir" "" "DCP-o-matic Playlist Editor"
450 # DCP-o-matic Combiner
451 setup "DCP-o-matic 2 Combiner.app"
452 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_combiner "$approot/MacOS"
453 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
454 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_combiner.Info.plist "$approot/Info.plist"
455 rl=("$approot/MacOS/dcpomatic2_combiner" "$approot/Frameworks/"*.dylib)
456 relink_relative "${rl[@]}"
457 make_dmg "$appdir" "" "DCP-o-matic Combiner"
459 # DCP-o-matic Disk Writer .app
460 setup "DCP-o-matic 2 Disk Writer.app"
461 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_disk "$approot/MacOS"
462 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
463 cp $prefix/src/dcpomatic/platform/osx/uninstall_disk.applescript "$approot/Resources"
464 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_disk.Info.plist "$approot/Info.plist"
465 rl=("$approot/MacOS/dcpomatic2_disk" "$approot/Frameworks/"*.dylib)
466 relink_relative "${rl[@]}"
468 # DCP-o-matic Disk Writer daemon .pkg
470 pkgbase=tmp-disk-writer
474 pkgroot=$pkgbase/root
476 mkdir -p $pkgroot/Library/LaunchDaemons
477 cat > $pkgroot/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist <<EOF
478 <?xml version="1.0" encoding="UTF-8"?>
479 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
480 <plist version="1.0">
483 <string>com.dcpomatic.disk.writer</string>
484 <key>ProgramArguments</key>
486 <string>/Library/Application Support/com.dcpomatic/dcpomatic2_disk_writer</string>
488 <key>EnvironmentVariables</key>
490 <key>DYLD_LIBRARY_PATH</key>
491 <string><![CDATA[/Library/Application Support/com.dcpomatic]]></string>
493 <key>StandardOutPath</key>
494 <string>/var/log/dcpomatic_disk_writer_out.log</string>
495 <key>StandardErrorPath</key>
496 <string>/var/log/dcpomatic_disk_writer_err.log</string>
497 <key>LaunchEvents</key>
499 <key>com.apple.notifyd.matching</key>
501 <key>com.dcpomatic.disk.writer.start</key>
503 <key>Notification</key>
504 <string>com.dcpomatic.disk.writer.start</string>
512 # Get the binaries together in $pkgbin then move them to the
513 # place with spaces in the filename to avoid some of the pain of escaping
516 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_disk_writer "$pkgbin"
519 rl=("$pkgbin/dcpomatic2_disk_writer" "$pkgbin/"*.dylib)
520 relink_absolute "/Library/Application Support/com.dcpomatic" "${rl[@]}"
522 mkdir $pkgbase/scripts
523 cat > $pkgbase/scripts/postinstall <<EOF
525 /bin/launchctl unload "/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist"
526 /bin/launchctl load "/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist"
529 chmod gou+x $pkgbase/scripts/postinstall
531 find "$pkgbin" -iname "*.dylib" -print0 | while IFS= read -r -d '' f; do
534 sign "$pkgbin/dcpomatic2_disk_writer"
536 mkdir -p "$pkgroot/Library/Application Support/com.dcpomatic"
537 mv $pkgbin/* "$pkgroot/Library/Application Support/com.dcpomatic/"
538 pkgbuild --root $pkgroot --identifier com.dcpomatic.disk.writer --scripts $pkgbase/scripts "DCP-o-matic Disk Writer.pkg"
540 make_dmg "$appdir" "DCP-o-matic Disk Writer.pkg" "DCP-o-matic Disk Writer"