3 SYNTAX="make_dmg.sh <environment> <builddir> <type> <sdk> <apple-id> <apple-password>"
4 # where <type> is arm-intel, intel or arm
6 # e.g. make_dmg.sh /Users/carl/osx-environment /Users/carl/cdist arm-intel-64 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
22 if [ "$TYPE" != "arm-intel" -a "$TYPE" != "intel" -a "$TYPE" != "arm" ]; then
24 echo "where <type> is arm-intel, intel or arm"
28 # This is our work area for making up the .dmgs
29 mkdir -p build/platform/osx
32 cat <<EOF > entitlements.plist
33 <?xml version="1.0" encoding="UTF-8"?>
34 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
37 <key>com.apple.security.cs.disable-library-validation</key>
39 <key>com.apple.security.cs.allow-dyld-environment-variables</key>
48 for f in $1/arm64/$2; do
50 ln -s $(readlink $f) "$3/`basename $f`"
52 g=`echo $f | sed -e "s/\/arm64\//\/x86_64\//g"`
54 lipo -create $f $g -output "$3/`basename $f`"
60 ln -s $(readlink $1/$2) "$3/`basename $f`"
68 function copy_lib_root {
71 for f in $ROOT/arm64/lib/$1*.dylib; do
73 ln -s $(readlink $f) "$2/`basename $f`"
75 g=`echo $f | sed -e "s/\/arm64\//\/x86_64\//g"`
77 lipo -create $f $g -output "$2/`basename $f`"
82 for f in $ROOT/lib/$1*.dylib; do
84 ln -s $(readlink $f) "$2/`basename $f`"
86 cp $f "$2/`basename $f`"
91 to_relink="$to_relink|$1"
94 function copy_lib_env {
97 for f in $ENV/arm64/$SDK/lib/$1*.dylib; do
99 ln -s $(readlink $f) "$2/`basename $f`"
101 g=`echo $f | sed -e "s/\/arm64\//\/x86_64\//g"`
103 lipo -create $f $g -output "$2/`basename $f`"
108 for f in $ENV/x86_64/$SDK/lib/$1*.dylib; do
110 ln -s $(readlink $f) "$2/`basename $f`"
118 for f in $ENV/arm64/$SDK/lib/$1*.dylib; do
120 ln -s $(readlink $f) "$2/`basename $f`"
128 to_relink="$to_relink|$1"
131 # @param #1 directory to copy to
134 copy_lib_root libcxml "$dest"
135 copy_lib_root libdcp-1.0 "$dest"
136 copy_lib_root libasdcp-carl "$dest"
137 copy_lib_root libkumu-carl "$dest"
138 copy_lib_root libsub "$dest"
139 copy_lib_root libopenjp2 "$dest"
140 copy_lib_root libavdevice "$dest"
141 copy_lib_root libavformat "$dest"
142 copy_lib_root libavfilter "$dest"
143 copy_lib_root libavutil "$dest"
144 copy_lib_root libavcodec "$dest"
145 copy_lib_root libswscale "$dest"
146 copy_lib_root libpostproc "$dest"
147 copy_lib_root libswresample "$dest"
148 copy_lib_root liblwext4 "$dest"
149 copy_lib_root libblockdev "$dest"
150 copy_lib_root libleqm_nrt "$dest"
151 copy $ROOT src/dcpomatic/build/src/lib/libdcpomatic2.dylib "$dest"
152 copy $ROOT src/dcpomatic/build/src/wx/libdcpomatic2-wx.dylib "$dest"
153 copy_lib_env libboost_system "$dest"
154 copy_lib_env libboost_filesystem "$dest"
155 copy_lib_env libboost_thread "$dest"
156 copy_lib_env libboost_date_time "$dest"
157 copy_lib_env libboost_locale "$dest"
158 copy_lib_env libboost_regex "$dest"
159 copy_lib_env libxml++ "$dest"
160 copy_lib_env libxslt "$dest"
161 copy_lib_env libxml2 "$dest"
162 copy_lib_env libglibmm-2.4 "$dest"
163 copy_lib_env libgobject "$dest"
164 copy_lib_env libgthread "$dest"
165 copy_lib_env libgmodule "$dest"
166 copy_lib_env libsigc "$dest"
167 copy_lib_env libglib-2 "$dest"
168 copy_lib_env libintl "$dest"
169 copy_lib_env libsndfile "$dest"
170 copy_lib_env libssh "$dest"
171 copy_lib_env libwx "$dest"
172 copy_lib_env libfontconfig "$dest"
173 copy_lib_env libfreetype "$dest"
174 copy_lib_env libexpat "$dest"
175 copy_lib_env libltdl "$dest"
176 copy_lib_env libxmlsec1 "$dest"
177 copy_lib_env libcurl "$dest"
178 copy_lib_env libffi "$dest"
179 copy_lib_env libpango "$dest"
180 copy_lib_env libcairo "$dest"
181 copy_lib_env libpixman "$dest"
182 copy_lib_env libharfbuzz "$dest"
183 copy_lib_env libsamplerate "$dest"
184 copy_lib_env libicui18n "$dest"
185 copy_lib_env libicudata "$dest"
186 copy_lib_env libicuio "$dest"
187 copy_lib_env libicule "$dest"
188 copy_lib_env libiculx "$dest"
189 copy_lib_env libicutest "$dest"
190 copy_lib_env libicutu "$dest"
191 copy_lib_env libicuuc "$dest"
192 copy_lib_env libFLAC "$dest"
193 copy_lib_env libvorbis "$dest"
194 copy_lib_env libogg "$dest"
195 copy_lib_env libxerces-c "$dest"
196 copy_lib_env libcrypto "$dest"
197 copy_lib_env libssl "$dest"
198 copy_lib_env libfribidi "$dest"
199 copy_lib_env libgio "$dest"
200 copy_lib_env libz "$dest"
203 # @param #1 directory to copy to
204 function copy_resources {
208 local prefix=$ROOT/x86_64
214 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic_small.png "$dest"
215 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2.icns "$dest"
216 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_kdm.icns "$dest"
217 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_server.icns "$dest"
218 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_player.icns "$dest"
219 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_batch.icns "$dest"
220 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_playlist.icns "$dest"
221 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_disk.icns "$dest"
222 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_combiner.icns "$dest"
223 cp $prefix/src/dcpomatic/graphics/osx/preferences/defaults.png "$dest"
224 cp $prefix/src/dcpomatic/graphics/osx/preferences/defaults@2x.png "$dest"
225 cp $prefix/src/dcpomatic/graphics/osx/preferences/kdm_email.png "$dest"
226 cp $prefix/src/dcpomatic/graphics/osx/preferences/kdm_email@2x.png "$dest"
227 cp $prefix/src/dcpomatic/graphics/osx/preferences/email.png "$dest"
228 cp $prefix/src/dcpomatic/graphics/osx/preferences/email@2x.png "$dest"
229 cp $prefix/src/dcpomatic/graphics/osx/preferences/servers.png "$dest"
230 cp $prefix/src/dcpomatic/graphics/osx/preferences/servers@2x.png "$dest"
231 cp $prefix/src/dcpomatic/graphics/osx/preferences/tms.png "$dest"
232 cp $prefix/src/dcpomatic/graphics/osx/preferences/tms@2x.png "$dest"
233 cp $prefix/src/dcpomatic/graphics/osx/preferences/keys.png "$dest"
234 cp $prefix/src/dcpomatic/graphics/osx/preferences/keys@2x.png "$dest"
235 cp $prefix/src/dcpomatic/graphics/osx/preferences/cover_sheet.png "$dest"
236 cp $prefix/src/dcpomatic/graphics/osx/preferences/cover_sheet@2x.png "$dest"
237 cp $prefix/src/dcpomatic/graphics/osx/preferences/notifications.png "$dest"
238 cp $prefix/src/dcpomatic/graphics/osx/preferences/notifications@2x.png "$dest"
239 cp $prefix/src/dcpomatic/graphics/osx/preferences/sound.png "$dest"
240 cp $prefix/src/dcpomatic/graphics/osx/preferences/sound@2x.png "$dest"
241 cp $prefix/src/dcpomatic/graphics/osx/preferences/identifiers.png "$dest"
242 cp $prefix/src/dcpomatic/graphics/osx/preferences/identifiers@2x.png "$dest"
243 cp $prefix/src/dcpomatic/graphics/osx/preferences/general.png "$dest"
244 cp $prefix/src/dcpomatic/graphics/osx/preferences/general@2x.png "$dest"
245 cp $prefix/src/dcpomatic/graphics/osx/preferences/advanced.png "$dest"
246 cp $prefix/src/dcpomatic/graphics/osx/preferences/advanced@2x.png "$dest"
247 cp $prefix/src/dcpomatic/graphics/osx/preferences/locations.png "$dest"
248 cp $prefix/src/dcpomatic/graphics/osx/preferences/locations@2x.png "$dest"
249 cp $prefix/src/dcpomatic/fonts/LiberationSans-Regular.ttf "$dest"
250 cp $prefix/src/dcpomatic/fonts/LiberationSans-Italic.ttf "$dest"
251 cp $prefix/src/dcpomatic/fonts/LiberationSans-Bold.ttf "$dest"
252 cp $prefix/src/dcpomatic/fonts/fonts.conf.osx "$dest"/fonts.conf
253 cp $prefix/src/dcpomatic/graphics/splash.png "$dest"
254 cp $prefix/src/dcpomatic/graphics/zoom.png "$dest"
255 cp $prefix/src/dcpomatic/graphics/zoom_all.png "$dest"
256 cp $prefix/src/dcpomatic/graphics/select.png "$dest"
257 cp $prefix/src/dcpomatic/graphics/snap.png "$dest"
258 cp $prefix/src/dcpomatic/graphics/sequence.png "$dest"
259 cp $prefix/src/dcpomatic/graphics/me.jpg "$dest"
260 cp $prefix/src/dcpomatic/graphics/link.png "$dest"
261 cp $prefix/src/dcpomatic/graphics/tick.png "$dest"
262 cp $prefix/src/dcpomatic/graphics/no_tick.png "$dest"
263 cp -r $prefix/share/libdcp/xsd "$dest"
264 cp -r $prefix/share/libdcp/tags "$dest"
266 # i18n: DCP-o-matic .mo files
267 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
268 mkdir -p "$dest/$lang/LC_MESSAGES"
269 cp $prefix/src/dcpomatic/build/src/lib/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
270 cp $prefix/src/dcpomatic/build/src/wx/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
271 cp $prefix/src/dcpomatic/build/src/tools/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
274 # i18n: wxWidgets .mo files
275 for lang in de es fr it sv nl ru pl da cs; do
277 cp $ENV/x86_64/$SDK/share/locale/$lang/LC_MESSAGES/wxstd.mo "$dest/$lang"
281 # param $1 list of things that link to other things
282 function relink_relative {
283 to_relink=`echo $to_relink | sed -e "s/\+//g"`
286 for obj in "${linkers[@]}"; do
287 deps=`otool -L "$obj" | awk '{print $1}' | egrep "($to_relink)" | egrep "($ENV|$ROOT|boost|libicu|libssh)"`
291 if [ "$TYPE" == "universal" ]; then
292 # $dep will be a path within x86_64/; make i386 and arm64 paths too
293 dep_i386=`echo $dep | sed -e "s/\/x86_64\//\/i386\//g"`
294 changes="$changes -change $dep @executable_path/../Frameworks/$base -change $dep_i386 @executable_path/../Frameworks/$base"
295 dep_arm64=`echo $dep | sed -e "s/\/x86_64\//\/arm64\//g"`
296 changes="$changes -change $dep @executable_path/../Frameworks/$base -change $dep_arm64 @executable_path/../Frameworks/$base"
298 changes="$changes -change $dep @executable_path/../Frameworks/$base"
301 if test "x$changes" != "x"; then
302 install_name_tool $changes -id `basename "$obj"` "$obj"
307 # param $1 directory things should be relinked into
308 # $2 list of things that link to other things
309 function relink_absolute {
310 to_relink=`echo $to_relink | sed -e "s/\+//g"`
315 for obj in "${linkers[@]}"; do
316 deps=`otool -L "$obj" | awk '{print $1}' | egrep "($to_relink)" | egrep "($ENV|$ROOT|boost|libicu|libssh)"`
319 install_name_tool -change "$dep" "$target"/$base -id `basename "$obj"` "$obj"
325 codesign --deep --force --verify --verbose --options runtime --entitlements entitlements.plist --sign "Developer ID Application: Carl Hetherington (R82DXSR997)" "$1"
326 if [ "$?" != "0" ]; then
327 echo "Failed to sign $1"
333 # @param #1 .app directory
334 # @param #2 .pkg or ""
335 # @param #3 full name e.g. DCP-o-matic Batch Converter
340 tmp_dmg=dcpomatic_tmp.dmg
341 dmg="$full_name $version.dmg"
342 vol_name=DCP-o-matic-$version
346 if [ "$pkg" != "" ]; then
347 productsign --sign "Developer ID Installer: Carl Hetherington (R82DXSR997)" "$pkg" "signed_temp.pkg"
348 if [ "$?" != "0" ]; then
349 echo "Failed to sign .pkg"
352 mv signed_temp.pkg "$pkg"
356 cp -a "$appdir" $vol_name
357 if [ "$pkg" != "" ]; then
358 cp -a "$pkg" $vol_name
360 ln -s /Applications "$vol_name/Applications"
361 cat<<EOF > "$vol_name/READ ME.txt"
362 Welcome to DCP-o-matic! The first time you run the program there may be
363 a long (several-minute) delay while OS X checks the code for viruses and
364 other malware. Please be patient!
366 cat<<EOF > "$vol_name/READ ME.de_DE.txt"
367 Beim erstmaligen Start der DCP-o-matic Anwendungen kann ein längerer
368 Verifikationsvorgang auftreten. Dies ist von der OS X Sicherheitsumgebung
369 'Gatekeeper' verursacht. Dieser je nach Rechner teils minutenlange
370 Verifikationsvorgang ist gegenwärtig normal und nicht zu umgehen,
371 es ist kein Programmfehler. Warten sie die Verifikation für jede der
372 DCP-o-matic Anwendungen ab, bei weiteren Programmstarts wird sie nicht
376 if [ "$pkg" != "" ]; then
377 cat<<EOF > "$vol_name/READ ME.txt"
379 To run this software successfully you must install $pkg before running
384 if [ "$pkg" != "" ]; then
385 cat<<EOF > "$vol_name/READ ME.de_DE.txt"
387 To run this software successfully you must install $pkg before running
392 rm -f $tmp_dmg "$dmg"
393 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
394 attach=$(hdiutil attach -readwrite -noverify -noautoopen $tmp_dmg)
395 device=`echo $attach | egrep '^/dev/' | sed 1q | awk '{print $5}'`
399 tell application "Finder"
400 tell disk "'$vol_name'"
402 set current view of container window to icon view
403 set toolbar visible of container window to false
404 set statusbar visible of container window to false
405 set the bounds of container window to {400, 200, 1160, 600}
406 set the bounds of container window to {400, 200, 1160, 600}
407 set the bounds of container window to {400, 200, 1160, 600}
408 set theViewOptions to the icon view options of container window
409 set arrangement of theViewOptions to not arranged
410 set icon size of theViewOptions to 64
411 set position of item "'$appdir'" of container window to {90, 80}
412 set position of item "Applications" of container window to {265, 80}
413 set position of item "READ ME.txt" of container window to {430, 80}
414 set position of item "READ ME.de_DE.txt" of container window to {595, 80}
415 set position of item "DCP-o-matic Disk Writer.pkg" of container window to {90, 255}
418 update without registering applications
424 chmod -Rf go-w /Volumes/"$vol_name"/"$appdir"
427 hdiutil eject $device
428 hdiutil convert -format UDZO $tmp_dmg -imagekey zlib-level=9 -o "$dmg"
429 sips -i "$appdir/Contents/Resources/dcpomatic2.icns"
430 DeRez -only icns "$appdir/Contents/Resources/dcpomatic2.icns" > "$appdir/Contents/Resources/DCP-o-matic.rsrc"
431 Rez -append "$appdir/Contents/Resources/DCP-o-matic.rsrc" -o "$dmg"
436 codesign --verify --verbose --options runtime --entitlements entitlements.plist --sign "Developer ID Application: Carl Hetherington (R82DXSR997)" "$dmg"
446 approot="$appdir/Contents"
448 mkdir -p "$approot/MacOS"
449 mkdir -p "$approot/Frameworks"
450 mkdir -p "$approot/Resources"
452 to_relink="dcpomatic"
453 copy_libs "$approot/Frameworks"
454 copy_resources "$approot/Resources"
459 # copy() writes the universal binary to arm64
468 setup "DCP-o-matic 2.app"
469 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2 "$approot/MacOS"
470 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_cli "$approot/MacOS"
471 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_create "$approot/MacOS"
472 copy $ROOT bin/ffprobe "$approot/MacOS"
473 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
474 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2.Info.plist "$approot/Info.plist"
475 rl=("$approot/MacOS/dcpomatic2" "$approot/MacOS/dcpomatic2_cli" "$approot/MacOS/dcpomatic2_create" "$approot/MacOS/ffprobe" "$approot/Frameworks/"*.dylib)
476 relink_relative "${rl[@]}"
477 make_dmg "$appdir" "" "DCP-o-matic"
479 # DCP-o-matic KDM Creator
480 setup "DCP-o-matic 2 KDM Creator.app"
481 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_kdm "$approot/MacOS"
482 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_kdm_cli "$approot/MacOS"
483 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
484 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_kdm.Info.plist "$approot/Info.plist"
485 rl=("$approot/MacOS/dcpomatic2_kdm" "$approot/MacOS/dcpomatic2_kdm_cli" "$approot/Frameworks/"*.dylib)
486 relink_relative "${rl[@]}"
487 make_dmg "$appdir" "" "DCP-o-matic KDM Creator"
489 # DCP-o-matic Encode Server
490 setup "DCP-o-matic 2 Encode Server.app"
491 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_server "$approot/MacOS"
492 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_server_cli "$approot/MacOS"
493 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
494 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_server.Info.plist "$approot/Info.plist"
495 rl=("$approot/MacOS/dcpomatic2_server" "$approot/MacOS/dcpomatic2_server_cli" "$approot/Frameworks/"*.dylib)
496 relink_relative "${rl[@]}"
497 make_dmg "$appdir" "" "DCP-o-matic Encode Server"
499 # DCP-o-matic Batch Converter
500 setup "DCP-o-matic 2 Batch converter.app"
501 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_batch "$approot/MacOS"
502 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
503 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_batch.Info.plist "$approot/Info.plist"
504 rl=("$approot/MacOS/dcpomatic2_batch" "$approot/Frameworks/"*.dylib)
505 relink_relative "${rl[@]}"
506 make_dmg "$appdir" "" "DCP-o-matic Batch Converter"
509 setup "DCP-o-matic 2 Player.app"
510 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_player "$approot/MacOS"
511 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
512 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_player.Info.plist "$approot/Info.plist"
513 rl=("$approot/MacOS/dcpomatic2_player" "$approot/Frameworks/"*.dylib)
514 relink_relative "${rl[@]}"
515 make_dmg "$appdir" "" "DCP-o-matic Player"
517 # DCP-o-matic Playlist Editor
518 setup "DCP-o-matic 2 Playlist Editor.app"
519 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_playlist "$approot/MacOS"
520 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
521 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_playlist.Info.plist "$approot/Info.plist"
522 rl=("$approot/MacOS/dcpomatic2_playlist" "$approot/Frameworks/"*.dylib)
523 relink_relative "${rl[@]}"
524 make_dmg "$appdir" "" "DCP-o-matic Playlist Editor"
526 # DCP-o-matic Combiner
527 setup "DCP-o-matic 2 Combiner.app"
528 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_combiner "$approot/MacOS"
529 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
530 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_combiner.Info.plist "$approot/Info.plist"
531 rl=("$approot/MacOS/dcpomatic2_combiner" "$approot/Frameworks/"*.dylib)
532 relink_relative "${rl[@]}"
533 make_dmg "$appdir" "" "DCP-o-matic Combiner"
535 # DCP-o-matic Disk Writer .app
536 setup "DCP-o-matic 2 Disk Writer.app"
537 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_disk "$approot/MacOS"
538 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
539 cp $prefix/src/dcpomatic/platform/osx/uninstall_disk.applescript "$approot/Resources"
540 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_disk.Info.plist "$approot/Info.plist"
541 rl=("$approot/MacOS/dcpomatic2_disk" "$approot/Frameworks/"*.dylib)
542 relink_relative "${rl[@]}"
544 # DCP-o-matic Disk Writer daemon .pkg
546 pkgbase=tmp-disk-writer
550 pkgroot=$pkgbase/root
552 mkdir -p $pkgroot/Library/LaunchDaemons
553 cat > $pkgroot/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist <<EOF
554 <?xml version="1.0" encoding="UTF-8"?>
555 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
556 <plist version="1.0">
559 <string>com.dcpomatic.disk.writer</string>
560 <key>ProgramArguments</key>
562 <string>/Library/Application Support/com.dcpomatic/dcpomatic2_disk_writer</string>
564 <key>EnvironmentVariables</key>
566 <key>DYLD_LIBRARY_PATH</key>
567 <string><![CDATA[/Library/Application Support/com.dcpomatic]]></string>
569 <key>StandardOutPath</key>
570 <string>/var/log/dcpomatic_disk_writer_out.log</string>
571 <key>StandardErrorPath</key>
572 <string>/var/log/dcpomatic_disk_writer_err.log</string>
573 <key>LaunchEvents</key>
575 <key>com.apple.notifyd.matching</key>
577 <key>com.dcpomatic.disk.writer.start</key>
579 <key>Notification</key>
580 <string>com.dcpomatic.disk.writer.start</string>
588 # Get the binaries together in $pkgbin then move them to the
589 # place with spaces in the filename to avoid some of the pain of escaping
592 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_disk_writer "$pkgbin"
595 rl=("$pkgbin/dcpomatic2_disk_writer" "$pkgbin/"*.dylib)
596 relink_absolute "/Library/Application Support/com.dcpomatic" "${rl[@]}"
598 mkdir $pkgbase/scripts
599 cat > $pkgbase/scripts/postinstall <<EOF
601 /bin/launchctl unload "/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist"
602 /bin/launchctl load "/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist"
605 chmod gou+x $pkgbase/scripts/postinstall
607 find "$pkgbin" -iname "*.dylib" -print0 | while IFS= read -r -d '' f; do
610 sign "$pkgbin/dcpomatic2_disk_writer"
612 mkdir -p "$pkgroot/Library/Application Support/com.dcpomatic"
613 mv $pkgbin/* "$pkgroot/Library/Application Support/com.dcpomatic/"
614 pkgbuild --root $pkgroot --identifier com.dcpomatic.disk.writer --scripts $pkgbase/scripts "DCP-o-matic Disk Writer.pkg"
616 make_dmg "$appdir" "DCP-o-matic Disk Writer.pkg" "DCP-o-matic Disk Writer"