3 SYNTAX="make_dmg.sh <environment> <builddir> <type> <apple-id> <apple-password>"
4 # where <type> is arm-intel-64, intel-32-64 or arm64
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
21 if [ "$TYPE" != "arm-intel-64" -a "$TYPE" != "intel-32-64" -a "$TYPE" != "arm64" ]; then
23 echo "where <type> is arm-intel-64, intel-32-64 or arm64"
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>
45 for f in $1/arm64/$2; do
47 ln -s $(readlink $f) "$3/`basename $f`"
49 g=`echo $f | sed -e "s/\/arm64\//\/x86_64\//g"`
51 lipo -create $f $g -output "$3/`basename $f`"
56 for f in $1/i386/$2; do
58 ln -s $(readlink $f) "$3/`basename $f`"
60 g=`echo $f | sed -e "s/\/i386\//\/x86_64\//g"`
62 lipo -create $f $g -output "$3/`basename $f`"
68 ln -s $(readlink $1/$2) "$3/`basename $f`"
76 function copy_lib_root {
79 for f in $ROOT/arm64/lib/$1*.dylib; do
81 ln -s $(readlink $f) "$2/`basename $f`"
83 g=`echo $f | sed -e "s/\/arm64\//\/x86_64\//g"`
85 lipo -create $f $g -output "$2/`basename $f`"
90 for f in $ROOT/intel-32-64/lib/$1*.dylib; do
92 ln -s $(readlink $f) "$2/`basename $f`"
94 g=`echo $f | sed -e "s/\/i386\//\/x86_64\//g"`
96 lipo -create $f $g -output "$2/`basename $f`"
101 for f in $ROOT/lib/$1*.dylib; do
103 ln -s $(readlink $f) "$2/`basename $f`"
111 to_relink="$to_relink|$1"
114 function copy_lib_env {
117 for f in $ENV/arm64/lib/$1*.dylib; do
119 ln -s $(readlink $f) "$2/`basename $f`"
121 g=`echo $f | sed -e "s/\/arm64\//\/x86_64\//g"`
123 lipo -create $f $g -output "$2/`basename $f`"
128 for f in $ENV/i386/lib/$1*.dylib; do
130 ln -s $(readlink $f) "$2/`basename $f`"
132 g=`echo $f | sed -e "s/\/i386\//\/x86_64\//g"`
134 lipo -create $f $g -output "$2/`basename $f`"
139 for f in $ENV/arm64/lib/$1*.dylib; do
141 ln -s $(readlink $f) "$2/`basename $f`"
149 to_relink="$to_relink|$1"
152 # @param #1 directory to copy to
155 copy_lib_root libcxml "$dest"
156 copy_lib_root libdcp-1.0 "$dest"
157 copy_lib_root libasdcp-carl "$dest"
158 copy_lib_root libkumu-carl "$dest"
159 copy_lib_root libsub "$dest"
160 copy_lib_root libopenjp2 "$dest"
161 copy_lib_root libavdevice "$dest"
162 copy_lib_root libavformat "$dest"
163 copy_lib_root libavfilter "$dest"
164 copy_lib_root libavutil "$dest"
165 copy_lib_root libavcodec "$dest"
166 copy_lib_root libswscale "$dest"
167 copy_lib_root libpostproc "$dest"
168 copy_lib_root libswresample "$dest"
169 copy_lib_root liblwext4 "$dest"
170 copy_lib_root libblockdev "$dest"
171 copy_lib_root libleqm_nrt "$dest"
172 copy $ROOT src/dcpomatic/build/src/lib/libdcpomatic2.dylib "$dest"
173 copy $ROOT src/dcpomatic/build/src/wx/libdcpomatic2-wx.dylib "$dest"
174 copy_lib_env libboost_system "$dest"
175 copy_lib_env libboost_filesystem "$dest"
176 copy_lib_env libboost_thread "$dest"
177 copy_lib_env libboost_date_time "$dest"
178 copy_lib_env libboost_locale "$dest"
179 copy_lib_env libboost_regex "$dest"
180 copy_lib_env libxml++ "$dest"
181 copy_lib_env libxslt "$dest"
182 copy_lib_env libxml2 "$dest"
183 copy_lib_env libglibmm-2.4 "$dest"
184 copy_lib_env libgobject "$dest"
185 copy_lib_env libgthread "$dest"
186 copy_lib_env libgmodule "$dest"
187 copy_lib_env libsigc "$dest"
188 copy_lib_env libglib-2 "$dest"
189 copy_lib_env libintl "$dest"
190 copy_lib_env libsndfile "$dest"
191 copy_lib_env libssh "$dest"
192 copy_lib_env libwx "$dest"
193 copy_lib_env libfontconfig "$dest"
194 copy_lib_env libfreetype "$dest"
195 copy_lib_env libexpat "$dest"
196 copy_lib_env libltdl "$dest"
197 copy_lib_env libxmlsec1 "$dest"
198 copy_lib_env libcurl "$dest"
199 copy_lib_env libffi "$dest"
200 copy_lib_env libpango "$dest"
201 copy_lib_env libcairo "$dest"
202 copy_lib_env libpixman "$dest"
203 copy_lib_env libharfbuzz "$dest"
204 copy_lib_env libsamplerate "$dest"
205 copy_lib_env libicui18n "$dest"
206 copy_lib_env libicudata "$dest"
207 copy_lib_env libicuio "$dest"
208 copy_lib_env libicule "$dest"
209 copy_lib_env libiculx "$dest"
210 copy_lib_env libicutest "$dest"
211 copy_lib_env libicutu "$dest"
212 copy_lib_env libicuuc "$dest"
213 copy_lib_env libFLAC "$dest"
214 copy_lib_env libvorbis "$dest"
215 copy_lib_env libogg "$dest"
216 copy_lib_env libxerces-c "$dest"
217 copy_lib_env libcrypto "$dest"
218 copy_lib_env libssl "$dest"
219 copy_lib_env libfribidi "$dest"
220 copy_lib_env libgio "$dest"
221 copy_lib_env libz "$dest"
224 # @param #1 directory to copy to
225 function copy_resources {
229 local prefix=$ROOT/x86_64
232 local prefix=$ROOT/x86_64
238 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic_small.png "$dest"
239 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2.icns "$dest"
240 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_kdm.icns "$dest"
241 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_server.icns "$dest"
242 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_player.icns "$dest"
243 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_batch.icns "$dest"
244 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_playlist.icns "$dest"
245 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_disk.icns "$dest"
246 cp $prefix/src/dcpomatic/graphics/osx/dcpomatic2_combiner.icns "$dest"
247 cp $prefix/src/dcpomatic/graphics/osx/preferences/defaults.png "$dest"
248 cp $prefix/src/dcpomatic/graphics/osx/preferences/defaults@2x.png "$dest"
249 cp $prefix/src/dcpomatic/graphics/osx/preferences/kdm_email.png "$dest"
250 cp $prefix/src/dcpomatic/graphics/osx/preferences/kdm_email@2x.png "$dest"
251 cp $prefix/src/dcpomatic/graphics/osx/preferences/email.png "$dest"
252 cp $prefix/src/dcpomatic/graphics/osx/preferences/email@2x.png "$dest"
253 cp $prefix/src/dcpomatic/graphics/osx/preferences/servers.png "$dest"
254 cp $prefix/src/dcpomatic/graphics/osx/preferences/servers@2x.png "$dest"
255 cp $prefix/src/dcpomatic/graphics/osx/preferences/tms.png "$dest"
256 cp $prefix/src/dcpomatic/graphics/osx/preferences/tms@2x.png "$dest"
257 cp $prefix/src/dcpomatic/graphics/osx/preferences/keys.png "$dest"
258 cp $prefix/src/dcpomatic/graphics/osx/preferences/keys@2x.png "$dest"
259 cp $prefix/src/dcpomatic/graphics/osx/preferences/cover_sheet.png "$dest"
260 cp $prefix/src/dcpomatic/graphics/osx/preferences/cover_sheet@2x.png "$dest"
261 cp $prefix/src/dcpomatic/graphics/osx/preferences/notifications.png "$dest"
262 cp $prefix/src/dcpomatic/graphics/osx/preferences/notifications@2x.png "$dest"
263 cp $prefix/src/dcpomatic/graphics/osx/preferences/sound.png "$dest"
264 cp $prefix/src/dcpomatic/graphics/osx/preferences/sound@2x.png "$dest"
265 cp $prefix/src/dcpomatic/graphics/osx/preferences/identifiers.png "$dest"
266 cp $prefix/src/dcpomatic/graphics/osx/preferences/identifiers@2x.png "$dest"
267 cp $prefix/src/dcpomatic/graphics/osx/preferences/general.png "$dest"
268 cp $prefix/src/dcpomatic/graphics/osx/preferences/general@2x.png "$dest"
269 cp $prefix/src/dcpomatic/graphics/osx/preferences/advanced.png "$dest"
270 cp $prefix/src/dcpomatic/graphics/osx/preferences/advanced@2x.png "$dest"
271 cp $prefix/src/dcpomatic/graphics/osx/preferences/locations.png "$dest"
272 cp $prefix/src/dcpomatic/graphics/osx/preferences/locations@2x.png "$dest"
273 cp $prefix/src/dcpomatic/fonts/LiberationSans-Regular.ttf "$dest"
274 cp $prefix/src/dcpomatic/fonts/LiberationSans-Italic.ttf "$dest"
275 cp $prefix/src/dcpomatic/fonts/LiberationSans-Bold.ttf "$dest"
276 cp $prefix/src/dcpomatic/fonts/fonts.conf.osx "$dest"/fonts.conf
277 cp $prefix/src/dcpomatic/graphics/splash.png "$dest"
278 cp $prefix/src/dcpomatic/graphics/zoom.png "$dest"
279 cp $prefix/src/dcpomatic/graphics/zoom_all.png "$dest"
280 cp $prefix/src/dcpomatic/graphics/select.png "$dest"
281 cp $prefix/src/dcpomatic/graphics/snap.png "$dest"
282 cp $prefix/src/dcpomatic/graphics/sequence.png "$dest"
283 cp $prefix/src/dcpomatic/graphics/me.jpg "$dest"
284 cp $prefix/src/dcpomatic/graphics/link.png "$dest"
285 cp $prefix/src/dcpomatic/graphics/tick.png "$dest"
286 cp $prefix/src/dcpomatic/graphics/no_tick.png "$dest"
287 cp -r $prefix/share/libdcp/xsd "$dest"
288 cp -r $prefix/share/libdcp/tags "$dest"
290 # i18n: DCP-o-matic .mo files
291 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
292 mkdir -p "$dest/$lang/LC_MESSAGES"
293 cp $prefix/src/dcpomatic/build/src/lib/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
294 cp $prefix/src/dcpomatic/build/src/wx/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
295 cp $prefix/src/dcpomatic/build/src/tools/mo/$lang/*.mo "$dest/$lang/LC_MESSAGES"
298 # i18n: wxWidgets .mo files
299 for lang in de es fr it sv nl ru pl da cs; do
301 cp $ENV/x86_64/share/locale/$lang/LC_MESSAGES/wxstd.mo "$dest/$lang"
305 # param $1 list of things that link to other things
306 function relink_relative {
307 to_relink=`echo $to_relink | sed -e "s/\+//g"`
310 for obj in "${linkers[@]}"; do
311 deps=`otool -L "$obj" | awk '{print $1}' | egrep "($to_relink)" | egrep "($ENV|$ROOT|boost|libicu)"`
315 if [ "$TYPE" == "universal" ]; then
316 # $dep will be a path within x86_64/; make i386 and arm64 paths too
317 dep_i386=`echo $dep | sed -e "s/\/x86_64\//\/i386\//g"`
318 changes="$changes -change $dep @executable_path/../Frameworks/$base -change $dep_i386 @executable_path/../Frameworks/$base"
319 dep_arm64=`echo $dep | sed -e "s/\/x86_64\//\/arm64\//g"`
320 changes="$changes -change $dep @executable_path/../Frameworks/$base -change $dep_arm64 @executable_path/../Frameworks/$base"
322 changes="$changes -change $dep @executable_path/../Frameworks/$base"
325 if test "x$changes" != "x"; then
326 install_name_tool $changes -id `basename "$obj"` "$obj"
331 # param $1 directory things should be relinked into
332 # $2 list of things that link to other things
333 function relink_absolute {
334 to_relink=`echo $to_relink | sed -e "s/\+//g"`
339 for obj in "${linkers[@]}"; do
340 deps=`otool -L "$obj" | awk '{print $1}' | egrep "($to_relink)" | egrep "($ENV|$ROOT|boost|libicu)"`
343 install_name_tool -change "$dep" "$target"/$base -id `basename "$obj"` "$obj"
349 codesign --deep --force --verify --verbose --options runtime --entitlements entitlements.plist --sign "Developer ID Application: Carl Hetherington (R82DXSR997)" "$1"
350 if [ "$?" != "0" ]; then
351 echo "Failed to sign $1"
357 # @param #1 .app directory
358 # @param #2 .pkg or ""
359 # @param #3 full name e.g. DCP-o-matic Batch Converter
364 tmp_dmg=dcpomatic_tmp.dmg
365 dmg="$full_name $version.dmg"
366 vol_name=DCP-o-matic-$version
370 if [ "$pkg" != "" ]; then
371 productsign --sign "Developer ID Installer: Carl Hetherington (R82DXSR997)" "$pkg" "signed_temp.pkg"
372 if [ "$?" != "0" ]; then
373 echo "Failed to sign .pkg"
376 mv signed_temp.pkg "$pkg"
380 cp -a "$appdir" $vol_name
381 if [ "$pkg" != "" ]; then
382 cp -a "$pkg" $vol_name
384 ln -s /Applications "$vol_name/Applications"
385 cat<<EOF > "$vol_name/READ ME.txt"
386 Welcome to DCP-o-matic! The first time you run the program there may be
387 a long (several-minute) delay while OS X checks the code for viruses and
388 other malware. Please be patient!
390 cat<<EOF > "$vol_name/READ ME.de_DE.txt"
391 Beim erstmaligen Start der DCP-o-matic Anwendungen kann ein längerer
392 Verifikationsvorgang auftreten. Dies ist von der OS X Sicherheitsumgebung
393 'Gatekeeper' verursacht. Dieser je nach Rechner teils minutenlange
394 Verifikationsvorgang ist gegenwärtig normal und nicht zu umgehen,
395 es ist kein Programmfehler. Warten sie die Verifikation für jede der
396 DCP-o-matic Anwendungen ab, bei weiteren Programmstarts wird sie nicht
400 if [ "$pkg" != "" ]; then
401 cat<<EOF > "$vol_name/READ ME.txt"
403 To run this software successfully you must install $pkg before running
408 if [ "$pkg" != "" ]; then
409 cat<<EOF > "$vol_name/READ ME.de_DE.txt"
411 To run this software successfully you must install $pkg before running
416 rm -f $tmp_dmg "$dmg"
417 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
418 attach=$(hdiutil attach -readwrite -noverify -noautoopen $tmp_dmg)
419 device=`echo $attach | egrep '^/dev/' | sed 1q | awk '{print $5}'`
423 tell application "Finder"
424 tell disk "'$vol_name'"
426 set current view of container window to icon view
427 set toolbar visible of container window to false
428 set statusbar visible of container window to false
429 set the bounds of container window to {400, 200, 1160, 600}
430 set the bounds of container window to {400, 200, 1160, 600}
431 set the bounds of container window to {400, 200, 1160, 600}
432 set theViewOptions to the icon view options of container window
433 set arrangement of theViewOptions to not arranged
434 set icon size of theViewOptions to 64
435 set position of item "'$appdir'" of container window to {90, 80}
436 set position of item "Applications" of container window to {265, 80}
437 set position of item "READ ME.txt" of container window to {430, 80}
438 set position of item "READ ME.de_DE.txt" of container window to {595, 80}
439 set position of item "DCP-o-matic Disk Writer.pkg" of container window to {90, 255}
442 update without registering applications
448 chmod -Rf go-w /Volumes/"$vol_name"/"$appdir"
451 hdiutil eject $device
452 hdiutil convert -format UDZO $tmp_dmg -imagekey zlib-level=9 -o "$dmg"
453 sips -i "$appdir/Contents/Resources/dcpomatic2.icns"
454 DeRez -only icns "$appdir/Contents/Resources/dcpomatic2.icns" > "$appdir/Contents/Resources/DCP-o-matic.rsrc"
455 Rez -append "$appdir/Contents/Resources/DCP-o-matic.rsrc" -o "$dmg"
460 codesign --verify --verbose --options runtime --entitlements entitlements.plist --sign "Developer ID Application: Carl Hetherington (R82DXSR997)" "$dmg"
470 approot="$appdir/Contents"
472 mkdir -p "$approot/MacOS"
473 mkdir -p "$approot/Frameworks"
474 mkdir -p "$approot/Resources"
476 to_relink="dcpomatic"
477 copy_libs "$approot/Frameworks"
478 copy_resources "$approot/Resources"
483 # copy() writes the universal binary to arm64
487 # copy() writes the universal binary to i386
496 setup "DCP-o-matic 2.app"
497 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2 "$approot/MacOS"
498 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_cli "$approot/MacOS"
499 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_create "$approot/MacOS"
500 copy $ROOT bin/ffprobe "$approot/MacOS"
501 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
502 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2.Info.plist "$approot/Info.plist"
503 rl=("$approot/MacOS/dcpomatic2" "$approot/MacOS/dcpomatic2_cli" "$approot/MacOS/dcpomatic2_create" "$approot/MacOS/ffprobe" "$approot/Frameworks/"*.dylib)
504 relink_relative "${rl[@]}"
505 make_dmg "$appdir" "" "DCP-o-matic"
507 # DCP-o-matic KDM Creator
508 setup "DCP-o-matic 2 KDM Creator.app"
509 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_kdm "$approot/MacOS"
510 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_kdm_cli "$approot/MacOS"
511 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
512 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_kdm.Info.plist "$approot/Info.plist"
513 rl=("$approot/MacOS/dcpomatic2_kdm" "$approot/MacOS/dcpomatic2_kdm_cli" "$approot/Frameworks/"*.dylib)
514 relink_relative "${rl[@]}"
515 make_dmg "$appdir" "" "DCP-o-matic KDM Creator"
517 # DCP-o-matic Encode Server
518 setup "DCP-o-matic 2 Encode Server.app"
519 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_server "$approot/MacOS"
520 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_server_cli "$approot/MacOS"
521 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
522 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_server.Info.plist "$approot/Info.plist"
523 rl=("$approot/MacOS/dcpomatic2_server" "$approot/MacOS/dcpomatic2_server_cli" "$approot/Frameworks/"*.dylib)
524 relink_relative "${rl[@]}"
525 make_dmg "$appdir" "" "DCP-o-matic Encode Server"
527 # DCP-o-matic Batch Converter
528 setup "DCP-o-matic 2 Batch converter.app"
529 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_batch "$approot/MacOS"
530 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
531 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_batch.Info.plist "$approot/Info.plist"
532 rl=("$approot/MacOS/dcpomatic2_batch" "$approot/Frameworks/"*.dylib)
533 relink_relative "${rl[@]}"
534 make_dmg "$appdir" "" "DCP-o-matic Batch Converter"
537 setup "DCP-o-matic 2 Player.app"
538 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_player "$approot/MacOS"
539 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
540 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_player.Info.plist "$approot/Info.plist"
541 rl=("$approot/MacOS/dcpomatic2_player" "$approot/Frameworks/"*.dylib)
542 relink_relative "${rl[@]}"
543 make_dmg "$appdir" "" "DCP-o-matic Player"
545 # DCP-o-matic Playlist Editor
546 setup "DCP-o-matic 2 Playlist Editor.app"
547 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_playlist "$approot/MacOS"
548 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
549 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_playlist.Info.plist "$approot/Info.plist"
550 rl=("$approot/MacOS/dcpomatic2_playlist" "$approot/Frameworks/"*.dylib)
551 relink_relative "${rl[@]}"
552 make_dmg "$appdir" "" "DCP-o-matic Playlist Editor"
554 # DCP-o-matic Combiner
555 setup "DCP-o-matic 2 Combiner.app"
556 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_combiner "$approot/MacOS"
557 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
558 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_combiner.Info.plist "$approot/Info.plist"
559 rl=("$approot/MacOS/dcpomatic2_combiner" "$approot/Frameworks/"*.dylib)
560 relink_relative "${rl[@]}"
561 make_dmg "$appdir" "" "DCP-o-matic Combiner"
563 # DCP-o-matic Disk Writer .app
564 setup "DCP-o-matic 2 Disk Writer.app"
565 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_disk "$approot/MacOS"
566 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
567 cp $prefix/src/dcpomatic/platform/osx/uninstall_disk.applescript "$approot/Resources"
568 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_disk.Info.plist "$approot/Info.plist"
569 rl=("$approot/MacOS/dcpomatic2_disk" "$approot/Frameworks/"*.dylib)
570 relink_relative "${rl[@]}"
572 # DCP-o-matic Disk Writer daemon .pkg
574 pkgbase=tmp-disk-writer
578 pkgroot=$pkgbase/root
580 mkdir -p $pkgroot/Library/LaunchDaemons
581 cat > $pkgroot/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist <<EOF
582 <?xml version="1.0" encoding="UTF-8"?>
583 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
584 <plist version="1.0">
587 <string>com.dcpomatic.disk.writer</string>
588 <key>ProgramArguments</key>
590 <string>/Library/Application Support/com.dcpomatic/dcpomatic2_disk_writer</string>
592 <key>EnvironmentVariables</key>
594 <key>DYLD_LIBRARY_PATH</key>
595 <string><![CDATA[/Library/Application Support/com.dcpomatic]]></string>
597 <key>StandardOutPath</key>
598 <string>/var/log/dcpomatic_disk_writer_out.log</string>
599 <key>StandardErrorPath</key>
600 <string>/var/log/dcpomatic_disk_writer_err.log</string>
601 <key>LaunchEvents</key>
603 <key>com.apple.notifyd.matching</key>
605 <key>com.dcpomatic.disk.writer.start</key>
607 <key>Notification</key>
608 <string>com.dcpomatic.disk.writer.start</string>
616 # Get the binaries together in $pkgbin then move them to the
617 # place with spaces in the filename to avoid some of the pain of escaping
620 copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_disk_writer "$pkgbin"
623 rl=("$pkgbin/dcpomatic2_disk_writer" "$pkgbin/"*.dylib)
624 relink_absolute "/Library/Application Support/com.dcpomatic" "${rl[@]}"
626 mkdir $pkgbase/scripts
627 cat > $pkgbase/scripts/postinstall <<EOF
629 /bin/launchctl unload "/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist"
630 /bin/launchctl load "/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist"
633 chmod gou+x $pkgbase/scripts/postinstall
635 find "$pkgbin" -iname "*.dylib" -print0 | while IFS= read -r -d '' f; do
638 sign "$pkgbin/dcpomatic2_disk_writer"
640 mkdir -p "$pkgroot/Library/Application Support/com.dcpomatic"
641 mv $pkgbin/* "$pkgroot/Library/Application Support/com.dcpomatic/"
642 pkgbuild --root $pkgroot --identifier com.dcpomatic.disk.writer --scripts $pkgbase/scripts "DCP-o-matic Disk Writer.pkg"
644 make_dmg "$appdir" "DCP-o-matic Disk Writer.pkg" "DCP-o-matic Disk Writer"