Merge branch 'master' of ssh://carlh.dyndns.org/home/carl/git/dcpomatic
[dcpomatic.git] / platform / osx / make_dmg.sh
index a421b6577779e7f9caa9bb587cb1ac2ed63e2537..faa7f44ed41fe46d97ce00ddb61886ae769ca636 100644 (file)
@@ -1,14 +1,20 @@
 #!/bin/bash
 #!/bin/bash
+#
+# Syntax: make_dmg.sh <builddir>
+#
+# e.g. make_dmg.sh /Users/carl/cdist
+
+set -e
 
 version=`cat wscript | egrep ^VERSION | awk '{print $3}' | sed -e "s/'//g"`
 
 # DMG size in megabytes
 DMG_SIZE=256
 WORK=build/platform/osx
 
 version=`cat wscript | egrep ^VERSION | awk '{print $3}' | sed -e "s/'//g"`
 
 # DMG size in megabytes
 DMG_SIZE=256
 WORK=build/platform/osx
-ENV=/Users/carl/Environments/osx
-ROOT=/Users/carl/cdist
+ENV=/Users/carl/Environments/osx/10.6
+ROOT=$1
 
 
-appdir="DVD-o-matic.app"
+appdir="DCP-o-matic.app"
 approot=$appdir/Contents
 libs=$approot/lib
 macos=$approot/MacOS
 approot=$appdir/Contents
 libs=$approot/lib
 macos=$approot/MacOS
@@ -32,20 +38,25 @@ function universal_copy {
     done
 }
 
     done
 }
 
-universal_copy $ROOT src/dvdomatic/build/src/tools/dvdomatic $WORK/$macos
-universal_copy $ROOT src/dvdomatic/build/src/lib/libdvdomatic.dylib $WORK/$libs
-universal_copy $ROOT src/dvdomatic/build/src/wx/libdvdomatic-wx.dylib $WORK/$libs
+universal_copy $ROOT src/dcpomatic/build/src/tools/dcpomatic $WORK/$macos
+universal_copy $ROOT src/dcpomatic/build/src/tools/dcpomatic_cli $WORK/$macos
+universal_copy $ROOT src/dcpomatic/build/src/tools/dcpomatic_server_cli $WORK/$macos
+universal_copy $ROOT src/dcpomatic/build/src/tools/dcpomatic_batch $WORK/$macos
+universal_copy $ROOT src/dcpomatic/build/src/lib/libdcpomatic.dylib $WORK/$libs
+universal_copy $ROOT src/dcpomatic/build/src/wx/libdcpomatic-wx.dylib $WORK/$libs
+universal_copy $ROOT lib/libcxml.dylib $WORK/$libs
 universal_copy $ROOT lib/libdcp.dylib $WORK/$libs
 universal_copy $ROOT lib/libasdcp-libdcp.dylib $WORK/$libs
 universal_copy $ROOT lib/libkumu-libdcp.dylib $WORK/$libs
 universal_copy $ROOT lib/libopenjpeg*.dylib $WORK/$libs
 universal_copy $ROOT lib/libdcp.dylib $WORK/$libs
 universal_copy $ROOT lib/libasdcp-libdcp.dylib $WORK/$libs
 universal_copy $ROOT lib/libkumu-libdcp.dylib $WORK/$libs
 universal_copy $ROOT lib/libopenjpeg*.dylib $WORK/$libs
+universal_copy $ROOT lib/libavdevice*.dylib $WORK/$libs
 universal_copy $ROOT lib/libavformat*.dylib $WORK/$libs
 universal_copy $ROOT lib/libavfilter*.dylib $WORK/$libs
 universal_copy $ROOT lib/libavutil*.dylib $WORK/$libs
 universal_copy $ROOT lib/libavcodec*.dylib $WORK/$libs
 universal_copy $ROOT lib/libswscale*.dylib $WORK/$libs
 universal_copy $ROOT lib/libavformat*.dylib $WORK/$libs
 universal_copy $ROOT lib/libavfilter*.dylib $WORK/$libs
 universal_copy $ROOT lib/libavutil*.dylib $WORK/$libs
 universal_copy $ROOT lib/libavcodec*.dylib $WORK/$libs
 universal_copy $ROOT lib/libswscale*.dylib $WORK/$libs
-universal_copy $ROOT lib/libpostproc*.dylib $WORK/$libs
 universal_copy $ROOT lib/libswresample*.dylib $WORK/$libs
 universal_copy $ROOT lib/libswresample*.dylib $WORK/$libs
+universal_copy $ROOT bin/ffprobe $WORK/$macos
 universal_copy $ENV lib/libboost_system.dylib $WORK/$libs
 universal_copy $ENV lib/libboost_filesystem.dylib $WORK/$libs
 universal_copy $ENV lib/libboost_thread.dylib $WORK/$libs
 universal_copy $ENV lib/libboost_system.dylib $WORK/$libs
 universal_copy $ENV lib/libboost_filesystem.dylib $WORK/$libs
 universal_copy $ENV lib/libboost_thread.dylib $WORK/$libs
@@ -68,35 +79,57 @@ universal_copy $ENV lib/libwx*.dylib $WORK/$libs
 universal_copy $ENV lib/libfontconfig*.dylib $WORK/$libs
 universal_copy $ENV lib/libfreetype*.dylib $WORK/$libs
 universal_copy $ENV lib/libexpat*.dylib $WORK/$libs
 universal_copy $ENV lib/libfontconfig*.dylib $WORK/$libs
 universal_copy $ENV lib/libfreetype*.dylib $WORK/$libs
 universal_copy $ENV lib/libexpat*.dylib $WORK/$libs
-
-for obj in $WORK/$macos/dvdomatic $WORK/$libs/*.dylib; do
-  deps=`otool -L $obj | awk '{print $1}' | egrep "(/Users/carl|libboost|libssh)"`
+universal_copy $ENV lib/libltdl*.dylib $WORK/$libs
+universal_copy $ENV lib/libxmlsec1*.dylib $WORK/$libs
+universal_copy $ENV lib/libzip*.dylib $WORK/$libs
+universal_copy $ENV lib/libquickmail*.dylib $WORK/$libs
+universal_copy $ENV lib/libcurl*.dylib $WORK/$libs
+universal_copy $ENV lib/libffi*.dylib $WORK/$libs
+universal_copy $ENV lib/libiconv*.dylib $WORK/$libs
+
+for obj in $WORK/$macos/dcpomatic $WORK/$macos/ffprobe $WORK/$libs/*.dylib; do
+  deps=`otool -L $obj | awk '{print $1}' | egrep "(/Users/carl|libboost|libssh|libltdl|libxmlsec)"`
   changes=""
   for dep in $deps; do
     base=`basename $dep`
   changes=""
   for dep in $deps; do
     base=`basename $dep`
-    changes="$changes -change $dep @executable_path/../lib/$base"
+    # $dep will be a path within 64/; make a 32/ path too
+    dep32=`echo $dep | sed -e "s/\/64\//\/32\//g"`
+    changes="$changes -change $dep @executable_path/../lib/$base -change $dep32 @executable_path/../lib/$base"
   done
   if test "x$changes" != "x"; then
     install_name_tool $changes $obj
   done
   if test "x$changes" != "x"; then
     install_name_tool $changes $obj
-  fi  
+  fi
 done
 
 cp build/platform/osx/Info.plist $WORK/$approot
 done
 
 cp build/platform/osx/Info.plist $WORK/$approot
-cp icons/dvdomatic.icns $WORK/$resources/DVD-o-matic.icns
+cp icons/dcpomatic.icns $WORK/$resources/DCP-o-matic.icns
+cp icons/colour_conversions.png $WORK/$resources
+cp icons/defaults.png $WORK/$resources
+cp icons/kdm_email.png $WORK/$resources
+cp icons/servers.png $WORK/$resources
+cp icons/tms.png $WORK/$resources
+
+# i18n: .mo files
+for lang in de_DE es_ES fr_FR it_IT sv_SE nl_NL; do
+  mkdir $WORK/$resources/$lang
+  cp build/src/lib/mo/$lang/*.mo $WORK/$resources/$lang
+  cp build/src/wx/mo/$lang/*.mo $WORK/$resources/$lang
+  cp build/src/tools/mo/$lang/*.mo $WORK/$resources/$lang
+done
 
 
-tmp_dmg=$WORK/dvdomatic_tmp.dmg
-dmg="$WORK/DVD-o-matic $version.dmg"
-vol_name=DVD-o-matic-$version
+tmp_dmg=$WORK/dcpomatic_tmp.dmg
+dmg="$WORK/DCP-o-matic $version.dmg"
+vol_name=DCP-o-matic-$version
 
 mkdir -p $WORK/$vol_name
 
 mkdir -p $WORK/$vol_name
+cp -r $WORK/$appdir $WORK/$vol_name
+ln -s /Applications $WORK/$vol_name/Applications
 
 rm -f $tmp_dmg "$dmg"
 
 rm -f $tmp_dmg "$dmg"
-hdiutil create -megabytes $DMG_SIZE $tmp_dmg
-device=$(hdid -nomount $tmp_dmg | grep Apple_HFS | cut -f 1 -d ' ')
-newfs_hfs -v ${vol_name} $device
-mount -t hfs "$device" $WORK/$vol_name
-
-cp -r $WORK/$appdir $WORK/$vol_name
+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
+attach=$(hdiutil attach -readwrite -noverify -noautoopen $tmp_dmg)
+device=`echo $attach | egrep '^/dev/' | sed 1q | awk '{print $5}'`
+sleep 5
 
 echo '
   tell application "Finder"
 
 echo '
   tell application "Finder"
@@ -109,26 +142,23 @@ echo '
            set theViewOptions to the icon view options of container window
            set arrangement of theViewOptions to not arranged
            set icon size of theViewOptions to 64
            set theViewOptions to the icon view options of container window
            set arrangement of theViewOptions to not arranged
            set icon size of theViewOptions to 64
-           make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
-           set position of item "DVD-o-matic.app" of container window to {90, 80}
+           set position of item "DCP-o-matic.app" of container window to {90, 80}
            set position of item "Applications" of container window to {310, 80}
            close
            open
            update without registering applications
            delay 5
            set position of item "Applications" of container window to {310, 80}
            close
            open
            update without registering applications
            delay 5
-           eject
      end tell
    end tell
 ' | osascript
 
      end tell
    end tell
 ' | osascript
 
-chmod -Rf go-w $WORK/mnt
+chmod -Rf go-w /Volumes/"$vol_name"/$appdir
 sync
 
 sync
 
-umount $device
 hdiutil eject $device
 hdiutil convert -format UDZO $tmp_dmg -imagekey zlib-level=9 -o "$dmg"
 hdiutil eject $device
 hdiutil convert -format UDZO $tmp_dmg -imagekey zlib-level=9 -o "$dmg"
-sips -i $WORK/$resources/DVD-o-matic.icns
-DeRez -only icns $WORK/$resources/DVD-o-matic.icns > $WORK/$resources/DVD-o-matic.rsrc
-Rez -append $WORK/$resources/DVD-o-matic.rsrc -o "$dmg"
+sips -i $WORK/$resources/DCP-o-matic.icns
+DeRez -only icns $WORK/$resources/DCP-o-matic.icns > $WORK/$resources/DCP-o-matic.rsrc
+Rez -append $WORK/$resources/DCP-o-matic.rsrc -o "$dmg"
 SetFile -a C "$dmg"
 
 SetFile -a C "$dmg"