3 SYNTAX="make_dmg.sh <environment> <builddir> <apple-id> <apple-password>"
5 # e.g. make_dmg.sh /Users/carl/osx-environment /Users/carl/cdist 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
19 # This is our work area for making up the .dmgs
20 mkdir -p build/platform/osx
23 cat <<EOF > entitlements.plist
24 <?xml version="1.0" encoding="UTF-8"?>
25 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
28 <key>com.apple.security.cs.disable-library-validation</key>
30 <key>com.apple.security.cs.allow-dyld-environment-variables</key>
37 for f in $1/arm64/$2; do
39 ln -s $(readlink $f) "$3/`basename $f`"
41 g=`echo $f | sed -e "s/\/arm64\//\/x86_64\//g"`
43 lipo -create $f $g -output "$3/`basename $f`"
48 function copy_lib_root {
49 for f in $ROOT/arm64/lib/$1*.dylib; do
51 ln -s $(readlink $f) "$2/`basename $f`"
53 g=`echo $f | sed -e "s/\/arm64\//\/x86_64\//g"`
55 lipo -create $f $g -output "$2/`basename $f`"
58 to_relink="$to_relink|$1"
61 function copy_lib_env {
62 for f in $ENV/arm64/lib/$1*.dylib; do
64 ln -s $(readlink $f) "$2/`basename $f`"
66 g=`echo $f | sed -e "s/\/arm64\//\/x86_64\//g"`
68 lipo -create $f $g -output "$2/`basename $f`"
71 to_relink="$to_relink|$1"
74 # @param #1 directory to copy to
77 copy_lib_root libcxml "$dest"
78 copy_lib_root libdcp-1.0 "$dest"
79 copy_lib_root libasdcp-carl "$dest"
80 copy_lib_root libkumu-carl "$dest"
81 copy_lib_root libsub "$dest"
82 copy_lib_root libopenjp2 "$dest"
83 copy_lib_root libavdevice "$dest"
84 copy_lib_root libavformat "$dest"
85 copy_lib_root libavfilter "$dest"
86 copy_lib_root libavutil "$dest"
87 copy_lib_root libavcodec "$dest"
88 copy_lib_root libswscale "$dest"
89 copy_lib_root libpostproc "$dest"
90 copy_lib_root libswresample "$dest"
91 copy_lib_root liblwext4 "$dest"
92 copy_lib_root libblockdev "$dest"
93 copy_lib_root libleqm_nrt "$dest"
94 copy $ROOT src/dcpomatic/build/src/lib/libdcpomatic2.dylib "$dest"
95 copy $ROOT src/dcpomatic/build/src/wx/libdcpomatic2-wx.dylib "$dest"
96 copy_lib_env libboost_system "$dest"
97 copy_lib_env libboost_filesystem "$dest"
98 copy_lib_env libboost_thread "$dest"
99 copy_lib_env libboost_date_time "$dest"
100 copy_lib_env libboost_locale "$dest"
101 copy_lib_env libboost_regex "$dest"
102 copy_lib_env libxml++ "$dest"
103 copy_lib_env libxslt "$dest"
104 copy_lib_env libxml2 "$dest"
105 copy_lib_env libglibmm-2.4 "$dest"
106 copy_lib_env libgobject "$dest"
107 copy_lib_env libgthread "$dest"
108 copy_lib_env libgmodule "$dest"
109 copy_lib_env libsigc "$dest"
110 copy_lib_env libglib-2 "$dest"
111 copy_lib_env libintl "$dest"
112 copy_lib_env libsndfile "$dest"
113 copy_lib_env libssh "$dest"
114 copy_lib_env libwx "$dest"
115 copy_lib_env libfontconfig "$dest"
116 copy_lib_env libfreetype "$dest"
117 copy_lib_env libexpat "$dest"
118 copy_lib_env libltdl "$dest"
119 copy_lib_env libxmlsec1 "$dest"
120 copy_lib_env libcurl "$dest"
121 copy_lib_env libffi "$dest"
122 copy_lib_env libpango "$dest"
123 copy_lib_env libcairo "$dest"
124 copy_lib_env libpixman "$dest"
125 copy_lib_env libharfbuzz "$dest"
126 copy_lib_env libsamplerate "$dest"
127 copy_lib_env libicui18n "$dest"
128 copy_lib_env libicudata "$dest"
129 copy_lib_env libicuio "$dest"
130 copy_lib_env libicutest "$dest"
131 copy_lib_env libicutu "$dest"
132 copy_lib_env libicuuc "$dest"
133 copy_lib_env libFLAC "$dest"
134 copy_lib_env libvorbis "$dest"
135 copy_lib_env libogg "$dest"
136 copy_lib_env libxerces-c "$dest"
137 copy_lib_env libcrypto "$dest"
138 copy_lib_env libssl "$dest"
139 copy_lib_env libfribidi "$dest"
140 copy_lib_env libgio "$dest"
141 copy_lib_env libz "$dest"
144 # @param #1 directory to copy to
145 function copy_resources {
147 local prefix=$ROOT/x86_64
148 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic_small.png "$dest"
149 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2.icns "$dest"
150 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_kdm.icns "$dest"
151 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_server.icns "$dest"
152 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_player.icns "$dest"
153 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_batch.icns "$dest"
154 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_playlist.icns "$dest"
155 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_disk.icns "$dest"
156 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_combiner.icns "$dest"
157 cp $prefix/src/dcpomatic/graphics/osx/preferences/defaults.png "$dest"
158 cp $prefix/src/dcpomatic/graphics/osx/preferences/defaults@2x.png "$dest"
159 cp $prefix/src/dcpomatic/graphics/osx/preferences/kdm_email.png "$dest"
160 cp $prefix/src/dcpomatic/graphics/osx/preferences/kdm_email@2x.png "$dest"
161 cp $prefix/src/dcpomatic/graphics/osx/preferences/email.png "$dest"
162 cp $prefix/src/dcpomatic/graphics/osx/preferences/email@2x.png "$dest"
163 cp $prefix/src/dcpomatic/graphics/osx/preferences/servers.png "$dest"
164 cp $prefix/src/dcpomatic/graphics/osx/preferences/servers@2x.png "$dest"
165 cp $prefix/src/dcpomatic/graphics/osx/preferences/tms.png "$dest"
166 cp $prefix/src/dcpomatic/graphics/osx/preferences/tms@2x.png "$dest"
167 cp $prefix/src/dcpomatic/graphics/osx/preferences/keys.png "$dest"
168 cp $prefix/src/dcpomatic/graphics/osx/preferences/keys@2x.png "$dest"
169 cp $prefix/src/dcpomatic/graphics/osx/preferences/cover_sheet.png "$dest"
170 cp $prefix/src/dcpomatic/graphics/osx/preferences/cover_sheet@2x.png "$dest"
171 cp $prefix/src/dcpomatic/graphics/osx/preferences/notifications.png "$dest"
172 cp $prefix/src/dcpomatic/graphics/osx/preferences/notifications@2x.png "$dest"
173 cp $prefix/src/dcpomatic/graphics/osx/preferences/sound.png "$dest"
174 cp $prefix/src/dcpomatic/graphics/osx/preferences/sound@2x.png "$dest"
175 cp $prefix/src/dcpomatic/graphics/osx/preferences/identifiers.png "$dest"
176 cp $prefix/src/dcpomatic/graphics/osx/preferences/identifiers@2x.png "$dest"
177 cp $prefix/src/dcpomatic/graphics/osx/preferences/general.png "$dest"
178 cp $prefix/src/dcpomatic/graphics/osx/preferences/general@2x.png "$dest"
179 cp $prefix/src/dcpomatic/graphics/osx/preferences/advanced.png "$dest"
180 cp $prefix/src/dcpomatic/graphics/osx/preferences/advanced@2x.png "$dest"
181 cp $prefix/src/dcpomatic/graphics/osx/preferences/locations.png "$dest"
182 cp $prefix/src/dcpomatic/graphics/osx/preferences/locations@2x.png "$dest"
183 cp $prefix/src/dcpomatic/fonts/LiberationSans-Regular.ttf "$dest"
184 cp $prefix/src/dcpomatic/fonts/LiberationSans-Italic.ttf "$dest"
185 cp $prefix/src/dcpomatic/fonts/LiberationSans-Bold.ttf "$dest"
186 cp $prefix/src/dcpomatic/fonts/fonts.conf.osx "$dest"/fonts.conf
187 cp $prefix/src/dcpomatic/graphics/splash.png "$dest"
188 cp $prefix/src/dcpomatic/graphics/zoom.png "$dest"
189 cp $prefix/src/dcpomatic/graphics/zoom_all.png "$dest"
190 cp $prefix/src/dcpomatic/graphics/select.png "$dest"
191 cp $prefix/src/dcpomatic/graphics/snap.png "$dest"
192 cp $prefix/src/dcpomatic/graphics/sequence.png "$dest"
193 cp $prefix/src/dcpomatic/graphics/me.jpg "$dest"
194 cp $prefix/src/dcpomatic/graphics/link.png "$dest"
195 cp $prefix/src/dcpomatic/graphics/tick.png "$dest"
196 cp $prefix/src/dcpomatic/graphics/no_tick.png "$dest"
197 cp -r $prefix/share/libdcp/xsd "$dest"
198 cp -r $prefix/share/libdcp/tags "$dest"
200 # i18n: DCP-o-matic .mo files
201 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
202 mkdir -p "$dest/$lang/LC_MESSAGES"
203 cp $prefix/src/dcpomatic/build/src/lib/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
204 cp $prefix/src/dcpomatic/build/src/wx/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
205 cp $prefix/src/dcpomatic/build/src/tools/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
208 # i18n: wxWidgets .mo files
209 for lang in de es fr it sv nl ru pl da cs; do
211 cp $ENV/x86_64/share/locale/$lang/LC_MESSAGES/wxstd.mo "$dest/$lang"
215 # param $1 list of things that link to other things
216 function relink_relative {
217 to_relink=`echo $to_relink | sed -e "s/\+//g"`
220 for obj in "${linkers[@]}"; do
221 for arch in x86_64 arm64; do
222 deps=`otool -arch $arch -L "$obj" | awk '{print $1}' | egrep "($to_relink)" | egrep "($ENV|$ROOT|boost|libicu|libssh)"`
226 changes="$changes -change $dep @executable_path/../Frameworks/$base"
228 if test "x$changes" != "x"; then
229 install_name_tool $changes -id `basename "$obj"` "$obj"
235 # param $1 directory things should be relinked into
236 # $2 list of things that link to other things
237 function relink_absolute {
238 to_relink=`echo $to_relink | sed -e "s/\+//g"`
243 for obj in "${linkers[@]}"; do
244 for arch in x86_64 arm64; do
245 deps=`otool -arch $arch -L "$obj" | awk '{print $1}' | egrep "($to_relink)" | egrep "($ENV|$ROOT|boost|libicu|libssh)"`
248 install_name_tool -change "$dep" "$target"/$base -id `basename "$obj"` "$obj"
255 codesign --deep --force --verify --verbose --options runtime --entitlements entitlements.plist --sign "Developer ID Application: Carl Hetherington (R82DXSR997)" "$1"
256 if [ "$?" != "0" ]; then
257 echo "Failed to sign $1"
263 # @param #1 .app directory
264 # @param #2 .pkg or ""
265 # @param #3 full name e.g. DCP-o-matic Batch Converter
270 tmp_dmg=dcpomatic_tmp.dmg
271 dmg="$full_name $version.dmg"
272 vol_name=DCP-o-matic-$version
276 if [ "$pkg" != "" ]; then
277 productsign --sign "Developer ID Installer: Carl Hetherington (R82DXSR997)" "$pkg" "signed_temp.pkg"
278 if [ "$?" != "0" ]; then
279 echo "Failed to sign .pkg"
282 mv signed_temp.pkg "$pkg"
286 cp -a "$appdir" $vol_name
287 if [ "$pkg" != "" ]; then
288 cp -a "$pkg" $vol_name
290 ln -s /Applications "$vol_name/Applications"
291 cat<<EOF > "$vol_name/READ ME.txt"
292 Welcome to DCP-o-matic! The first time you run the program there may be
293 a long (several-minute) delay while OS X checks the code for viruses and
294 other malware. Please be patient!
296 cat<<EOF > "$vol_name/READ ME.de_DE.txt"
297 Beim erstmaligen Start der DCP-o-matic Anwendungen kann ein längerer
298 Verifikationsvorgang auftreten. Dies ist von der OS X Sicherheitsumgebung
299 'Gatekeeper' verursacht. Dieser je nach Rechner teils minutenlange
300 Verifikationsvorgang ist gegenwärtig normal und nicht zu umgehen,
301 es ist kein Programmfehler. Warten sie die Verifikation für jede der
302 DCP-o-matic Anwendungen ab, bei weiteren Programmstarts wird sie nicht
306 if [ "$pkg" != "" ]; then
307 cat<<EOF > "$vol_name/READ ME.txt"
309 To run this software successfully you must install $pkg before running
314 if [ "$pkg" != "" ]; then
315 cat<<EOF > "$vol_name/READ ME.de_DE.txt"
317 To run this software successfully you must install $pkg before running
322 rm -f $tmp_dmg "$dmg"
323 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
324 attach=$(hdiutil attach -readwrite -noverify -noautoopen $tmp_dmg)
325 device=`echo $attach | egrep '^/dev/' | sed 1q | awk '{print $5}'`
329 tell application "Finder"
330 tell disk "'$vol_name'"
332 set current view of container window to icon view
333 set toolbar visible of container window to false
334 set statusbar visible of container window to false
335 set the bounds of container window to {400, 200, 1160, 600}
336 set the bounds of container window to {400, 200, 1160, 600}
337 set the bounds of container window to {400, 200, 1160, 600}
338 set theViewOptions to the icon view options of container window
339 set arrangement of theViewOptions to not arranged
340 set icon size of theViewOptions to 64
341 set position of item "'$appdir'" of container window to {90, 80}
342 set position of item "Applications" of container window to {265, 80}
343 set position of item "READ ME.txt" of container window to {430, 80}
344 set position of item "READ ME.de_DE.txt" of container window to {595, 80}
345 set position of item "DCP-o-matic Disk Writer.pkg" of container window to {90, 255}
348 update without registering applications
354 chmod -Rf go-w /Volumes/"$vol_name"/"$appdir"
357 hdiutil eject $device
358 hdiutil convert -format UDZO $tmp_dmg -imagekey zlib-level=9 -o "$dmg"
359 sips -i "$appdir/Contents/Resources/dcpomatic2.icns"
360 DeRez -only icns "$appdir/Contents/Resources/dcpomatic2.icns" > "$appdir/Contents/Resources/DCP-o-matic.rsrc"
361 Rez -append "$appdir/Contents/Resources/DCP-o-matic.rsrc" -o "$dmg"
366 codesign --verify --verbose --options runtime --entitlements entitlements.plist --sign "Developer ID Application: Carl Hetherington (R82DXSR997)" "$dmg"
376 approot="$appdir/Contents"
378 mkdir -p "$approot/MacOS"
379 mkdir -p "$approot/Frameworks"
380 mkdir -p "$approot/Resources"
382 to_relink="dcpomatic"
383 copy_libs "$approot/Frameworks"
384 copy_resources "$approot/Resources"
390 setup "DCP-o-matic 2.app"
391 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2 "$approot/MacOS"
392 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_cli "$approot/MacOS"
393 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_create "$approot/MacOS"
394 copy $ROOT bin/ffprobe "$approot/MacOS"
395 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
396 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2.Info.plist "$approot/Info.plist"
397 rl=("$approot/MacOS/dcpomatic2" "$approot/MacOS/dcpomatic2_cli" "$approot/MacOS/dcpomatic2_create" "$approot/MacOS/ffprobe" "$approot/Frameworks/"*.dylib)
398 relink_relative "${rl[@]}"
399 make_dmg "$appdir" "" "DCP-o-matic"
401 # DCP-o-matic KDM Creator
402 setup "DCP-o-matic 2 KDM Creator.app"
403 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_kdm "$approot/MacOS"
404 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_kdm_cli "$approot/MacOS"
405 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
406 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_kdm.Info.plist "$approot/Info.plist"
407 rl=("$approot/MacOS/dcpomatic2_kdm" "$approot/MacOS/dcpomatic2_kdm_cli" "$approot/Frameworks/"*.dylib)
408 relink_relative "${rl[@]}"
409 make_dmg "$appdir" "" "DCP-o-matic KDM Creator"
411 # DCP-o-matic Encode Server
412 setup "DCP-o-matic 2 Encode Server.app"
413 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_server "$approot/MacOS"
414 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_server_cli "$approot/MacOS"
415 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
416 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_server.Info.plist "$approot/Info.plist"
417 rl=("$approot/MacOS/dcpomatic2_server" "$approot/MacOS/dcpomatic2_server_cli" "$approot/Frameworks/"*.dylib)
418 relink_relative "${rl[@]}"
419 make_dmg "$appdir" "" "DCP-o-matic Encode Server"
421 # DCP-o-matic Batch Converter
422 setup "DCP-o-matic 2 Batch converter.app"
423 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_batch "$approot/MacOS"
424 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
425 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_batch.Info.plist "$approot/Info.plist"
426 rl=("$approot/MacOS/dcpomatic2_batch" "$approot/Frameworks/"*.dylib)
427 relink_relative "${rl[@]}"
428 make_dmg "$appdir" "" "DCP-o-matic Batch Converter"
431 setup "DCP-o-matic 2 Player.app"
432 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_player "$approot/MacOS"
433 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
434 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_player.Info.plist "$approot/Info.plist"
435 rl=("$approot/MacOS/dcpomatic2_player" "$approot/Frameworks/"*.dylib)
436 relink_relative "${rl[@]}"
437 make_dmg "$appdir" "" "DCP-o-matic Player"
439 # DCP-o-matic Playlist Editor
440 setup "DCP-o-matic 2 Playlist Editor.app"
441 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_playlist "$approot/MacOS"
442 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
443 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_playlist.Info.plist "$approot/Info.plist"
444 rl=("$approot/MacOS/dcpomatic2_playlist" "$approot/Frameworks/"*.dylib)
445 relink_relative "${rl[@]}"
446 make_dmg "$appdir" "" "DCP-o-matic Playlist Editor"
448 # DCP-o-matic Combiner
449 setup "DCP-o-matic 2 Combiner.app"
450 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_combiner "$approot/MacOS"
451 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
452 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_combiner.Info.plist "$approot/Info.plist"
453 rl=("$approot/MacOS/dcpomatic2_combiner" "$approot/Frameworks/"*.dylib)
454 relink_relative "${rl[@]}"
455 make_dmg "$appdir" "" "DCP-o-matic Combiner"
457 # DCP-o-matic Disk Writer .app
458 setup "DCP-o-matic 2 Disk Writer.app"
459 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_disk "$approot/MacOS"
460 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
461 cp $prefix/src/dcpomatic/platform/osx/uninstall_disk.applescript "$approot/Resources"
462 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_disk.Info.plist "$approot/Info.plist"
463 rl=("$approot/MacOS/dcpomatic2_disk" "$approot/Frameworks/"*.dylib)
464 relink_relative "${rl[@]}"
466 # DCP-o-matic Disk Writer daemon .pkg
468 pkgbase=tmp-disk-writer
472 pkgroot=$pkgbase/root
474 mkdir -p $pkgroot/Library/LaunchDaemons
475 cat > $pkgroot/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist <<EOF
476 <?xml version="1.0" encoding="UTF-8"?>
477 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
478 <plist version="1.0">
481 <string>com.dcpomatic.disk.writer</string>
482 <key>ProgramArguments</key>
484 <string>/Library/Application Support/com.dcpomatic/dcpomatic2_disk_writer</string>
486 <key>EnvironmentVariables</key>
488 <key>DYLD_LIBRARY_PATH</key>
489 <string><![CDATA[/Library/Application Support/com.dcpomatic]]></string>
491 <key>StandardOutPath</key>
492 <string>/var/log/dcpomatic_disk_writer_out.log</string>
493 <key>StandardErrorPath</key>
494 <string>/var/log/dcpomatic_disk_writer_err.log</string>
495 <key>LaunchEvents</key>
497 <key>com.apple.notifyd.matching</key>
499 <key>com.dcpomatic.disk.writer.start</key>
501 <key>Notification</key>
502 <string>com.dcpomatic.disk.writer.start</string>
510 # Get the binaries together in $pkgbin then move them to the
511 # place with spaces in the filename to avoid some of the pain of escaping
514 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_disk_writer "$pkgbin"
517 rl=("$pkgbin/dcpomatic2_disk_writer" "$pkgbin/"*.dylib)
518 relink_absolute "/Library/Application Support/com.dcpomatic" "${rl[@]}"
520 mkdir $pkgbase/scripts
521 cat > $pkgbase/scripts/postinstall <<EOF
523 /bin/launchctl unload "/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist"
524 /bin/launchctl load "/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist"
527 chmod gou+x $pkgbase/scripts/postinstall
529 find "$pkgbin" -iname "*.dylib" -print0 | while IFS= read -r -d '' f; do
532 sign "$pkgbin/dcpomatic2_disk_writer"
534 mkdir -p "$pkgroot/Library/Application Support/com.dcpomatic"
535 mv $pkgbin/* "$pkgroot/Library/Application Support/com.dcpomatic/"
536 pkgbuild --root $pkgroot --identifier com.dcpomatic.disk.writer --scripts $pkgbase/scripts "DCP-o-matic Disk Writer.pkg"
538 make_dmg "$appdir" "DCP-o-matic Disk Writer.pkg" "DCP-o-matic Disk Writer"