macdeployqt: Ignore repeated references to binary when parsing otool -L
macdeployqt doesn't know or care about universal build (yet), and will just scan all the lines produced by otool -L as if they were for a single architecture, ignoring any lines it doesn't recognize. This fails when the second arch starts off with a reference to the binary we're processing, which then gets interpreted as a dependency of itself. If that binary doesn't have a path, we end up looking for a match in /usr/lib, which we can't find in the best case, or actually end up deploying from an incompatible Qt version in the worst case. Ideally we'd teach macdeployqt about the multiple slices, bur for now we work around it by skipping any references to dependent libraries that match the binary itself. Fixes: QTBUG-102607 Pick-to: 6.2 6.3 5.15 Change-Id: Ia039fafdce90896e61aab90b9c8ac52543cc2c8c Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>bb10
parent
f056eed02e
commit
12fb2cfa11
|
|
@ -216,6 +216,8 @@ OtoolInfo findDependencyInfo(const QString &binaryPath)
|
|||
for (const QString &outputLine : outputLines) {
|
||||
const auto match = regexp.match(outputLine);
|
||||
if (match.hasMatch()) {
|
||||
if (match.captured(1) == info.installName)
|
||||
continue; // Another arch reference to the same binary
|
||||
DylibInfo dylib;
|
||||
dylib.binaryPath = match.captured(1);
|
||||
dylib.compatibilityVersion = QVersionNumber::fromString(match.captured(2));
|
||||
|
|
|
|||
Loading…
Reference in New Issue