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
36 ln -s $(readlink $f) "$3/`basename $f`"
38 g=`echo $f | sed -e "s/\/32\//\/64\//g"`
40 lipo -create $f $g -output "$3/`basename $f`"
46 ln -s $(readlink $1/$2) "$3/`basename $f`"
54 function copy_lib_root {
57 for f in $ROOT/32/lib/$1*.dylib; do
59 ln -s $(readlink $f) "$2/`basename $f`"
61 g=`echo $f | sed -e "s/\/32\//\/64\//g"`
63 lipo -create $f $g -output "$2/`basename $f`"
68 for f in $ROOT/lib/$1*.dylib; do
70 ln -s $(readlink $f) "$2/`basename $f`"
78 to_relink="$to_relink|$1"
81 function copy_lib_env {
84 for f in $ENV/32/lib/$1*.dylib; do
86 ln -s $(readlink $f) "$2/`basename $f`"
88 g=`echo $f | sed -e "s/\/32\//\/64\//g"`
90 lipo -create $f $g -output "$2/`basename $f`"
95 for f in $ENV/64/lib/$1*.dylib; do
97 ln -s $(readlink $f) "$2/`basename $f`"
105 to_relink="$to_relink|$1"
108 # @param #1 directory to copy to
111 copy_lib_root libcxml "$dest"
112 copy_lib_root libdcp-1.0 "$dest"
113 copy_lib_root libasdcp-carl "$dest"
114 copy_lib_root libkumu-carl "$dest"
115 copy_lib_root libsub "$dest"
116 copy_lib_root libopenjp2 "$dest"
117 copy_lib_root libavdevice "$dest"
118 copy_lib_root libavformat "$dest"
119 copy_lib_root libavfilter "$dest"
120 copy_lib_root libavutil "$dest"
121 copy_lib_root libavcodec "$dest"
122 copy_lib_root libswscale "$dest"
123 copy_lib_root libpostproc "$dest"
124 copy_lib_root libswresample "$dest"
125 copy_lib_root liblwext4 "$dest"
126 copy_lib_root libblockdev "$dest"
127 copy_lib_root libleqm_nrt "$dest"
128 copy $ROOT src/dcpomatic/build/src/lib/libdcpomatic2.dylib "$dest"
129 copy $ROOT src/dcpomatic/build/src/wx/libdcpomatic2-wx.dylib "$dest"
130 copy_lib_env libboost_system "$dest"
131 copy_lib_env libboost_filesystem "$dest"
132 copy_lib_env libboost_thread "$dest"
133 copy_lib_env libboost_date_time "$dest"
134 copy_lib_env libboost_locale "$dest"
135 copy_lib_env libboost_regex "$dest"
136 copy_lib_env libxml++ "$dest"
137 copy_lib_env libxslt "$dest"
138 copy_lib_env libxml2 "$dest"
139 copy_lib_env libglibmm-2.4 "$dest"
140 copy_lib_env libgobject "$dest"
141 copy_lib_env libgthread "$dest"
142 copy_lib_env libgmodule "$dest"
143 copy_lib_env libsigc "$dest"
144 copy_lib_env libglib-2 "$dest"
145 copy_lib_env libintl "$dest"
146 copy_lib_env libsndfile "$dest"
147 copy_lib_env libssh "$dest"
148 copy_lib_env libwx "$dest"
149 copy_lib_env libfontconfig "$dest"
150 copy_lib_env libfreetype "$dest"
151 copy_lib_env libexpat "$dest"
152 copy_lib_env libltdl "$dest"
153 copy_lib_env libxmlsec1 "$dest"
154 copy_lib_env libcurl "$dest"
155 copy_lib_env libffi "$dest"
156 copy_lib_env libpango "$dest"
157 copy_lib_env libcairo "$dest"
158 copy_lib_env libpixman "$dest"
159 copy_lib_env libharfbuzz "$dest"
160 copy_lib_env libsamplerate "$dest"
161 copy_lib_env libicui18n "$dest"
162 copy_lib_env libicudata "$dest"
163 copy_lib_env libicuio "$dest"
164 copy_lib_env libicule "$dest"
165 copy_lib_env libiculx "$dest"
166 copy_lib_env libicutest "$dest"
167 copy_lib_env libicutu "$dest"
168 copy_lib_env libicuuc "$dest"
169 copy_lib_env libFLAC "$dest"
170 copy_lib_env libvorbis "$dest"
171 copy_lib_env libogg "$dest"
172 copy_lib_env libxerces-c "$dest"
175 # @param #1 directory to copy to
176 function copy_resources {
180 local prefix=$ROOT/32
186 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic_small.png "$dest"
187 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2.icns "$dest"
188 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_kdm.icns "$dest"
189 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_server.icns "$dest"
190 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_player.icns "$dest"
191 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_batch.icns "$dest"
192 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_playlist.icns "$dest"
193 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_disk.icns "$dest"
194 cp $prefix/src/dcpomatic/graphics/osx/preferences/defaults.png "$dest"
195 cp $prefix/src/dcpomatic/graphics/osx/preferences/defaults@2x.png "$dest"
196 cp $prefix/src/dcpomatic/graphics/osx/preferences/kdm_email.png "$dest"
197 cp $prefix/src/dcpomatic/graphics/osx/preferences/kdm_email@2x.png "$dest"
198 cp $prefix/src/dcpomatic/graphics/osx/preferences/email.png "$dest"
199 cp $prefix/src/dcpomatic/graphics/osx/preferences/email@2x.png "$dest"
200 cp $prefix/src/dcpomatic/graphics/osx/preferences/servers.png "$dest"
201 cp $prefix/src/dcpomatic/graphics/osx/preferences/servers@2x.png "$dest"
202 cp $prefix/src/dcpomatic/graphics/osx/preferences/tms.png "$dest"
203 cp $prefix/src/dcpomatic/graphics/osx/preferences/tms@2x.png "$dest"
204 cp $prefix/src/dcpomatic/graphics/osx/preferences/keys.png "$dest"
205 cp $prefix/src/dcpomatic/graphics/osx/preferences/keys@2x.png "$dest"
206 cp $prefix/src/dcpomatic/graphics/osx/preferences/cover_sheet.png "$dest"
207 cp $prefix/src/dcpomatic/graphics/osx/preferences/cover_sheet@2x.png "$dest"
208 cp $prefix/src/dcpomatic/graphics/osx/preferences/notifications.png "$dest"
209 cp $prefix/src/dcpomatic/graphics/osx/preferences/notifications@2x.png "$dest"
210 cp $prefix/src/dcpomatic/graphics/osx/preferences/sound.png "$dest"
211 cp $prefix/src/dcpomatic/graphics/osx/preferences/sound@2x.png "$dest"
212 cp $prefix/src/dcpomatic/graphics/osx/preferences/identifiers.png "$dest"
213 cp $prefix/src/dcpomatic/graphics/osx/preferences/identifiers@2x.png "$dest"
214 cp $prefix/src/dcpomatic/graphics/osx/preferences/general.png "$dest"
215 cp $prefix/src/dcpomatic/graphics/osx/preferences/general@2x.png "$dest"
216 cp $prefix/src/dcpomatic/graphics/osx/preferences/advanced.png "$dest"
217 cp $prefix/src/dcpomatic/graphics/osx/preferences/advanced@2x.png "$dest"
218 cp $prefix/src/dcpomatic/fonts/LiberationSans-Regular.ttf "$dest"
219 cp $prefix/src/dcpomatic/fonts/LiberationSans-Italic.ttf "$dest"
220 cp $prefix/src/dcpomatic/fonts/LiberationSans-Bold.ttf "$dest"
221 cp $prefix/src/dcpomatic/fonts/fonts.conf.osx "$dest"/fonts.conf
222 cp $prefix/src/dcpomatic/graphics/splash.png "$dest"
223 cp $prefix/src/dcpomatic/graphics/zoom.png "$dest"
224 cp $prefix/src/dcpomatic/graphics/zoom_all.png "$dest"
225 cp $prefix/src/dcpomatic/graphics/select.png "$dest"
226 cp $prefix/src/dcpomatic/graphics/snap.png "$dest"
227 cp $prefix/src/dcpomatic/graphics/sequence.png "$dest"
228 cp $prefix/src/dcpomatic/graphics/me.jpg "$dest"
229 cp $prefix/src/dcpomatic/graphics/link.png "$dest"
230 cp -r $prefix/share/libdcp/xsd "$dest"
232 # i18n: DCP-o-matic .mo files
233 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
234 mkdir -p "$dest/$lang/LC_MESSAGES"
235 cp $prefix/src/dcpomatic/build/src/lib/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
236 cp $prefix/src/dcpomatic/build/src/wx/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
237 cp $prefix/src/dcpomatic/build/src/tools/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
240 # i18n: wxWidgets .mo files
241 for lang in de es fr it sv nl ru pl da cs; do
243 cp $ENV/64/share/locale/$lang/LC_MESSAGES/wxstd.mo "$dest/$lang"
247 # param $1 list of things that link to other things
248 function relink_relative {
249 to_relink=`echo $to_relink | sed -e "s/\+//g"`
252 for obj in "${linkers[@]}"; do
253 deps=`otool -L "$obj" | awk '{print $1}' | egrep "($to_relink)" | egrep "($ENV|$ROOT|boost|libicu)"`
257 if [ "$TYPE" == "universal" ]; then
258 # $dep will be a path within 64/; make a 32/ path too
259 dep32=`echo $dep | sed -e "s/\/64\//\/32\//g"`
260 changes="$changes -change $dep @executable_path/../Frameworks/$base -change $dep32 @executable_path/../Frameworks/$base"
262 changes="$changes -change $dep @executable_path/../Frameworks/$base"
265 if test "x$changes" != "x"; then
266 install_name_tool $changes -id `basename "$obj"` "$obj"
271 # param $1 directory things should be relinked into
272 # $2 list of things that link to other things
273 function relink_absolute {
274 to_relink=`echo $to_relink | sed -e "s/\+//g"`
279 for obj in "${linkers[@]}"; do
280 deps=`otool -L "$obj" | awk '{print $1}' | egrep "($to_relink)" | egrep "($ENV|$ROOT|boost|libicu)"`
283 install_name_tool -change "$dep" "$target"/$base -id `basename "$obj"` "$obj"
289 codesign --deep --force --verify --verbose --options runtime --sign "Developer ID Application: Carl Hetherington (R82DXSR997)" "$1"
290 if [ "$?" != "0" ]; then
291 echo "Failed to sign $1"
297 # @param #1 .app directory
298 # @param #2 .pkg or ""
299 # @param #3 full name e.g. DCP-o-matic Batch Converter
300 # @param #4 bundle id e.g. com.dcpomatic.batch
306 tmp_dmg=dcpomatic_tmp.dmg
307 dmg="$full_name $version.dmg"
308 vol_name=DCP-o-matic-$version
312 if [ "$pkg" != "" ]; then
313 productsign --sign "Developer ID Installer: Carl Hetherington (R82DXSR997)" "$pkg" "signed_temp.pkg"
314 if [ "$?" != "0" ]; then
315 echo "Failed to sign .pkg"
318 mv signed_temp.pkg "$pkg"
322 cp -a "$appdir" $vol_name
323 if [ "$pkg" != "" ]; then
324 cp -a "$pkg" $vol_name
326 ln -s /Applications "$vol_name/Applications"
327 cat<<EOF > "$vol_name/READ ME.txt"
328 Welcome to DCP-o-matic! The first time you run the program there may be
329 a long (several-minute) delay while OS X checks the code for viruses and
330 other malware. Please be patient!
332 cat<<EOF > "$vol_name/READ ME.de_DE.txt"
333 Beim erstmaligen Start der DCP-o-matic Anwendungen kann ein längerer
334 Verifikationsvorgang auftreten. Dies ist von der OS X Sicherheitsumgebung
335 'Gatekeeper' verursacht. Dieser je nach Rechner teils minutenlange
336 Verifikationsvorgang ist gegenwärtig normal und nicht zu umgehen,
337 es ist kein Programmfehler. Warten sie die Verifikation für jede der
338 DCP-o-matic Anwendungen ab, bei weiteren Programmstarts wird sie nicht
342 if [ "$pkg" != "" ]; then
343 cat<<EOF > "$vol_name/READ ME.txt"
345 To run this software successfully you must install $pkg before running
350 if [ "$pkg" != "" ]; then
351 cat<<EOF > "$vol_name/READ ME.de_DE.txt"
353 To run this software successfully you must install $pkg before running
358 rm -f $tmp_dmg "$dmg"
359 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
360 attach=$(hdiutil attach -readwrite -noverify -noautoopen $tmp_dmg)
361 device=`echo $attach | egrep '^/dev/' | sed 1q | awk '{print $5}'`
365 tell application "Finder"
366 tell disk "'$vol_name'"
368 set current view of container window to icon view
369 set toolbar visible of container window to false
370 set statusbar visible of container window to false
371 set the bounds of container window to {400, 200, 1160, 600}
372 set the bounds of container window to {400, 200, 1160, 600}
373 set the bounds of container window to {400, 200, 1160, 600}
374 set theViewOptions to the icon view options of container window
375 set arrangement of theViewOptions to not arranged
376 set icon size of theViewOptions to 64
377 set position of item "'$appdir'" of container window to {90, 80}
378 set position of item "Applications" of container window to {265, 80}
379 set position of item "READ ME.txt" of container window to {430, 80}
380 set position of item "READ ME.de_DE.txt" of container window to {595, 80}
381 set position of item "DCP-o-matic Disk Writer.pkg" of container window to {90, 255}
384 update without registering applications
390 chmod -Rf go-w /Volumes/"$vol_name"/"$appdir"
393 hdiutil eject $device
394 hdiutil convert -format UDZO $tmp_dmg -imagekey zlib-level=9 -o "$dmg"
395 sips -i "$appdir/Contents/Resources/dcpomatic2.icns"
396 DeRez -only icns "$appdir/Contents/Resources/dcpomatic2.icns" > "$appdir/Contents/Resources/DCP-o-matic.rsrc"
397 Rez -append "$appdir/Contents/Resources/DCP-o-matic.rsrc" -o "$dmg"
402 codesign --verify --verbose --options runtime --sign "Developer ID Application: Carl Hetherington (R82DXSR997)" "$dmg"
404 # We only notarize thin builds, as if we're building universal binaries we must be on an OS
405 # sufficiently old that it can't notarize anyway
406 if [ "$TYPE" == "thin" ]; then
408 id=$(xcrun altool --notarize-app -t osx -f "$dmg" --primary-bundle-id $bundle_id -u $APPLE_ID -p $APPLE_PASSWORD --output-format xml | grep -C1 RequestUUID | tail -n 1 | sed -e "s/<string>//g" | sed -e "s/<\/string>//g")
411 echo "Checking up on $id"
413 status=$(xcrun altool --notarization-info $id -u $APPLE_ID -p $APPLE_PASSWORD --output-format xml)
415 summary=$(echo "$status" | grep -C1 "<key>Status</key>" | tail -n 1 | sed -e "s/ .//g")
417 if [ "$summary" == "<string>invalid</string>" ]; then
418 echo "Notarization failed."
422 if [ "$summary" == "<string>success</string>" ]; then
427 if [ "$N" == "30" ]; then
428 echo "Timed out waiting for notarization"
433 xcrun stapler staple "$dmg"
444 approot="$appdir/Contents"
446 mkdir -p "$approot/MacOS"
447 mkdir -p "$approot/Frameworks"
448 mkdir -p "$approot/Resources"
450 to_relink="dcpomatic"
451 copy_libs "$approot/Frameworks"
452 copy_resources "$approot/Resources"
465 setup "DCP-o-matic 2.app"
466 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2 "$approot/MacOS"
467 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_cli "$approot/MacOS"
468 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_create "$approot/MacOS"
469 copy $ROOT bin/ffprobe "$approot/MacOS"
470 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
471 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2.Info.plist "$approot/Info.plist"
472 rl=("$approot/MacOS/dcpomatic2" "$approot/MacOS/dcpomatic2_cli" "$approot/MacOS/dcpomatic2_create" "$approot/MacOS/ffprobe" "$approot/Frameworks/"*.dylib)
473 relink_relative "${rl[@]}"
474 make_dmg "$appdir" "" "DCP-o-matic" com.dcpomatic
476 # DCP-o-matic KDM Creator
477 setup "DCP-o-matic 2 KDM Creator.app"
478 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_kdm "$approot/MacOS"
479 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_kdm_cli "$approot/MacOS"
480 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
481 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_kdm.Info.plist "$approot/Info.plist"
482 rl=("$approot/MacOS/dcpomatic2_kdm" "$approot/MacOS/dcpomatic2_kdm_cli" "$approot/Frameworks/"*.dylib)
483 relink_relative "${rl[@]}"
484 make_dmg "$appdir" "" "DCP-o-matic KDM Creator" com.dcpomatic.kdm
486 # DCP-o-matic Encode Server
487 setup "DCP-o-matic 2 Encode Server.app"
488 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_server "$approot/MacOS"
489 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_server_cli "$approot/MacOS"
490 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
491 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_server.Info.plist "$approot/Info.plist"
492 rl=("$approot/MacOS/dcpomatic2_server" "$approot/MacOS/dcpomatic2_server_cli" "$approot/Frameworks/"*.dylib)
493 relink_relative "${rl[@]}"
494 make_dmg "$appdir" "" "DCP-o-matic Encode Server" com.dcpomatic.server
496 # DCP-o-matic Batch Converter
497 setup "DCP-o-matic 2 Batch converter.app"
498 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_batch "$approot/MacOS"
499 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
500 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_batch.Info.plist "$approot/Info.plist"
501 rl=("$approot/MacOS/dcpomatic2_batch" "$approot/Frameworks/"*.dylib)
502 relink_relative "${rl[@]}"
503 make_dmg "$appdir" "" "DCP-o-matic Batch Converter" com.dcpomatic.batch
506 setup "DCP-o-matic 2 Player.app"
507 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_player "$approot/MacOS"
508 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
509 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_player.Info.plist "$approot/Info.plist"
510 rl=("$approot/MacOS/dcpomatic2_player" "$approot/Frameworks/"*.dylib)
511 relink_relative "${rl[@]}"
512 make_dmg "$appdir" "" "DCP-o-matic Player" com.dcpomatic.player
514 # DCP-o-matic Playlist Editor
515 setup "DCP-o-matic 2 Playlist Editor.app"
516 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_playlist "$approot/MacOS"
517 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
518 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_playlist.Info.plist "$approot/Info.plist"
519 rl=("$approot/MacOS/dcpomatic2_playlist" "$approot/Frameworks/"*.dylib)
520 relink_relative "${rl[@]}"
521 make_dmg "$appdir" "" "DCP-o-matic Playlist Editor" com.dcpomatic.playlist
523 # DCP-o-matic Disk Writer .app
524 setup "DCP-o-matic 2 Disk Writer.app"
525 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_disk "$approot/MacOS"
526 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
527 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_disk.Info.plist "$approot/Info.plist"
528 rl=("$approot/MacOS/dcpomatic2_disk" "$approot/Frameworks/"*.dylib)
529 relink_relative "${rl[@]}"
531 # DCP-o-matic Disk Writer daemon .pkg
533 pkgbase=tmp-disk-writer
537 pkgroot=$pkgbase/root
539 mkdir -p $pkgroot/Library/LaunchDaemons
540 cat > $pkgroot/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist <<EOF
541 <?xml version="1.0" encoding="UTF-8"?>
542 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
543 <plist version="1.0">
546 <string>com.dcpomatic.disk.writer</string>
547 <key>ProgramArguments</key>
549 <string>/Library/Application Support/com.dcpomatic/dcpomatic2_disk_writer</string>
551 <key>EnvironmentVariables</key>
553 <key>DYLD_LIBRARY_PATH</key>
554 <string><![CDATA[/Library/Application Support/com.dcpomatic]]></string>
556 <key>StandardOutPath</key>
557 <string>/var/log/dcpomatic_disk_writer_out.log</string>
558 <key>StandardErrorPath</key>
559 <string>/var/log/dcpomatic_disk_writer_err.log</string>
560 <key>LaunchEvents</key>
562 <key>com.apple.notifyd.matching</key>
564 <key>com.dcpomatic.disk.writer.start</key>
566 <key>Notification</key>
567 <string>com.dcpomatic.disk.writer.start</string>
575 # Get the binaries together in $pkgbin then move them to the
576 # place with spaces in the filename to avoid some of the pain of escaping
579 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_disk_writer "$pkgbin"
582 rl=("$pkgbin/dcpomatic2_disk_writer" "$pkgbin/"*.dylib)
583 relink_absolute "/Library/Application Support/com.dcpomatic" "${rl[@]}"
585 mkdir $pkgbase/scripts
586 cat > $pkgbase/scripts/postinstall <<EOF
588 /bin/launchctl unload "/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist"
589 /bin/launchctl load "/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist"
592 chmod gou+x $pkgbase/scripts/postinstall
594 find "$pkgbin" -iname "*.dylib" -print0 | while IFS= read -r -d '' f; do
597 sign "$pkgbin/dcpomatic2_disk_writer"
599 mkdir -p "$pkgroot/Library/Application Support/com.dcpomatic"
600 mv $pkgbin/* "$pkgroot/Library/Application Support/com.dcpomatic/"
601 pkgbuild --root $pkgroot --identifier com.dcpomatic.disk.writer --scripts $pkgbase/scripts "DCP-o-matic Disk Writer.pkg"
603 make_dmg "$appdir" "DCP-o-matic Disk Writer.pkg" "DCP-o-matic Disk Writer" com.dcpomatic.disk