diff options
author | Tim Jenssen <tim.jenssen@nokia.com> | 2011-07-28 17:45:28 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@nokia.com> | 2011-07-29 08:45:11 +0200 |
commit | 1bda94ebd93a7a075e4c4a31e4352bb78aaf262c (patch) | |
tree | 056c5e3843fe433fbed555146b754ca4ce470d65 /installerbuilder | |
parent | addd9cd4f0d304700f81406d06ac3d895e7bceb4 (diff) |
do mac patching in the right way
- if Current Dir is a symlink we should use the absolutepath of this dir and not of the to be patched file
Diffstat (limited to 'installerbuilder')
-rw-r--r-- | installerbuilder/libinstaller/macreplaceinstallnamesoperation.cpp | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/installerbuilder/libinstaller/macreplaceinstallnamesoperation.cpp b/installerbuilder/libinstaller/macreplaceinstallnamesoperation.cpp index ac2d761fd..5068567f6 100644 --- a/installerbuilder/libinstaller/macreplaceinstallnamesoperation.cpp +++ b/installerbuilder/libinstaller/macreplaceinstallnamesoperation.cpp @@ -104,13 +104,12 @@ bool MacReplaceInstallNamesOperation::apply(const QString &indicator, const QStr QDirIterator dirIterator(searchDir, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks); while (dirIterator.hasNext()) { QString fileName = dirIterator.next(); - if (dirIterator.fileInfo().isDir()) + if (dirIterator.fileInfo().isDir() && fileName.endsWith(QLatin1String(".framework"))) + relocateFramework(fileName); + else if (dirIterator.fileInfo().isDir()) continue; - - if (fileName.endsWith(QLatin1String(".dylib"))) + else if (fileName.endsWith(QLatin1String(".dylib"))) relocateBinary(fileName); - else if (fileName.endsWith(QLatin1String(".framework"))) - relocateFramework(fileName); else if (dirIterator.fileInfo().isExecutable() && !fileName.endsWith(QLatin1String(".h")) && !fileName.endsWith(QLatin1String(".cpp")) && !fileName.endsWith(QLatin1String(".pro")) && !fileName.endsWith(QLatin1String(".pri"))) { @@ -222,16 +221,19 @@ void MacReplaceInstallNamesOperation::relocateFramework(const QString &directory { QFileInfo fi(directoryName); QString frameworkName = fi.baseName(); - fi.setFile(directoryName + QLatin1String("/Versions/Current/") + frameworkName); - if (fi.exists()) { - QString fileName = fi.isSymLink() ? fi.symLinkTarget() : fi.absoluteFilePath(); - relocateBinary(fileName); + + QString absoluteVersionDirectory = directoryName + QLatin1String("/Versions/Current"); + if (QFileInfo(absoluteVersionDirectory).isSymLink()) { + absoluteVersionDirectory = QFileInfo(absoluteVersionDirectory).symLinkTarget(); } - fi.setFile(directoryName + QLatin1String("/Versions/Current/") + frameworkName + QLatin1String("_debug")); - if (fi.exists()) { - QString fileName = fi.isSymLink() ? fi.symLinkTarget() : fi.absoluteFilePath(); + + fi.setFile(absoluteVersionDirectory + QDir::separator() + frameworkName); + if (fi.exists()) + relocateBinary(fileName); + + fi.setFile(absoluteVersionDirectory + QDir::separator() + frameworkName + QLatin1String("_debug")); + if (fi.exists()) relocateBinary(fileName); - } } bool MacReplaceInstallNamesOperation::execCommand(const QString &cmd, const QStringList &args) |