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 libicule "$dest"
131 copy_lib_env libiculx "$dest"
132 copy_lib_env libicutest "$dest"
133 copy_lib_env libicutu "$dest"
134 copy_lib_env libicuuc "$dest"
135 copy_lib_env libFLAC "$dest"
136 copy_lib_env libvorbis "$dest"
137 copy_lib_env libogg "$dest"
138 copy_lib_env libxerces-c "$dest"
139 copy_lib_env libcrypto "$dest"
140 copy_lib_env libssl "$dest"
141 copy_lib_env libfribidi "$dest"
142 copy_lib_env libgio "$dest"
143 copy_lib_env libz "$dest"
146 # @param #1 directory to copy to
147 function copy_resources {
149 local prefix=$ROOT/x86_64
150 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic_small.png "$dest"
151 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2.icns "$dest"
152 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_kdm.icns "$dest"
153 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_server.icns "$dest"
154 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_player.icns "$dest"
155 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_batch.icns "$dest"
156 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_playlist.icns "$dest"
157 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_disk.icns "$dest"
158 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_combiner.icns "$dest"
159 cp $prefix/src/dcpomatic/graphics/osx/preferences/defaults.png "$dest"
160 cp $prefix/src/dcpomatic/graphics/osx/preferences/defaults@2x.png "$dest"
161 cp $prefix/src/dcpomatic/graphics/osx/preferences/kdm_email.png "$dest"
162 cp $prefix/src/dcpomatic/graphics/osx/preferences/kdm_email@2x.png "$dest"
163 cp $prefix/src/dcpomatic/graphics/osx/preferences/email.png "$dest"
164 cp $prefix/src/dcpomatic/graphics/osx/preferences/email@2x.png "$dest"
165 cp $prefix/src/dcpomatic/graphics/osx/preferences/servers.png "$dest"
166 cp $prefix/src/dcpomatic/graphics/osx/preferences/servers@2x.png "$dest"
167 cp $prefix/src/dcpomatic/graphics/osx/preferences/tms.png "$dest"
168 cp $prefix/src/dcpomatic/graphics/osx/preferences/tms@2x.png "$dest"
169 cp $prefix/src/dcpomatic/graphics/osx/preferences/keys.png "$dest"
170 cp $prefix/src/dcpomatic/graphics/osx/preferences/keys@2x.png "$dest"
171 cp $prefix/src/dcpomatic/graphics/osx/preferences/cover_sheet.png "$dest"
172 cp $prefix/src/dcpomatic/graphics/osx/preferences/cover_sheet@2x.png "$dest"
173 cp $prefix/src/dcpomatic/graphics/osx/preferences/notifications.png "$dest"
174 cp $prefix/src/dcpomatic/graphics/osx/preferences/notifications@2x.png "$dest"
175 cp $prefix/src/dcpomatic/graphics/osx/preferences/sound.png "$dest"
176 cp $prefix/src/dcpomatic/graphics/osx/preferences/sound@2x.png "$dest"
177 cp $prefix/src/dcpomatic/graphics/osx/preferences/identifiers.png "$dest"
178 cp $prefix/src/dcpomatic/graphics/osx/preferences/identifiers@2x.png "$dest"
179 cp $prefix/src/dcpomatic/graphics/osx/preferences/general.png "$dest"
180 cp $prefix/src/dcpomatic/graphics/osx/preferences/general@2x.png "$dest"
181 cp $prefix/src/dcpomatic/graphics/osx/preferences/advanced.png "$dest"
182 cp $prefix/src/dcpomatic/graphics/osx/preferences/advanced@2x.png "$dest"
183 cp $prefix/src/dcpomatic/graphics/osx/preferences/locations.png "$dest"
184 cp $prefix/src/dcpomatic/graphics/osx/preferences/locations@2x.png "$dest"
185 cp $prefix/src/dcpomatic/fonts/LiberationSans-Regular.ttf "$dest"
186 cp $prefix/src/dcpomatic/fonts/LiberationSans-Italic.ttf "$dest"
187 cp $prefix/src/dcpomatic/fonts/LiberationSans-Bold.ttf "$dest"
188 cp $prefix/src/dcpomatic/fonts/fonts.conf.osx "$dest"/fonts.conf
189 cp $prefix/src/dcpomatic/graphics/splash.png "$dest"
190 cp $prefix/src/dcpomatic/graphics/zoom.png "$dest"
191 cp $prefix/src/dcpomatic/graphics/zoom_all.png "$dest"
192 cp $prefix/src/dcpomatic/graphics/select.png "$dest"
193 cp $prefix/src/dcpomatic/graphics/snap.png "$dest"
194 cp $prefix/src/dcpomatic/graphics/sequence.png "$dest"
195 cp $prefix/src/dcpomatic/graphics/me.jpg "$dest"
196 cp $prefix/src/dcpomatic/graphics/link.png "$dest"
197 cp $prefix/src/dcpomatic/graphics/tick.png "$dest"
198 cp $prefix/src/dcpomatic/graphics/no_tick.png "$dest"
199 cp -r $prefix/share/libdcp/xsd "$dest"
200 cp -r $prefix/share/libdcp/tags "$dest"
202 # i18n: DCP-o-matic .mo files
203 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
204 mkdir -p "$dest/$lang/LC_MESSAGES"
205 cp $prefix/src/dcpomatic/build/src/lib/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
206 cp $prefix/src/dcpomatic/build/src/wx/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
207 cp $prefix/src/dcpomatic/build/src/tools/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
210 # i18n: wxWidgets .mo files
211 for lang in de es fr it sv nl ru pl da cs; do
213 cp $ENV/x86_64/share/locale/$lang/LC_MESSAGES/wxstd.mo "$dest/$lang"
217 # param $1 list of things that link to other things
218 function relink_relative {
219 to_relink=`echo $to_relink | sed -e "s/\+//g"`
222 for obj in "${linkers[@]}"; do
223 for arch in x86_64 arm64; do
224 deps=`otool -arch $arch -L "$obj" | awk '{print $1}' | egrep "($to_relink)" | egrep "($ENV|$ROOT|boost|libicu|libssh)"`
228 changes="$changes -change $dep @executable_path/../Frameworks/$base"
230 if test "x$changes" != "x"; then
231 install_name_tool $changes -id `basename "$obj"` "$obj"
237 # param $1 directory things should be relinked into
238 # $2 list of things that link to other things
239 function relink_absolute {
240 to_relink=`echo $to_relink | sed -e "s/\+//g"`
245 for obj in "${linkers[@]}"; do
246 for arch in x86_64 arm64; do
247 deps=`otool -arch $arch -L "$obj" | awk '{print $1}' | egrep "($to_relink)" | egrep "($ENV|$ROOT|boost|libicu|libssh)"`
250 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"