3 SYNTAX="make_dmg.sh <environment> <builddir> <type> <apple-id> <apple-password>"
4 # where <type> is universal or thin
6 # e.g. make_dmg.sh /Users/carl/osx-environment /Users/carl/cdist universal foo@bar.net opensesame
8 # Don't set -e here as egrep (used a few times) returns 1 if no matches
11 version=`git describe --tags --abbrev=0 | sed -e "s/v//"`
13 # DMG size in megabytes
21 if [ "$TYPE" != "universal" -a "$TYPE" != "thin" ]; then
23 echo "where <type> is universal or thin"
27 # This is our work area for making up the .dmgs
28 mkdir -p build/platform/osx
31 cat <<EOF > entitlements.plist
32 <?xml version="1.0" encoding="UTF-8"?>
33 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
36 <key>com.apple.security.cs.disable-library-validation</key>
47 ln -s $(readlink $f) "$3/`basename $f`"
49 g=`echo $f | sed -e "s/\/32\//\/64\//g"`
51 lipo -create $f $g -output "$3/`basename $f`"
57 ln -s $(readlink $1/$2) "$3/`basename $f`"
65 function copy_lib_root {
68 for f in $ROOT/32/lib/$1*.dylib; do
70 ln -s $(readlink $f) "$2/`basename $f`"
72 g=`echo $f | sed -e "s/\/32\//\/64\//g"`
74 lipo -create $f $g -output "$2/`basename $f`"
79 for f in $ROOT/lib/$1*.dylib; do
81 ln -s $(readlink $f) "$2/`basename $f`"
89 to_relink="$to_relink|$1"
92 function copy_lib_env {
95 for f in $ENV/32/lib/$1*.dylib; do
97 ln -s $(readlink $f) "$2/`basename $f`"
99 g=`echo $f | sed -e "s/\/32\//\/64\//g"`
101 lipo -create $f $g -output "$2/`basename $f`"
106 for f in $ENV/64/lib/$1*.dylib; do
108 ln -s $(readlink $f) "$2/`basename $f`"
116 to_relink="$to_relink|$1"
119 # @param #1 directory to copy to
122 copy_lib_root libcxml "$dest"
123 copy_lib_root libdcp-1.0 "$dest"
124 copy_lib_root libasdcp-carl "$dest"
125 copy_lib_root libkumu-carl "$dest"
126 copy_lib_root libsub "$dest"
127 copy_lib_root libopenjp2 "$dest"
128 copy_lib_root libavdevice "$dest"
129 copy_lib_root libavformat "$dest"
130 copy_lib_root libavfilter "$dest"
131 copy_lib_root libavutil "$dest"
132 copy_lib_root libavcodec "$dest"
133 copy_lib_root libswscale "$dest"
134 copy_lib_root libpostproc "$dest"
135 copy_lib_root libswresample "$dest"
136 copy_lib_root liblwext4 "$dest"
137 copy_lib_root libblockdev "$dest"
138 copy_lib_root libleqm_nrt "$dest"
139 copy $ROOT src/dcpomatic/build/src/lib/libdcpomatic2.dylib "$dest"
140 copy $ROOT src/dcpomatic/build/src/wx/libdcpomatic2-wx.dylib "$dest"
141 copy_lib_env libboost_system "$dest"
142 copy_lib_env libboost_filesystem "$dest"
143 copy_lib_env libboost_thread "$dest"
144 copy_lib_env libboost_date_time "$dest"
145 copy_lib_env libboost_locale "$dest"
146 copy_lib_env libboost_regex "$dest"
147 copy_lib_env libxml++ "$dest"
148 copy_lib_env libxslt "$dest"
149 copy_lib_env libxml2 "$dest"
150 copy_lib_env libglibmm-2.4 "$dest"
151 copy_lib_env libgobject "$dest"
152 copy_lib_env libgthread "$dest"
153 copy_lib_env libgmodule "$dest"
154 copy_lib_env libsigc "$dest"
155 copy_lib_env libglib-2 "$dest"
156 copy_lib_env libintl "$dest"
157 copy_lib_env libsndfile "$dest"
158 copy_lib_env libssh "$dest"
159 copy_lib_env libwx "$dest"
160 copy_lib_env libfontconfig "$dest"
161 copy_lib_env libfreetype "$dest"
162 copy_lib_env libexpat "$dest"
163 copy_lib_env libltdl "$dest"
164 copy_lib_env libxmlsec1 "$dest"
165 copy_lib_env libcurl "$dest"
166 copy_lib_env libffi "$dest"
167 copy_lib_env libpango "$dest"
168 copy_lib_env libcairo "$dest"
169 copy_lib_env libpixman "$dest"
170 copy_lib_env libharfbuzz "$dest"
171 copy_lib_env libsamplerate "$dest"
172 copy_lib_env libicui18n "$dest"
173 copy_lib_env libicudata "$dest"
174 copy_lib_env libicuio "$dest"
175 copy_lib_env libicule "$dest"
176 copy_lib_env libiculx "$dest"
177 copy_lib_env libicutest "$dest"
178 copy_lib_env libicutu "$dest"
179 copy_lib_env libicuuc "$dest"
180 copy_lib_env libFLAC "$dest"
181 copy_lib_env libvorbis "$dest"
182 copy_lib_env libogg "$dest"
183 copy_lib_env libxerces-c "$dest"
186 # @param #1 directory to copy to
187 function copy_resources {
191 local prefix=$ROOT/32
197 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic_small.png "$dest"
198 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2.icns "$dest"
199 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_kdm.icns "$dest"
200 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_server.icns "$dest"
201 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_player.icns "$dest"
202 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_batch.icns "$dest"
203 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_playlist.icns "$dest"
204 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_disk.icns "$dest"
205 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_combiner.icns "$dest"
206 cp $prefix/src/dcpomatic/graphics/osx/preferences/defaults.png "$dest"
207 cp $prefix/src/dcpomatic/graphics/osx/preferences/defaults@2x.png "$dest"
208 cp $prefix/src/dcpomatic/graphics/osx/preferences/kdm_email.png "$dest"
209 cp $prefix/src/dcpomatic/graphics/osx/preferences/kdm_email@2x.png "$dest"
210 cp $prefix/src/dcpomatic/graphics/osx/preferences/email.png "$dest"
211 cp $prefix/src/dcpomatic/graphics/osx/preferences/email@2x.png "$dest"
212 cp $prefix/src/dcpomatic/graphics/osx/preferences/servers.png "$dest"
213 cp $prefix/src/dcpomatic/graphics/osx/preferences/servers@2x.png "$dest"
214 cp $prefix/src/dcpomatic/graphics/osx/preferences/tms.png "$dest"
215 cp $prefix/src/dcpomatic/graphics/osx/preferences/tms@2x.png "$dest"
216 cp $prefix/src/dcpomatic/graphics/osx/preferences/keys.png "$dest"
217 cp $prefix/src/dcpomatic/graphics/osx/preferences/keys@2x.png "$dest"
218 cp $prefix/src/dcpomatic/graphics/osx/preferences/cover_sheet.png "$dest"
219 cp $prefix/src/dcpomatic/graphics/osx/preferences/cover_sheet@2x.png "$dest"
220 cp $prefix/src/dcpomatic/graphics/osx/preferences/notifications.png "$dest"
221 cp $prefix/src/dcpomatic/graphics/osx/preferences/notifications@2x.png "$dest"
222 cp $prefix/src/dcpomatic/graphics/osx/preferences/sound.png "$dest"
223 cp $prefix/src/dcpomatic/graphics/osx/preferences/sound@2x.png "$dest"
224 cp $prefix/src/dcpomatic/graphics/osx/preferences/identifiers.png "$dest"
225 cp $prefix/src/dcpomatic/graphics/osx/preferences/identifiers@2x.png "$dest"
226 cp $prefix/src/dcpomatic/graphics/osx/preferences/general.png "$dest"
227 cp $prefix/src/dcpomatic/graphics/osx/preferences/general@2x.png "$dest"
228 cp $prefix/src/dcpomatic/graphics/osx/preferences/advanced.png "$dest"
229 cp $prefix/src/dcpomatic/graphics/osx/preferences/advanced@2x.png "$dest"
230 cp $prefix/src/dcpomatic/graphics/osx/preferences/locations.png "$dest"
231 cp $prefix/src/dcpomatic/graphics/osx/preferences/locations@2x.png "$dest"
232 cp $prefix/src/dcpomatic/fonts/LiberationSans-Regular.ttf "$dest"
233 cp $prefix/src/dcpomatic/fonts/LiberationSans-Italic.ttf "$dest"
234 cp $prefix/src/dcpomatic/fonts/LiberationSans-Bold.ttf "$dest"
235 cp $prefix/src/dcpomatic/fonts/fonts.conf.osx "$dest"/fonts.conf
236 cp $prefix/src/dcpomatic/graphics/splash.png "$dest"
237 cp $prefix/src/dcpomatic/graphics/zoom.png "$dest"
238 cp $prefix/src/dcpomatic/graphics/zoom_all.png "$dest"
239 cp $prefix/src/dcpomatic/graphics/select.png "$dest"
240 cp $prefix/src/dcpomatic/graphics/snap.png "$dest"
241 cp $prefix/src/dcpomatic/graphics/sequence.png "$dest"
242 cp $prefix/src/dcpomatic/graphics/me.jpg "$dest"
243 cp $prefix/src/dcpomatic/graphics/link.png "$dest"
244 cp $prefix/src/dcpomatic/graphics/tick.png "$dest"
245 cp $prefix/src/dcpomatic/graphics/no_tick.png "$dest"
246 cp -r $prefix/share/libdcp/xsd "$dest"
247 cp -r $prefix/share/libdcp/tags "$dest"
249 # i18n: DCP-o-matic .mo files
250 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
251 mkdir -p "$dest/$lang/LC_MESSAGES"
252 cp $prefix/src/dcpomatic/build/src/lib/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
253 cp $prefix/src/dcpomatic/build/src/wx/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
254 cp $prefix/src/dcpomatic/build/src/tools/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
257 # i18n: wxWidgets .mo files
258 for lang in de es fr it sv nl ru pl da cs; do
260 cp $ENV/64/share/locale/$lang/LC_MESSAGES/wxstd.mo "$dest/$lang"
264 # param $1 list of things that link to other things
265 function relink_relative {
266 to_relink=`echo $to_relink | sed -e "s/\+//g"`
269 for obj in "${linkers[@]}"; do
270 deps=`otool -L "$obj" | awk '{print $1}' | egrep "($to_relink)" | egrep "($ENV|$ROOT|boost|libicu)"`
274 if [ "$TYPE" == "universal" ]; then
275 # $dep will be a path within 64/; make a 32/ path too
276 dep32=`echo $dep | sed -e "s/\/64\//\/32\//g"`
277 changes="$changes -change $dep @executable_path/../Frameworks/$base -change $dep32 @executable_path/../Frameworks/$base"
279 changes="$changes -change $dep @executable_path/../Frameworks/$base"
282 if test "x$changes" != "x"; then
283 install_name_tool $changes -id `basename "$obj"` "$obj"
288 # param $1 directory things should be relinked into
289 # $2 list of things that link to other things
290 function relink_absolute {
291 to_relink=`echo $to_relink | sed -e "s/\+//g"`
296 for obj in "${linkers[@]}"; do
297 deps=`otool -L "$obj" | awk '{print $1}' | egrep "($to_relink)" | egrep "($ENV|$ROOT|boost|libicu)"`
300 install_name_tool -change "$dep" "$target"/$base -id `basename "$obj"` "$obj"
306 codesign --deep --force --verify --verbose --options runtime --entitlements entitlements.plist --sign "Developer ID Application: Carl Hetherington (R82DXSR997)" "$1"
307 if [ "$?" != "0" ]; then
308 echo "Failed to sign $1"
314 # @param #1 .app directory
315 # @param #2 .pkg or ""
316 # @param #3 full name e.g. DCP-o-matic Batch Converter
321 tmp_dmg=dcpomatic_tmp.dmg
322 dmg="$full_name $version.dmg"
323 vol_name=DCP-o-matic-$version
327 if [ "$pkg" != "" ]; then
328 productsign --sign "Developer ID Installer: Carl Hetherington (R82DXSR997)" "$pkg" "signed_temp.pkg"
329 if [ "$?" != "0" ]; then
330 echo "Failed to sign .pkg"
333 mv signed_temp.pkg "$pkg"
337 cp -a "$appdir" $vol_name
338 if [ "$pkg" != "" ]; then
339 cp -a "$pkg" $vol_name
341 ln -s /Applications "$vol_name/Applications"
342 cat<<EOF > "$vol_name/READ ME.txt"
343 Welcome to DCP-o-matic! The first time you run the program there may be
344 a long (several-minute) delay while OS X checks the code for viruses and
345 other malware. Please be patient!
347 cat<<EOF > "$vol_name/READ ME.de_DE.txt"
348 Beim erstmaligen Start der DCP-o-matic Anwendungen kann ein längerer
349 Verifikationsvorgang auftreten. Dies ist von der OS X Sicherheitsumgebung
350 'Gatekeeper' verursacht. Dieser je nach Rechner teils minutenlange
351 Verifikationsvorgang ist gegenwärtig normal und nicht zu umgehen,
352 es ist kein Programmfehler. Warten sie die Verifikation für jede der
353 DCP-o-matic Anwendungen ab, bei weiteren Programmstarts wird sie nicht
357 if [ "$pkg" != "" ]; then
358 cat<<EOF > "$vol_name/READ ME.txt"
360 To run this software successfully you must install $pkg before running
365 if [ "$pkg" != "" ]; then
366 cat<<EOF > "$vol_name/READ ME.de_DE.txt"
368 To run this software successfully you must install $pkg before running
373 rm -f $tmp_dmg "$dmg"
374 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
375 attach=$(hdiutil attach -readwrite -noverify -noautoopen $tmp_dmg)
376 device=`echo $attach | egrep '^/dev/' | sed 1q | awk '{print $5}'`
380 tell application "Finder"
381 tell disk "'$vol_name'"
383 set current view of container window to icon view
384 set toolbar visible of container window to false
385 set statusbar visible of container window to false
386 set the bounds of container window to {400, 200, 1160, 600}
387 set the bounds of container window to {400, 200, 1160, 600}
388 set the bounds of container window to {400, 200, 1160, 600}
389 set theViewOptions to the icon view options of container window
390 set arrangement of theViewOptions to not arranged
391 set icon size of theViewOptions to 64
392 set position of item "'$appdir'" of container window to {90, 80}
393 set position of item "Applications" of container window to {265, 80}
394 set position of item "READ ME.txt" of container window to {430, 80}
395 set position of item "READ ME.de_DE.txt" of container window to {595, 80}
396 set position of item "DCP-o-matic Disk Writer.pkg" of container window to {90, 255}
399 update without registering applications
405 chmod -Rf go-w /Volumes/"$vol_name"/"$appdir"
408 hdiutil eject $device
409 hdiutil convert -format UDZO $tmp_dmg -imagekey zlib-level=9 -o "$dmg"
410 sips -i "$appdir/Contents/Resources/dcpomatic2.icns"
411 DeRez -only icns "$appdir/Contents/Resources/dcpomatic2.icns" > "$appdir/Contents/Resources/DCP-o-matic.rsrc"
412 Rez -append "$appdir/Contents/Resources/DCP-o-matic.rsrc" -o "$dmg"
417 codesign --verify --verbose --options runtime --entitlements entitlements.plist --sign "Developer ID Application: Carl Hetherington (R82DXSR997)" "$dmg"
427 approot="$appdir/Contents"
429 mkdir -p "$approot/MacOS"
430 mkdir -p "$approot/Frameworks"
431 mkdir -p "$approot/Resources"
433 to_relink="dcpomatic"
434 copy_libs "$approot/Frameworks"
435 copy_resources "$approot/Resources"
448 setup "DCP-o-matic 2.app"
449 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2 "$approot/MacOS"
450 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_cli "$approot/MacOS"
451 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_create "$approot/MacOS"
452 copy $ROOT bin/ffprobe "$approot/MacOS"
453 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
454 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2.Info.plist "$approot/Info.plist"
455 rl=("$approot/MacOS/dcpomatic2" "$approot/MacOS/dcpomatic2_cli" "$approot/MacOS/dcpomatic2_create" "$approot/MacOS/ffprobe" "$approot/Frameworks/"*.dylib)
456 relink_relative "${rl[@]}"
457 make_dmg "$appdir" "" "DCP-o-matic"
459 # DCP-o-matic KDM Creator
460 setup "DCP-o-matic 2 KDM Creator.app"
461 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_kdm "$approot/MacOS"
462 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_kdm_cli "$approot/MacOS"
463 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
464 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_kdm.Info.plist "$approot/Info.plist"
465 rl=("$approot/MacOS/dcpomatic2_kdm" "$approot/MacOS/dcpomatic2_kdm_cli" "$approot/Frameworks/"*.dylib)
466 relink_relative "${rl[@]}"
467 make_dmg "$appdir" "" "DCP-o-matic KDM Creator"
469 # DCP-o-matic Encode Server
470 setup "DCP-o-matic 2 Encode Server.app"
471 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_server "$approot/MacOS"
472 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_server_cli "$approot/MacOS"
473 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
474 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_server.Info.plist "$approot/Info.plist"
475 rl=("$approot/MacOS/dcpomatic2_server" "$approot/MacOS/dcpomatic2_server_cli" "$approot/Frameworks/"*.dylib)
476 relink_relative "${rl[@]}"
477 make_dmg "$appdir" "" "DCP-o-matic Encode Server"
479 # DCP-o-matic Batch Converter
480 setup "DCP-o-matic 2 Batch converter.app"
481 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_batch "$approot/MacOS"
482 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
483 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_batch.Info.plist "$approot/Info.plist"
484 rl=("$approot/MacOS/dcpomatic2_batch" "$approot/Frameworks/"*.dylib)
485 relink_relative "${rl[@]}"
486 make_dmg "$appdir" "" "DCP-o-matic Batch Converter"
489 setup "DCP-o-matic 2 Player.app"
490 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_player "$approot/MacOS"
491 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
492 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_player.Info.plist "$approot/Info.plist"
493 rl=("$approot/MacOS/dcpomatic2_player" "$approot/Frameworks/"*.dylib)
494 relink_relative "${rl[@]}"
495 make_dmg "$appdir" "" "DCP-o-matic Player"
497 # DCP-o-matic Playlist Editor
498 setup "DCP-o-matic 2 Playlist Editor.app"
499 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_playlist "$approot/MacOS"
500 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
501 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_playlist.Info.plist "$approot/Info.plist"
502 rl=("$approot/MacOS/dcpomatic2_playlist" "$approot/Frameworks/"*.dylib)
503 relink_relative "${rl[@]}"
504 make_dmg "$appdir" "" "DCP-o-matic Playlist Editor"
506 # DCP-o-matic Combiner
507 setup "DCP-o-matic 2 Combiner.app"
508 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_combiner "$approot/MacOS"
509 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
510 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_combiner.Info.plist "$approot/Info.plist"
511 rl=("$approot/MacOS/dcpomatic2_combiner" "$approot/Frameworks/"*.dylib)
512 relink_relative "${rl[@]}"
513 make_dmg "$appdir" "" "DCP-o-matic Combiner"
515 # DCP-o-matic Disk Writer .app
516 setup "DCP-o-matic 2 Disk Writer.app"
517 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_disk "$approot/MacOS"
518 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
519 cp $prefix/src/dcpomatic/platform/osx/uninstall_disk.applescript "$approot/Resources"
520 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_disk.Info.plist "$approot/Info.plist"
521 rl=("$approot/MacOS/dcpomatic2_disk" "$approot/Frameworks/"*.dylib)
522 relink_relative "${rl[@]}"
524 # DCP-o-matic Disk Writer daemon .pkg
526 pkgbase=tmp-disk-writer
530 pkgroot=$pkgbase/root
532 mkdir -p $pkgroot/Library/LaunchDaemons
533 cat > $pkgroot/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist <<EOF
534 <?xml version="1.0" encoding="UTF-8"?>
535 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
536 <plist version="1.0">
539 <string>com.dcpomatic.disk.writer</string>
540 <key>ProgramArguments</key>
542 <string>/Library/Application Support/com.dcpomatic/dcpomatic2_disk_writer</string>
544 <key>EnvironmentVariables</key>
546 <key>DYLD_LIBRARY_PATH</key>
547 <string><![CDATA[/Library/Application Support/com.dcpomatic]]></string>
549 <key>StandardOutPath</key>
550 <string>/var/log/dcpomatic_disk_writer_out.log</string>
551 <key>StandardErrorPath</key>
552 <string>/var/log/dcpomatic_disk_writer_err.log</string>
553 <key>LaunchEvents</key>
555 <key>com.apple.notifyd.matching</key>
557 <key>com.dcpomatic.disk.writer.start</key>
559 <key>Notification</key>
560 <string>com.dcpomatic.disk.writer.start</string>
568 # Get the binaries together in $pkgbin then move them to the
569 # place with spaces in the filename to avoid some of the pain of escaping
572 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_disk_writer "$pkgbin"
575 rl=("$pkgbin/dcpomatic2_disk_writer" "$pkgbin/"*.dylib)
576 relink_absolute "/Library/Application Support/com.dcpomatic" "${rl[@]}"
578 mkdir $pkgbase/scripts
579 cat > $pkgbase/scripts/postinstall <<EOF
581 /bin/launchctl unload "/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist"
582 /bin/launchctl load "/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist"
585 chmod gou+x $pkgbase/scripts/postinstall
587 find "$pkgbin" -iname "*.dylib" -print0 | while IFS= read -r -d '' f; do
590 sign "$pkgbin/dcpomatic2_disk_writer"
592 mkdir -p "$pkgroot/Library/Application Support/com.dcpomatic"
593 mv $pkgbin/* "$pkgroot/Library/Application Support/com.dcpomatic/"
594 pkgbuild --root $pkgroot --identifier com.dcpomatic.disk.writer --scripts $pkgbase/scripts "DCP-o-matic Disk Writer.pkg"
596 make_dmg "$appdir" "DCP-o-matic Disk Writer.pkg" "DCP-o-matic Disk Writer"