Merge branch '1.0' into 1.0-seek
[dcpomatic.git] / platform / osx / make_dmg.sh
index 97ec8fdf9d31eb696ca30504c195f3625461b996..6d0ce484c5cfaff8df38557a9194dea77fbef99c 100644 (file)
@@ -1,4 +1,10 @@
 #!/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"`
 
 
 version=`cat wscript | egrep ^VERSION | awk '{print $3}' | sed -e "s/'//g"`
 
@@ -6,7 +12,7 @@ version=`cat wscript | egrep ^VERSION | awk '{print $3}' | sed -e "s/'//g"`
 DMG_SIZE=256
 WORK=build/platform/osx
 ENV=/Users/carl/Environments/osx
 DMG_SIZE=256
 WORK=build/platform/osx
 ENV=/Users/carl/Environments/osx
-ROOT=/Users/carl/cdist
+ROOT=$1
 
 appdir="DCP-o-matic.app"
 approot=$appdir/Contents
 
 appdir="DCP-o-matic.app"
 approot=$appdir/Contents
@@ -33,6 +39,8 @@ function universal_copy {
 }
 
 universal_copy $ROOT src/dvdomatic/build/src/tools/dcpomatic $WORK/$macos
 }
 
 universal_copy $ROOT src/dvdomatic/build/src/tools/dcpomatic $WORK/$macos
+universal_copy $ROOT src/dvdomatic/build/src/tools/dcpomatic_cli $WORK/$macos
+universal_copy $ROOT src/dvdomatic/build/src/tools/dcpomatic_server_cli $WORK/$macos
 universal_copy $ROOT src/dvdomatic/build/src/lib/libdcpomatic.dylib $WORK/$libs
 universal_copy $ROOT src/dvdomatic/build/src/wx/libdcpomatic-wx.dylib $WORK/$libs
 universal_copy $ROOT lib/libcxml.dylib $WORK/$libs
 universal_copy $ROOT src/dvdomatic/build/src/lib/libdcpomatic.dylib $WORK/$libs
 universal_copy $ROOT src/dvdomatic/build/src/wx/libdcpomatic-wx.dylib $WORK/$libs
 universal_copy $ROOT lib/libcxml.dylib $WORK/$libs
@@ -73,13 +81,19 @@ universal_copy $ENV lib/libfreetype*.dylib $WORK/$libs
 universal_copy $ENV lib/libexpat*.dylib $WORK/$libs
 universal_copy $ENV lib/libltdl*.dylib $WORK/$libs
 universal_copy $ENV lib/libxmlsec1*.dylib $WORK/$libs
 universal_copy $ENV lib/libexpat*.dylib $WORK/$libs
 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
 
 for obj in $WORK/$macos/dcpomatic $WORK/$macos/ffprobe $WORK/$libs/*.dylib; do
 
 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)"`
+  deps=`otool -L $obj | awk '{print $1}' | egrep "(/Users/carl|libboost|libssh|libltdl)"`
   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
@@ -94,14 +108,14 @@ dmg="$WORK/DCP-o-matic $version.dmg"
 vol_name=DCP-o-matic-$version
 
 mkdir -p $WORK/$vol_name
 vol_name=DCP-o-matic-$version
 
 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"
@@ -114,22 +128,19 @@ 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 "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 "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
-           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"
 sips -i $WORK/$resources/DCP-o-matic.icns
 hdiutil eject $device
 hdiutil convert -format UDZO $tmp_dmg -imagekey zlib-level=9 -o "$dmg"
 sips -i $WORK/$resources/DCP-o-matic.icns