diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-07-02 17:10:27 +0200 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-07-02 21:12:13 +0200 |
commit | c653f6ab0d04a39298f9b4365528372dee5b302a (patch) | |
tree | 07eba08d09d1fc1a7d2e74b4e7c88fa5c47bcb64 /src/app/qbs-setup-qt | |
parent | e264281c4810bb0afb07e8f590fc31e504d5e4d0 (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.cpp | 12 |
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(); |