diff options
author | Alexandru Croitor <alexandru.croitor@theqtcompany.com> | 2016-02-17 17:56:46 +0100 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@theqtcompany.com> | 2016-02-23 14:51:47 +0000 |
commit | 6cd2ac8a9044f450766ae05b1b56c458699c21b6 (patch) | |
tree | eb94ec4c8364859b89a49b8dcb18bf41e880bf1e /src/macdeployqt/shared/shared.h | |
parent | 1381b25560127fa08c91f6d8ff99ed104a907b82 (diff) | |
download | qttools-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.h | 4 |
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); |