summaryrefslogtreecommitdiff
path: root/src/macdeployqt/shared/shared.h
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@theqtcompany.com>2016-02-17 17:56:46 +0100
committerAlexandru Croitor <alexandru.croitor@theqtcompany.com>2016-02-23 14:51:47 +0000
commit6cd2ac8a9044f450766ae05b1b56c458699c21b6 (patch)
treeeb94ec4c8364859b89a49b8dcb18bf41e880bf1e /src/macdeployqt/shared/shared.h
parent1381b25560127fa08c91f6d8ff99ed104a907b82 (diff)
downloadqttools-6cd2ac8a9044f450766ae05b1b56c458699c21b6.tar.gz
macdeployqt: Fix code-signing errors.
Starting from Qt 5.6 all frameworks / plugins contain an embedded rpath. macdeployqt reads the rpath to get the dependencies which should be signed first, and because the rpath points to a "lib" directory which does not exist in the bundle structure, it shows errors. The solution is to additionally use the rpaths embedded in the bundle executable. Also because on 5.5 and previously rpaths were not included in frameworks, the getBinaryDependencies() always returned an empty set of dependencies, because it didn't have an rpath to resolve the paths to the dependencies (which was probably a bug). Now that the rpaths are present, the dependency list for a framework also contains itself as a dependency, which leads to an infinite loop while code-signing. The fix consists in not repeatedly adding binaries that were alread scheduled for code-singning. Change-Id: I97b418b90f325f88f375ffec83ad68c7dd4528ca Task-number: QTBUG-51101 Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Diffstat (limited to 'src/macdeployqt/shared/shared.h')
-rw-r--r--src/macdeployqt/shared/shared.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/macdeployqt/shared/shared.h b/src/macdeployqt/shared/shared.h
index a6d58607c..604e3ef4a 100644
--- a/src/macdeployqt/shared/shared.h
+++ b/src/macdeployqt/shared/shared.h
@@ -109,7 +109,9 @@ QString findAppBinary(const QString &appBundlePath);
QStringList findAppFrameworkNames(const QString &appBundlePath);
QStringList findAppFrameworkPaths(const QString &appBundlePath);
void codesignFile(const QString &identity, const QString &filePath);
-QSet<QString> codesignBundle(const QString &identity, const QString &appBundlePath);
+QSet<QString> codesignBundle(const QString &identity,
+ const QString &appBundlePath,
+ QList<QString> additionalBinariesContainingRpaths);
void codesign(const QString &identity, const QString &appBundlePath);
void createDiskImage(const QString &appBundlePath);