summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--installerbuilder/libinstaller/macreplaceinstallnamesoperation.cpp16
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")))