3 # Syntax: make_dmg.sh <builddir>
5 # e.g. make_dmg.sh /Users/carl/cdist
9 version=`cat wscript | egrep ^VERSION | awk '{print $3}' | sed -e "s/'//g"`
11 # DMG size in megabytes
13 WORK=build/platform/osx
14 ENV=/Users/carl/Environments/osx/10.6
17 appdir="DCP-o-matic.app"
18 approot=$appdir/Contents
21 resources=$approot/Resources
26 mkdir -p $WORK/$resources
28 function universal_copy {
32 ln -s $(readlink $f) $3/`basename $f`
34 g=`echo $f | sed -e "s/\/32\//\/64\//g"`
36 lipo -create $f $g -output $3/`basename $f`
41 universal_copy $ROOT src/dcpomatic/build/src/tools/dcpomatic $WORK/$macos
42 universal_copy $ROOT src/dcpomatic/build/src/tools/dcpomatic_cli $WORK/$macos
43 universal_copy $ROOT src/dcpomatic/build/src/tools/dcpomatic_server_cli $WORK/$macos
44 universal_copy $ROOT src/dcpomatic/build/src/tools/dcpomatic_batch $WORK/$macos
45 universal_copy $ROOT src/dcpomatic/build/src/lib/libdcpomatic.dylib $WORK/$libs
46 universal_copy $ROOT src/dcpomatic/build/src/wx/libdcpomatic-wx.dylib $WORK/$libs
47 universal_copy $ROOT lib/libcxml.dylib $WORK/$libs
48 universal_copy $ROOT lib/libdcp.dylib $WORK/$libs
49 universal_copy $ROOT lib/libasdcp-libdcp.dylib $WORK/$libs
50 universal_copy $ROOT lib/libkumu-libdcp.dylib $WORK/$libs
51 universal_copy $ROOT lib/libopenjpeg*.dylib $WORK/$libs
52 universal_copy $ROOT lib/libavdevice*.dylib $WORK/$libs
53 universal_copy $ROOT lib/libavformat*.dylib $WORK/$libs
54 universal_copy $ROOT lib/libavfilter*.dylib $WORK/$libs
55 universal_copy $ROOT lib/libavutil*.dylib $WORK/$libs
56 universal_copy $ROOT lib/libavcodec*.dylib $WORK/$libs
57 universal_copy $ROOT lib/libswscale*.dylib $WORK/$libs
58 universal_copy $ROOT lib/libswresample*.dylib $WORK/$libs
59 universal_copy $ROOT bin/ffprobe $WORK/$macos
60 universal_copy $ENV lib/libboost_system.dylib $WORK/$libs
61 universal_copy $ENV lib/libboost_filesystem.dylib $WORK/$libs
62 universal_copy $ENV lib/libboost_thread.dylib $WORK/$libs
63 universal_copy $ENV lib/libboost_date_time.dylib $WORK/$libs
64 universal_copy $ENV lib/libxml++-2.6*.dylib $WORK/$libs
65 universal_copy $ENV lib/libxml2*.dylib $WORK/$libs
66 universal_copy $ENV lib/libglibmm-2.4*.dylib $WORK/$libs
67 universal_copy $ENV lib/libgobject*.dylib $WORK/$libs
68 universal_copy $ENV lib/libgthread*.dylib $WORK/$libs
69 universal_copy $ENV lib/libgmodule*.dylib $WORK/$libs
70 universal_copy $ENV lib/libsigc*.dylib $WORK/$libs
71 universal_copy $ENV lib/libglib-2*.dylib $WORK/$libs
72 universal_copy $ENV lib/libintl*.dylib $WORK/$libs
73 universal_copy $ENV lib/libsndfile*.dylib $WORK/$libs
74 universal_copy $ENV lib/libMagick++*.dylib $WORK/$libs
75 universal_copy $ENV lib/libMagickCore*.dylib $WORK/$libs
76 universal_copy $ENV lib/libMagickWand*.dylib $WORK/$libs
77 universal_copy $ENV lib/libssh*.dylib $WORK/$libs
78 universal_copy $ENV lib/libwx*.dylib $WORK/$libs
79 universal_copy $ENV lib/libfontconfig*.dylib $WORK/$libs
80 universal_copy $ENV lib/libfreetype*.dylib $WORK/$libs
81 universal_copy $ENV lib/libexpat*.dylib $WORK/$libs
82 universal_copy $ENV lib/libltdl*.dylib $WORK/$libs
83 universal_copy $ENV lib/libxmlsec1*.dylib $WORK/$libs
84 universal_copy $ENV lib/libzip*.dylib $WORK/$libs
85 universal_copy $ENV lib/libquickmail*.dylib $WORK/$libs
86 universal_copy $ENV lib/libcurl*.dylib $WORK/$libs
87 universal_copy $ENV lib/libffi*.dylib $WORK/$libs
88 universal_copy $ENV lib/libiconv*.dylib $WORK/$libs
90 for obj in $WORK/$macos/dcpomatic $WORK/$macos/dcpomatic_batch $WORK/$macos/dcpomatic_cli $WORK/$macos/dcpomatic_server_cli $WORK/$macos/ffprobe $WORK/$libs/*.dylib; do
91 deps=`otool -L $obj | awk '{print $1}' | egrep "(/Users/carl|libboost|libssh|libltdl|libxmlsec)"`
95 # $dep will be a path within 64/; make a 32/ path too
96 dep32=`echo $dep | sed -e "s/\/64\//\/32\//g"`
97 changes="$changes -change $dep @executable_path/../lib/$base -change $dep32 @executable_path/../lib/$base"
99 if test "x$changes" != "x"; then
100 install_name_tool $changes $obj
104 cp build/platform/osx/Info.plist $WORK/$approot
105 cp icons/dcpomatic.icns $WORK/$resources/DCP-o-matic.icns
106 cp icons/colour_conversions.png $WORK/$resources
107 cp icons/defaults.png $WORK/$resources
108 cp icons/kdm_email.png $WORK/$resources
109 cp icons/servers.png $WORK/$resources
110 cp icons/tms.png $WORK/$resources
113 for lang in de_DE es_ES fr_FR it_IT sv_SE nl_NL; do
114 mkdir $WORK/$resources/$lang
115 cp build/src/lib/mo/$lang/*.mo $WORK/$resources/$lang
116 cp build/src/wx/mo/$lang/*.mo $WORK/$resources/$lang
117 cp build/src/tools/mo/$lang/*.mo $WORK/$resources/$lang
120 tmp_dmg=$WORK/dcpomatic_tmp.dmg
121 dmg="$WORK/DCP-o-matic $version.dmg"
122 vol_name=DCP-o-matic-$version
124 mkdir -p $WORK/$vol_name
125 cp -r $WORK/$appdir $WORK/$vol_name
126 ln -s /Applications $WORK/$vol_name/Applications
128 rm -f $tmp_dmg "$dmg"
129 hdiutil create -srcfolder $WORK/$vol_name -volname $vol_name -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -size $DMG_SIZE $tmp_dmg
130 attach=$(hdiutil attach -readwrite -noverify -noautoopen $tmp_dmg)
131 device=`echo $attach | egrep '^/dev/' | sed 1q | awk '{print $5}'`
135 tell application "Finder"
136 tell disk "'$vol_name'"
138 set current view of container window to icon view
139 set toolbar visible of container window to false
140 set statusbar visible of container window to false
141 set the bounds of container window to {400, 200, 790, 410}
142 set theViewOptions to the icon view options of container window
143 set arrangement of theViewOptions to not arranged
144 set icon size of theViewOptions to 64
145 set position of item "DCP-o-matic.app" of container window to {90, 80}
146 set position of item "Applications" of container window to {310, 80}
149 update without registering applications
155 chmod -Rf go-w /Volumes/"$vol_name"/$appdir
158 hdiutil eject $device
159 hdiutil convert -format UDZO $tmp_dmg -imagekey zlib-level=9 -o "$dmg"
160 sips -i $WORK/$resources/DCP-o-matic.icns
161 DeRez -only icns $WORK/$resources/DCP-o-matic.icns > $WORK/$resources/DCP-o-matic.rsrc
162 Rez -append $WORK/$resources/DCP-o-matic.rsrc -o "$dmg"