annotate deploy/osx/deploy.sh @ 1077:bd3728701e1e

Deployment fixes. Qt on OSX now seems to depend on QtDBus, so copy that in, and also fail if anything is found to depend on an absent Qt framework.
author Chris Cannam
date Fri, 23 Oct 2015 08:44:37 +0100
parents d18c89386a71
children b2c45b831ea8
rev   line source
Chris@409 1 #!/bin/bash
Chris@409 2
Chris@1077 3 set -e
Chris@1077 4
Chris@409 5 # Execute this from the top-level directory of the project (the one
Chris@409 6 # that contains the .app bundle). Supply the name of the .app bundle
Chris@409 7 # as argument (the target will use $app.app regardless, but we need
Chris@409 8 # to know the source)
Chris@409 9
Chris@409 10 source="$1"
Chris@409 11 dmg="$2"
Chris@409 12 if [ -z "$source" ] || [ ! -d "$source" ] || [ -z "$dmg" ]; then
Chris@409 13 echo "Usage: $0 <source.app> <target-dmg-basename>"
Chris@463 14 echo " e.g. $0 MyApplication.app MyApplication"
Chris@463 15 echo " Version number and .dmg will be appended automatically,"
Chris@463 16 echo " but the .app name must include .app"
Chris@409 17 exit 2
Chris@409 18 fi
Chris@409 19 app=`basename "$source" .app`
Chris@409 20
Chris@1077 21 set -u
Chris@1077 22
Chris@409 23 version=`perl -p -e 's/^[^"]*"([^"]*)".*$/$1/' version.h`
Chris@409 24 case "$version" in
Chris@409 25 [0-9].[0-9]) bundleVersion="$version".0 ;;
Chris@409 26 [0-9].[0-9].[0-9]) bundleVersion="$version" ;;
Chris@409 27 *) echo "Error: Version $version is neither two- nor three-part number" ;;
Chris@409 28 esac
Chris@409 29
Chris@409 30 echo
Chris@745 31 echo "Copying in frameworks and plugins from Qt installation directory."
Chris@745 32
Chris@745 33 deploy/osx/copy-qt.sh "$app" || exit 2
Chris@745 34
Chris@745 35 echo
Chris@514 36 echo "Fixing up paths."
Chris@514 37
Chris@514 38 deploy/osx/paths.sh "$app"
Chris@514 39
Chris@514 40 echo
Chris@1077 41 echo "Copying in qt.conf to set local-only plugin paths."
Chris@1077 42 echo "Make sure all necessary Qt plugins are in $source/Contents/plugins/*"
Chris@1077 43 echo "You probably want platforms/, accessible/ and imageformats/ subdirectories."
Chris@1077 44 cp deploy/osx/qt.conf "$source"/Contents/Resources/qt.conf
Chris@1077 45
Chris@1077 46 echo
Chris@1077 47 echo "Writing version $bundleVersion in to bundle."
Chris@1077 48 echo "(This should be a three-part number: major.minor.point)"
Chris@1077 49
Chris@1077 50 perl -p -e "s/SV_VERSION/$bundleVersion/" deploy/osx/Info.plist \
Chris@1077 51 > "$source"/Contents/Info.plist
Chris@1077 52
Chris@1077 53 echo "Done: check $source/Contents/Info.plist for sanity please"
Chris@1077 54
Chris@1077 55 echo
Chris@409 56 echo "Making target tree."
Chris@409 57
Chris@409 58 volume="$app"-"$version"
Chris@409 59 target="$volume"/"$app".app
Chris@409 60 dmg="$dmg"-"$version".dmg
Chris@409 61
Chris@409 62 mkdir "$volume" || exit 1
Chris@409 63
Chris@409 64 ln -s /Applications "$volume"/Applications
Chris@412 65 cp README README.OSC COPYING CHANGELOG "$volume/"
Chris@409 66 cp -rp "$source" "$target"
Chris@409 67
Chris@409 68 echo "Done"
Chris@409 69
Chris@510 70 deploy/osx/sign.sh "$volume" || exit 1
Chris@510 71
Chris@409 72 echo
Chris@409 73 echo "Making dmg..."
Chris@409 74
Chris@409 75 hdiutil create -srcfolder "$volume" "$dmg" -volname "$volume" &&
Chris@409 76 rm -r "$volume"
Chris@409 77
Chris@409 78 echo "Done"