annotate deploy/osx/paths.sh @ 961:f3c1546c8a5c

Address #1214, layer import produces wrong layer type. We needed a more principled approach to making sure the format gets updated properly and the dialog elements are consistent (basically separating making the dialog elements consistent from subsequently updating the format). This change should provide that, though there may be gotchas still.
author Chris Cannam
date Tue, 12 May 2015 12:31:37 +0100
parents 5462ac97d28f
children 9fbd599b4e3a bd3728701e1e
rev   line source
Chris@409 1 #!/bin/bash
Chris@409 2
Chris@409 3 app="$1"
Chris@409 4 if [ -z "$app" ]; then
Chris@409 5 echo "Usage: $0 <appname>"
Chris@409 6 echo "Provide appname without the .app extension, please"
Chris@409 7 exit 2
Chris@409 8 fi
Chris@409 9
Chris@742 10 frameworks="QtCore QtNetwork QtGui QtXml QtWidgets QtPrintSupport"
Chris@742 11
Chris@409 12 echo
Chris@742 13 echo "I expect you to have already copied these frameworks from the Qt installation to"
Chris@742 14 echo "$app.app/Contents/Frameworks -- expect errors to follow if they're missing:"
Chris@742 15 echo "$frameworks"
Chris@409 16 echo
Chris@409 17
Chris@409 18 echo "Fixing up loader paths in binaries..."
Chris@409 19
Chris@742 20 for fwk in $frameworks; do
Chris@742 21 install_name_tool -id $fwk "$app.app/Contents/Frameworks/$fwk"
Chris@742 22 done
Chris@409 23
Chris@509 24 find "$app.app" -name \*.dylib -print | while read x; do
Chris@509 25 install_name_tool -id "`basename \"$x\"`" "$x"
Chris@509 26 done
Chris@509 27
Chris@742 28 for fwk in $frameworks; do
Chris@409 29 find "$app.app" -type f -print | while read x; do
Chris@509 30 current=$(otool -L "$x" | grep "$fwk" | grep amework | awk '{ print $1; }')
Chris@409 31 [ -z "$current" ] && continue
Chris@409 32 echo "$x has $current"
Chris@409 33 relative=$(echo "$x" | sed -e "s,$app.app/Contents/,," \
Chris@409 34 -e 's,[^/]*/,../,g' -e 's,/[^/]*$,/Frameworks/'"$fwk"',' )
Chris@409 35 echo "replacing with relative path $relative"
Chris@409 36 install_name_tool -change "$current" "@loader_path/$relative" "$x"
Chris@409 37 done
Chris@409 38 done
Chris@409 39
Chris@409 40 echo "Done: be sure to run the app and see that it works!"
Chris@409 41
Chris@409 42