aboutsummaryrefslogtreecommitdiffstats
path: root/src/app/qbs-setup-qt
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-07-02 17:10:27 +0200
committerJoerg Bornemann <joerg.bornemann@digia.com>2014-07-02 21:12:13 +0200
commitc653f6ab0d04a39298f9b4365528372dee5b302a (patch)
tree07eba08d09d1fc1a7d2e74b4e7c88fa5c47bcb64 /src/app/qbs-setup-qt
parente264281c4810bb0afb07e8f590fc31e504d5e4d0 (diff)
teach setup-qt how to detect broken Qt packages
Qt4 packages for MinGW have an invalid QMAKESPEC_ORIGINAL set. See QTBUG-28792. We must work around this issue. Change-Id: Ibf41e4a8eaed8aa5a7855693aaf653fc5d323cd1 Task-number: QBS-629 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/app/qbs-setup-qt')
-rw-r--r--src/app/qbs-setup-qt/setupqt.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/app/qbs-setup-qt/setupqt.cpp b/src/app/qbs-setup-qt/setupqt.cpp
index c7b1ea16d..567ba3920 100644
--- a/src/app/qbs-setup-qt/setupqt.cpp
+++ b/src/app/qbs-setup-qt/setupqt.cpp
@@ -227,10 +227,18 @@ QtEnvironment SetupQt::fetchEnvironment(const QString &qmakePath)
qtEnvironment.mkspecPath = mkspecsBaseSrcPath + QLatin1Char('/') + mkspecName;
} else {
if (HostOsInfo::isWindowsHost()) {
- const QByteArray fileContent = readFileContent(qtEnvironment.mkspecBasePath
- + QLatin1String("/default/qmake.conf"));
+ const QString baseDirPath = qtEnvironment.mkspecBasePath + QLatin1String("/default/");
+ const QByteArray fileContent = readFileContent(baseDirPath
+ + QLatin1String("qmake.conf"));
qtEnvironment.mkspecPath = configVariable(fileContent,
QLatin1String("QMAKESPEC_ORIGINAL"));
+ if (!QFile::exists(qtEnvironment.mkspecPath)) {
+ // Work around QTBUG-28792.
+ // The value of QMAKESPEC_ORIGINAL is wrong for MinGW packages. Y u h8 me?
+ const QRegExp rex(QLatin1String("\\binclude\\(([^)]+qmake\\.conf)\\)"));
+ if (rex.indexIn(fileContent) != -1)
+ qtEnvironment.mkspecPath = QDir::cleanPath(baseDirPath + rex.cap(1));
+ }
} else {
qtEnvironment.mkspecPath
= QFileInfo(qtEnvironment.mkspecBasePath + "/default").symLinkTarget();