More attempts to fix spaces in filenames.
[dcpomatic.git] / platform / osx / make_dmg.sh
index 38dc9193f1184ad17f29c9df0d3fbb499b0eaf65..19588f0351c72ed7d8294299f911fe6dd6d96234 100644 (file)
@@ -230,7 +230,7 @@ function copy_resources {
 }
 
 # param $1 list of things that link to other things
-function relink {
+function relink_relative {
     to_relink=`echo $to_relink | sed -e "s/\+//g"`
     local linkers=("$@")
 
@@ -253,6 +253,36 @@ function relink {
     done
 }
 
+# param $1 directory containg things
+#       $2 list of things that link to other things
+function relink_absolute {
+    to_relink=`echo $to_relink | sed -e "s/\+//g"`
+    target=$1
+    shift
+    local linkers=("$@")
+
+    for obj in "${linkers[@]}"; do
+       deps=`otool -L "$obj" | awk '{print $1}' | egrep "($to_relink)" | egrep "($ENV|$ROOT|boost|libicu)"`
+       changes=""
+       for dep in $deps; do
+           base=`basename $dep`
+           changes="$changes -change "$dep" \"$target/$base\""
+       done
+       if test "x$changes" != "x"; then
+           install_name_tool $changes -id "`basename "$obj"`" "$obj"
+       fi
+    done
+}
+
+function sign {
+    codesign --deep --force --verify --verbose --options runtime --sign "Developer ID Application: Carl Hetherington (R82DXSR997)" "$1"
+    if [ "$?" != "0" ]; then
+       echo "Failed to sign $1"
+       exit 1
+    fi
+}
+
+
 # @param #1 .app directory
 # @param #2 .pkg or ""
 # @param #3 full name e.g. DCP-o-matic Batch Converter
@@ -266,10 +296,15 @@ function make_dmg {
     dmg="$full_name $version.dmg"
     vol_name=DCP-o-matic-$version
 
-    codesign --deep --force --verify --verbose --options runtime --sign "Developer ID Application: Carl Hetherington (R82DXSR997)" "$appdir"
-    if [ "$?" != "0" ]; then
-       echo "Failed to sign .app"
-       exit 1
+    sign "$appdir"
+
+    if [ "$pkg" != "" ]; then
+       productsign --sign "Developer ID Installer: Carl Hetherington (R82DXSR997)" "$pkg" "signed_temp.pkg"
+       if [ "$?" != "0" ]; then
+           echo "Failed to sign .pkg"
+           exit 1
+       fi
+       mv signed_temp.pkg "$pkg"
     fi
 
     mkdir -p $vol_name
@@ -293,6 +328,22 @@ DCP-o-matic Anwendungen ab, bei weiteren Programmstarts wird sie nicht
 mehr auftreten.
 EOF
 
+    if [ "$pkg" != "" ]; then
+        cat<<EOF > "$vol_name/READ ME.txt"
+
+To run this software successfully you must install $pkg before running
+the .app
+EOF
+    fi
+
+    if [ "$pkg" != "" ]; then
+        cat<<EOF > "$vol_name/READ ME.de_DE.txt"
+
+To run this software successfully you must install $pkg before running
+the .app
+EOF
+
+    fi
     rm -f $tmp_dmg "$dmg"
     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
     attach=$(hdiutil attach -readwrite -noverify -noautoopen $tmp_dmg)
@@ -306,7 +357,7 @@ EOF
            set current view of container window to icon view
            set toolbar visible of container window to false
            set statusbar visible of container window to false
-           set the bounds of container window to {400, 200, 940, 300}
+           set the bounds of container window to {400, 200, 940, 600}
            set theViewOptions to the icon view options of container window
            set arrangement of theViewOptions to not arranged
            set icon size of theViewOptions to 64
@@ -314,6 +365,7 @@ EOF
            set position of item "Applications" of container window to {265, 80}
            set position of item "READ ME.txt" of container window to {430, 80}
            set position of item "READ ME.de_DE.txt" of container window to {595, 80}
+           set position of item "DCP-o-matic Disk Writer.pkg" of container window to {90, 255}
            close
            open
            update without registering applications
@@ -403,7 +455,7 @@ esac
 ##copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
 ##cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2.Info.plist "$approot/Info.plist"
 ##rl=("$approot/MacOS/dcpomatic2" "$approot/MacOS/dcpomatic2_cli" "$approot/MacOS/dcpomatic2_create" "$approot/MacOS/ffprobe" "$approot/Frameworks/"*.dylib)
-##relink "${rl[@]}"
+##relink_relative "${rl[@]}"
 ##make_dmg "$appdir" "" "DCP-o-matic" com.dcpomatic
 
 # DCP-o-matic KDM Creator
@@ -413,7 +465,7 @@ esac
 ##copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
 ##cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_kdm.Info.plist "$approot/Info.plist"
 ##rl=("$approot/MacOS/dcpomatic2_kdm" "$approot/MacOS/dcpomatic2_kdm_cli" "$approot/Frameworks/"*.dylib)
-##relink "${rl[@]}"
+##relink_relative "${rl[@]}"
 ##make_dmg "$appdir" "" "DCP-o-matic KDM Creator" com.dcpomatic.kdm
 
 # DCP-o-matic Encode Server
@@ -423,7 +475,7 @@ esac
 ##copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
 ##cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_server.Info.plist "$approot/Info.plist"
 ##rl=("$approot/MacOS/dcpomatic2_server" "$approot/MacOS/dcpomatic2_server_cli" "$approot/Frameworks/"*.dylib)
-##relink "${rl[@]}"
+##relink_relative "${rl[@]}"
 ##make_dmg "$appdir" "" "DCP-o-matic Encode Server" com.dcpomatic.server
 
 # DCP-o-matic Batch Converter
@@ -432,7 +484,7 @@ esac
 ##copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
 ##cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_batch.Info.plist "$approot/Info.plist"
 ##rl=("$approot/MacOS/dcpomatic2_batch" "$approot/Frameworks/"*.dylib)
-##relink "${rl[@]}"
+##relink_relative "${rl[@]}"
 ##make_dmg "$appdir" "" "DCP-o-matic Batch Converter" com.dcpomatic.batch
 
 # DCP-o-matic Player
@@ -441,7 +493,7 @@ esac
 ##copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
 ##cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_player.Info.plist "$approot/Info.plist"
 ##rl=("$approot/MacOS/dcpomatic2_player" "$approot/Frameworks/"*.dylib)
-##relink "${rl[@]}"
+##relink_relative "${rl[@]}"
 ##make_dmg "$appdir" "" "DCP-o-matic Player" com.dcpomatic.player
 
 # DCP-o-matic Playlist Editor
@@ -450,7 +502,7 @@ esac
 ##copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
 ##cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_playlist.Info.plist "$approot/Info.plist"
 ##rl=("$approot/MacOS/dcpomatic2_playlist" "$approot/Frameworks/"*.dylib)
-##relink "${rl[@]}"
+##relink_relative "${rl[@]}"
 ##make_dmg "$appdir" "" "DCP-o-matic Playlist Editor" com.dcpomatic.playlist
 
 # DCP-o-matic Disk Writer .app
@@ -460,7 +512,7 @@ copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_disk "$approot/MacOS"
 copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
 cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_disk.Info.plist "$approot/Info.plist"
 rl=("$approot/MacOS/dcpomatic2_disk" "$approot/Frameworks/"*.dylib)
-relink "${rl[@]}"
+relink_relative "${rl[@]}"
 
 # DCP-o-matic Disk Writer daemon .pkg
 pkgbase=tmp-disk-writer
@@ -518,7 +570,7 @@ copy_lib_env libicutu "$target"
 copy_lib_env libicuuc "$target"
 
 rl=("$target/dcpomatic2_disk_writer" "$target/"*.dylib)
-relink "${rl[@]}"
+relink_absolute "${rl[@]}"
 
 mkdir $pkgbase/scripts
 cat > $pkgbase/scripts/postinstall <<EOF
@@ -528,6 +580,11 @@ exit 0
 EOF
 chmod gou+x $pkgbase/scripts/postinstall
 
+find "$target" -iname "*.dylib" -print0 | while IFS= read -r -d '' f; do
+    sign "$f"
+done
+sign "$target/dcpomatic2_disk_writer"
+
 pkgbuild --root $pkgroot --identifier com.dcpomatic.disk.writer --scripts $pkgbase/scripts "DCP-o-matic Disk Writer.pkg"
 
 make_dmg "$appdir" "DCP-o-matic Disk Writer.pkg" "DCP-o-matic Disk Writer" com.dcpomatic.disk