diff options
-rw-r--r-- | installerbuilder/libinstaller/macreplaceinstallnamesoperation.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/installerbuilder/libinstaller/macreplaceinstallnamesoperation.cpp b/installerbuilder/libinstaller/macreplaceinstallnamesoperation.cpp index 41bed6ba6..42a2a47f6 100644 --- a/installerbuilder/libinstaller/macreplaceinstallnamesoperation.cpp +++ b/installerbuilder/libinstaller/macreplaceinstallnamesoperation.cpp @@ -101,11 +101,25 @@ bool MacReplaceInstallNamesOperation::apply(const QString &indicator, const QStr mIndicator = indicator; mInstallationDir = installationDir; + QStringList alreadyPatchedFrameworks; + QLatin1String frameworkSuffix(".framework"); + QDirIterator dirIterator(searchDir, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks); while (dirIterator.hasNext()) { QString fileName = dirIterator.next(); - if (dirIterator.fileInfo().isDir() && fileName.endsWith(QLatin1String(".framework"))) + + //check that we don't do anything for already patched framework pathes + if (fileName.contains(frameworkSuffix)) { + QString alreadyPatchedSearchString = fileName.left(fileName.lastIndexOf(frameworkSuffix)) + + frameworkSuffix; + if (alreadyPatchedFrameworks.contains(alreadyPatchedSearchString)) { + continue; + } + } + if (dirIterator.fileInfo().isDir() && fileName.endsWith(frameworkSuffix)) { relocateFramework(fileName); + alreadyPatchedFrameworks.append(fileName); + } else if (dirIterator.fileInfo().isDir()) continue; else if (fileName.endsWith(QLatin1String(".dylib"))) |