diff options
author | kh1 <karsten.heimrich@digia.com> | 2012-11-12 15:46:06 +0100 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@digia.com> | 2012-11-16 17:43:59 +0100 |
commit | 61726b95c9c83f469d8027bc191223c163cc0a24 (patch) | |
tree | a06ea5d0e65b502e412eb4e7a58ec2b35bf5d56d /src/libs/installer/macreplaceinstallnamesoperation.h | |
parent | 33591ba07a0d8b89c154ca8e807db1d058da105f (diff) |
refactoring mac relocate operation used by qt patch
- improve the macreplaceinstallnamesoperation
- remove unneeded macrelocateqt class and use the more generic
macreplaceinstallnamesoperation
Change-Id: I9d2c5bc5ea7ed56e09de8b327a9c8f9c02eb4f05
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
Diffstat (limited to 'src/libs/installer/macreplaceinstallnamesoperation.h')
-rw-r--r-- | src/libs/installer/macreplaceinstallnamesoperation.h | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/src/libs/installer/macreplaceinstallnamesoperation.h b/src/libs/installer/macreplaceinstallnamesoperation.h index cad556394..aeae7eefd 100644 --- a/src/libs/installer/macreplaceinstallnamesoperation.h +++ b/src/libs/installer/macreplaceinstallnamesoperation.h @@ -37,6 +37,24 @@ namespace QInstaller { +struct MacBinaryInfo { + QString fileName; + QString dynamicLibId; // if that is empty, it is an executable + QStringList dependentDynamicLibs; + + uint qHash(const MacBinaryInfo &info); + bool operator==(const MacBinaryInfo &rhs) const + { + return fileName == rhs.fileName; + } + +}; + +inline uint qHash(const MacBinaryInfo &info) +{ + return qHash(info.fileName) ^ qHash(info.dynamicLibId); +} + class INSTALLER_EXPORT MacReplaceInstallNamesOperation : public Operation { public: @@ -48,20 +66,12 @@ public: bool testOperation(); Operation *clone() const; - bool apply(const QString &oldString, const QString &newString, const QString &frameworkDir); - void setComponentRootPath(const QString &path); - private: - void extractExecutableInfo(const QString &fileName, QString &frameworkId, QStringList &frameworks, - QString &originalBuildDir); - void relocateFramework(const QString &directoryName); - void relocateBinary(const QString &fileName); + bool apply(const QString &searchString, const QString &replacement, const QString &searchDir); + QSet<MacBinaryInfo> collectPatchableBinaries(const QString &searchDir); + int updateExecutableInfo(MacBinaryInfo *binaryInfo); + void relocateBinary(const MacBinaryInfo &info, const QString &searchString, const QString &replacement); bool execCommand(const QString &cmd, const QStringList &args); - -private: - QString m_indicator; - QString m_installationDir; - QString m_componentRootPath; }; } // namespace QInstaller |