Files
qt-creator/scripts/deployqtHelper_mac.sh
Eike Ziller 3c2ec64dae OS X: deployqtHelper: never deploy anyting twice
There are targets that have a "depends" on "deployqt",
and since the Makefile doesn't know any specifics, the deployqtHelper
script is run twice when calling e.g.
make deployqt
make codesign
make dmg

That results in the "make dmg" calling the helper script again, which
overwrites for example the previously signed designer plugins with
the unsigned original again, leading to code signature verification
failure. This became only apparent since OS X 10.9 changed to always
do deep verification of signatures.

Change-Id: I36ec6de1a7d184800c59a3db47e01afedc0e6879
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2014-10-27 10:59:19 +01:00

91 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
[ $# -lt 5 ] && echo "Usage: $(basename $0) <app folder> <qt translations folder> <qt plugin folder> <qt quick imports folder> <qt quick 2 imports folder>" && exit 2
[ $(uname -s) != "Darwin" ] && echo "Run this script on Mac OS X" && exit 2;
echo "Deploying Qt"
# collect designer plugins
designerDestDir="$1/Contents/PlugIns/designer"
if [ ! -d "$designerDestDir" ]; then
echo "- Copying designer plugins"
mkdir -p "$designerDestDir"
for plugin in "$3"/designer/*.dylib; do
cp "$plugin" "$designerDestDir"/ || exit 1
done
fi
# copy Qt Quick 1 imports
importsDir="$1/Contents/Imports/qtquick1"
if [ -d "$4" ]; then
if [ ! -d "$importsDir" ]; then
echo "- Copying Qt Quick 1 imports"
mkdir -p "$importsDir"
cp -R "$4"/ "$importsDir"/
fi
fi
# copy Qt Quick 2 imports
imports2Dir="$1/Contents/Imports/qtquick2"
if [ -d "$5" ]; then
if [ ! -d "$imports2Dir" ]; then
echo "- Copying Qt Quick 2 imports"
mkdir -p "$imports2Dir"
cp -R "$5"/ "$imports2Dir"/
fi
fi
# copy qt creator qt.conf
if [ ! -f "$1/Contents/Resources/qt.conf" ]; then
echo "- Copying qt.conf"
cp -f "$(dirname "${BASH_SOURCE[0]}")/../dist/installer/mac/qt.conf" "$1/Contents/Resources/qt.conf" || exit 1
fi
# copy ios tools' qt.conf
if [ ! -f "$1/Contents/Resources/ios/qt.conf" ]; then
echo "- Copying ios/qt.conf"
cp -f "$(dirname "${BASH_SOURCE[0]}")/../dist/installer/mac/ios_qt.conf" "$1/Contents/Resources/ios/qt.conf" || exit 1
fi
# copy Qt translations
# check for known existing translation to avoid copying multiple times
if [ ! -f "$1/Contents/Resources/translations/qt_de.qm" ]; then
echo "- Copying Qt translations"
cp "$2"/*.qm "$1/Contents/Resources/translations/" || exit 1
fi
# copy libclang if needed
if [ $LLVM_INSTALL_DIR ]; then
if [ "$LLVM_INSTALL_DIR"/lib/libclang.dylib -nt "$1/Contents/PlugIns"/libclang.dylib ]; then
cp -f "$LLVM_INSTALL_DIR"/lib/libclang.dylib "$1/Contents/PlugIns/" || exit 1
cp -Rf "$LLVM_INSTALL_DIR"/lib/clang "$1/Contents/Resources/cplusplus/" || exit 1
fi
_CLANG_CODEMODEL_LIB="$1/Contents/PlugIns/libClangCodeModel_debug.dylib"
if [ ! -f "$_CLANG_CODEMODEL_LIB" ]; then
_CLANG_CODEMODEL_LIB="$1/Contents/PlugIns/libClangCodeModel.dylib"
fi
# this will just fail when run a second time on libClangCodeModel
xcrun install_name_tool -rpath "$LLVM_INSTALL_DIR/lib" "@loader_path/" "$_CLANG_CODEMODEL_LIB" || true
fi
#### macdeployqt
qmlpuppetapp="$1/Contents/MacOS/qmlpuppet"
if [ -f "$qmlpuppetapp" ]; then
qmlpuppetArgument="-executable=$qmlpuppetapp"
fi
qml2puppetapp="$1/Contents/MacOS/qml2puppet"
if [ -f "$qml2puppetapp" ]; then
qml2puppetArgument="-executable=$qml2puppetapp"
fi
echo "- Running macdeployqt"
macdeployqt "$1" \
"-executable=$1/Contents/Resources/qtpromaker" \
"-executable=$1/Contents/Resources/sdktool" \
"-executable=$1/Contents/Resources/ios/iostool" \
"-executable=$1/Contents/Resources/ios/iossim" \
"-executable=$1/Contents/Resources/ios/iossim_1_8_2" \
"$qmlpuppetArgument" "$qml2puppetArgument" || exit 1