Merge master.
[dcpomatic.git] / platform / osx / make_dmg.sh
1 #!/bin/bash
2
3 version=`cat wscript | egrep ^VERSION | awk '{print $3}' | sed -e "s/'//g"`
4
5 # DMG size in megabytes
6 DMG_SIZE=256
7 WORK=build/platform/osx
8 ENV=/Users/carl/Environments/osx/10.8
9 DEPS=/Users/carl/cdist
10
11 appdir="DVD-o-matic.app"
12 approot=$appdir/Contents
13 libs=$approot/lib
14 macos=$approot/MacOS
15 resources=$approot/Resources
16
17 rm -rf $WORK/$appdir
18 mkdir -p $WORK/$macos
19 mkdir -p $WORK/$libs
20 mkdir -p $WORK/$resources
21
22 cp build/src/tools/dcpomatic $WORK/$macos/
23 cp build/src/lib/libdcpomatic.dylib $WORK/$libs/
24 cp build/src/wx/libdcpomatic-wx.dylib $WORK/$libs/
25 cp $DEPS/lib/libdcp.dylib $WORK/$libs/
26 cp $DEPS/lib/libasdcp-libdcp.dylib $WORK/$libs/
27 cp $DEPS/lib/libkumu-libdcp.dylib $WORK/$libs/
28 cp $DEPS/lib/libopenjpeg*.dylib $WORK/$libs/
29 cp $DEPS/lib/libavformat*.dylib $WORK/$libs/
30 cp $DEPS/lib/libavfilter*.dylib $WORK/$libs/
31 cp $DEPS/lib/libavutil*.dylib $WORK/$libs/
32 cp $DEPS/lib/libavcodec*.dylib $WORK/$libs/
33 cp $DEPS/lib/libswscale*.dylib $WORK/$libs/
34 cp $DEPS/lib/libpostproc*.dylib $WORK/$libs/
35 cp $DEPS/lib/libswresample*.dylib $WORK/$libs/
36 cp $ENV/lib/libboost_system.dylib $WORK/$libs/
37 cp $ENV/lib/libboost_filesystem.dylib $WORK/$libs/
38 cp $ENV/lib/libboost_thread.dylib $WORK/$libs/
39 cp $ENV/lib/libboost_date_time.dylib $WORK/$libs/
40 cp $ENV/lib/libssl*.dylib $WORK/$libs/
41 cp $ENV/lib/libcrypto*.dylib $WORK/$libs/
42 cp $ENV/lib/libxml++-2.6*.dylib $WORK/$libs/
43 cp $ENV/lib/libxml2*.dylib $WORK/$libs/
44 cp $ENV/lib/libglibmm-2.4*.dylib $WORK/$libs/
45 cp $ENV/lib/libgobject*.dylib $WORK/$libs/
46 cp $ENV/lib/libgthread*.dylib $WORK/$libs/
47 cp $ENV/lib/libgmodule*.dylib $WORK/$libs/
48 cp $ENV/lib/libsigc*.dylib $WORK/$libs/
49 cp $ENV/lib/libglib-2*.dylib $WORK/$libs/
50 cp $ENV/lib/libintl*.dylib $WORK/$libs/
51 cp $ENV/lib/libsndfile*.dylib $WORK/$libs/
52 cp $ENV/lib/libMagick++*.dylib $WORK/$libs/
53 cp $ENV/lib/libMagickCore*.dylib $WORK/$libs/
54 cp $ENV/lib/libMagickWand*.dylib $WORK/$libs/
55 cp $ENV/lib/libssh*.dylib $WORK/$libs/
56 cp $ENV/lib/libwx*.dylib $WORK/$libs/
57 cp $ENV/lib/libfontconfig*.dylib $WORK/$libs/
58 cp $ENV/lib/libfreetype*.dylib $WORK/$libs/
59 cp $ENV/lib/libexpat*.dylib $WORK/$libs/
60
61 for obj in $WORK/$macos/dcpomatic $WORK/$libs/*.dylib; do
62   deps=`otool -L $obj | awk '{print $1}' | egrep "(/Users/carl|libboost|libssh)"`
63   changes=""
64   for dep in $deps; do
65     base=`basename $dep`
66     changes="$changes -change $dep @executable_path/../lib/$base"
67   done
68   if test "x$changes" != "x"; then
69     install_name_tool $changes $obj
70   fi  
71 done
72
73 pwd
74 cp build/platform/osx/Info.plist $WORK/$approot
75 cp icons/dcpomatic.icns $WORK/$resources/DVD-o-matic.icns
76
77 tmp_dmg=$WORK/dcpomatic_tmp.dmg
78 dmg="$WORK/DCP-o-matic $version.dmg"
79 vol_name=DCP-o-matic-$version
80
81 mkdir -p $WORK/$vol_name
82
83 rm -f $tmp_dmg "$dmg"
84 hdiutil create -megabytes $DMG_SIZE $tmp_dmg
85 device=$(hdid -nomount $tmp_dmg | grep Apple_HFS | cut -f 1 -d ' ')
86 newfs_hfs -v ${vol_name} $device
87 mount -t hfs "$device" $WORK/$vol_name
88
89 cp -r $WORK/$appdir $WORK/$vol_name
90
91 echo '
92   tell application "Finder"
93     tell disk "'$vol_name'"
94            open
95            set current view of container window to icon view
96            set toolbar visible of container window to false
97            set statusbar visible of container window to false
98            set the bounds of container window to {400, 200, 790, 410}
99            set theViewOptions to the icon view options of container window
100            set arrangement of theViewOptions to not arranged
101            set icon size of theViewOptions to 64
102            make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
103            set position of item "DCP-o-matic.app" of container window to {90, 80}
104            set position of item "Applications" of container window to {310, 80}
105            close
106            open
107            update without registering applications
108            delay 5
109            eject
110      end tell
111    end tell
112 ' | osascript
113
114 chmod -Rf go-w $WORK/mnt
115 sync
116
117 umount $device
118 hdiutil eject $device
119 hdiutil convert -format UDZO $tmp_dmg -imagekey zlib-level=9 -o "$dmg"
120 sips -i $WORK/$resources/DCP-o-matic.icns
121 DeRez -only icns $WORK/$resources/DCP-o-matic.icns > $WORK/$resources/DCP-o-matic.rsrc
122 Rez -append $WORK/$resources/DCP-o-matic.rsrc -o "$dmg"
123 SetFile -a C "$dmg"
124