make more use of BaseQtVersion::qmakeProperty()

... instead of peeking into versionInfo().
in fact, make versionInfo() private, to avoid subsequent deterioration
as happened before (after 5e596e89d).
some other functions that use it in its interface also become private.

this fixes several breakages related to working with non-installed
prefix builds of qt.

Change-Id: Ib67de79323c9e38f3de48a09854b155de9eef5b2
Reviewed-by: James McDonnell <jmcdonnell@blackberry.com>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
This commit is contained in:
Oswald Buddenhagen
2017-01-23 17:40:16 +01:00
parent dea722a20c
commit 8288ca1251
8 changed files with 35 additions and 31 deletions

View File

@@ -131,7 +131,7 @@ RunControl *AndroidDebugSupport::createDebugRunControl(AndroidRunConfiguration *
Kit *kit = target->kit(); Kit *kit = target->kit();
QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(kit); QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(kit);
if (version) { if (version) {
const QString qmlQtDir = version->versionInfo().value(QLatin1String("QT_INSTALL_QML")); const QString qmlQtDir = version->qmakeProperty("QT_INSTALL_QML");
params.additionalSearchDirectories = QStringList(qmlQtDir); params.additionalSearchDirectories = QStringList(qmlQtDir);
} }
} }

View File

@@ -584,7 +584,7 @@ QmakeBuildInfo *QmakeBuildConfigurationFactory::createBuildInfo(const Kit *k,
QString projectDirectory = projectFilePath.toFileInfo().absolutePath(); QString projectDirectory = projectFilePath.toFileInfo().absolutePath();
QDir qtSourceDir = QDir(version->sourcePath().toString()); QDir qtSourceDir = QDir(version->sourcePath().toString());
QString relativeProjectPath = qtSourceDir.relativeFilePath(projectDirectory); QString relativeProjectPath = qtSourceDir.relativeFilePath(projectDirectory);
QString qtBuildDir = version->versionInfo().value(QStringLiteral("QT_INSTALL_PREFIX")); QString qtBuildDir = version->qmakeProperty("QT_INSTALL_PREFIX");
QString absoluteBuildPath = QDir::cleanPath(qtBuildDir + QLatin1Char('/') + relativeProjectPath); QString absoluteBuildPath = QDir::cleanPath(qtBuildDir + QLatin1Char('/') + relativeProjectPath);
info->buildDirectory = FileName::fromString(absoluteBuildPath); info->buildDirectory = FileName::fromString(absoluteBuildPath);

View File

@@ -819,7 +819,7 @@ QtSupport::ProFileReader *QmakeProject::createProFileReader(const QmakeProFileNo
if (qtVersion && qtVersion->isValid()) { if (qtVersion && qtVersion->isValid()) {
m_qmakeGlobals->qmake_abslocation = QDir::cleanPath(qtVersion->qmakeCommand().toString()); m_qmakeGlobals->qmake_abslocation = QDir::cleanPath(qtVersion->qmakeCommand().toString());
m_qmakeGlobals->setProperties(qtVersion->versionInfo()); qtVersion->applyProperties(m_qmakeGlobals);
} }
m_qmakeGlobals->setDirectories(rootProjectNode()->sourceDir(), rootProjectNode()->buildDir()); m_qmakeGlobals->setDirectories(rootProjectNode()->sourceDir(), rootProjectNode()->buildDir());

View File

@@ -234,18 +234,17 @@ QList<DeployableFile> QnxDeployQtLibrariesDialog::gatherFiles()
QTC_ASSERT(qtVersion, return result); QTC_ASSERT(qtVersion, return result);
if (Utils::HostOsInfo::isWindowsHost()) { if (Utils::HostOsInfo::isWindowsHost()) {
result.append(gatherFiles(qtVersion->versionInfo().value(QLatin1String("QT_INSTALL_LIBS")), result.append(gatherFiles(qtVersion->qmakeProperty("QT_INSTALL_LIBS"),
QString(), QStringList() << QLatin1String("*.so.?"))); QString(), QStringList() << QLatin1String("*.so.?")));
result.append(gatherFiles(qtVersion->versionInfo().value(QLatin1String("QT_INSTALL_LIBS")) result.append(gatherFiles(qtVersion->qmakeProperty("QT_INSTALL_LIBS")
+ QLatin1String("/fonts"))); + QLatin1String("/fonts")));
} else { } else {
result.append(gatherFiles( result.append(gatherFiles(qtVersion->qmakeProperty("QT_INSTALL_LIBS")));
qtVersion->versionInfo().value(QLatin1String("QT_INSTALL_LIBS"))));
} }
result.append(gatherFiles(qtVersion->versionInfo().value(QLatin1String("QT_INSTALL_PLUGINS")))); result.append(gatherFiles(qtVersion->qmakeProperty("QT_INSTALL_PLUGINS")));
result.append(gatherFiles(qtVersion->versionInfo().value(QLatin1String("QT_INSTALL_IMPORTS")))); result.append(gatherFiles(qtVersion->qmakeProperty("QT_INSTALL_IMPORTS")));
result.append(gatherFiles(qtVersion->versionInfo().value(QLatin1String("QT_INSTALL_QML")))); result.append(gatherFiles(qtVersion->qmakeProperty("QT_INSTALL_QML")));
return result; return result;
} }

View File

@@ -148,7 +148,7 @@ void QnxQtVersion::addToEnvironment(const ProjectExplorer::Kit *k, Utils::Enviro
updateEnvironment(); updateEnvironment();
env.modify(m_qnxEnv); env.modify(m_qnxEnv);
env.prependOrSetLibrarySearchPath(versionInfo().value(QLatin1String("QT_INSTALL_LIBS"))); env.prependOrSetLibrarySearchPath(qmakeProperty("QT_INSTALL_LIBS")); // FIXME: PropertyVariantDev
} }
Utils::Environment QnxQtVersion::qmakeRunEnvironment() const Utils::Environment QnxQtVersion::qmakeRunEnvironment() const

View File

@@ -71,17 +71,17 @@ QString QnxUtils::cpuDirShortDescription(const QString &cpuDir)
QStringList QnxUtils::searchPaths(QnxQtVersion *qtVersion) QStringList QnxUtils::searchPaths(QnxQtVersion *qtVersion)
{ {
const QDir pluginDir(qtVersion->versionInfo().value(QLatin1String("QT_INSTALL_PLUGINS"))); const QDir pluginDir(qtVersion->qmakeProperty("QT_INSTALL_PLUGINS"));
const QStringList pluginSubDirs = pluginDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); const QStringList pluginSubDirs = pluginDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
QStringList searchPaths; QStringList searchPaths;
Q_FOREACH (const QString &dir, pluginSubDirs) { Q_FOREACH (const QString &dir, pluginSubDirs) {
searchPaths << qtVersion->versionInfo().value(QLatin1String("QT_INSTALL_PLUGINS")) searchPaths << qtVersion->qmakeProperty("QT_INSTALL_PLUGINS")
+ QLatin1Char('/') + dir; + QLatin1Char('/') + dir;
} }
searchPaths << qtVersion->versionInfo().value(QLatin1String("QT_INSTALL_LIBS")); searchPaths << qtVersion->qmakeProperty("QT_INSTALL_LIBS");
searchPaths << qtVersion->qnxTarget() + QLatin1Char('/') + qtVersion->cpuDir() searchPaths << qtVersion->qnxTarget() + QLatin1Char('/') + qtVersion->cpuDir()
+ QLatin1String("/lib"); + QLatin1String("/lib");
searchPaths << qtVersion->qnxTarget() + QLatin1Char('/') + qtVersion->cpuDir() searchPaths << qtVersion->qnxTarget() + QLatin1Char('/') + qtVersion->cpuDir()

View File

@@ -1018,7 +1018,7 @@ void BaseQtVersion::ensureMkSpecParsed() const
QMakeVfs vfs; QMakeVfs vfs;
QMakeGlobals option; QMakeGlobals option;
option.setProperties(versionInfo()); applyProperties(&option);
option.environment = qmakeRunEnvironment().toProcessEnvironment(); option.environment = qmakeRunEnvironment().toProcessEnvironment();
ProMessageHandler msgHandler(true); ProMessageHandler msgHandler(true);
ProFileCacheManager::instance()->incRefCount(); ProFileCacheManager::instance()->incRefCount();
@@ -1212,10 +1212,15 @@ QString BaseQtVersion::qmakeProperty(const QHash<QString,QString> &versionInfo,
return versionInfo.value(QString::fromLatin1(name)); return versionInfo.value(QString::fromLatin1(name));
} }
QString BaseQtVersion::qmakeProperty(const QByteArray &name) const QString BaseQtVersion::qmakeProperty(const QByteArray &name, PropertyVariant variant) const
{ {
updateVersionInfo(); updateVersionInfo();
return qmakeProperty(m_versionInfo, name); return qmakeProperty(m_versionInfo, name, variant);
}
void BaseQtVersion::applyProperties(QMakeGlobals *qmakeGlobals) const
{
qmakeGlobals->setProperties(versionInfo());
} }
bool BaseQtVersion::hasDocumentation() const bool BaseQtVersion::hasDocumentation() const

View File

@@ -49,6 +49,7 @@ class Task;
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class ProFileEvaluator; class ProFileEvaluator;
class QMakeGlobals;
class QSettings; class QSettings;
QT_END_NAMESPACE QT_END_NAMESPACE
@@ -119,10 +120,10 @@ public:
QList<ProjectExplorer::Abi> qtAbis() const; QList<ProjectExplorer::Abi> qtAbis() const;
virtual QList<ProjectExplorer::Abi> detectQtAbis() const = 0; virtual QList<ProjectExplorer::Abi> detectQtAbis() const = 0;
// Returns the PREFIX, BINPREFIX, DOCPREFIX and similar information
QHash<QString,QString> versionInfo() const;
enum PropertyVariant { PropertyVariantGet, PropertyVariantSrc }; enum PropertyVariant { PropertyVariantGet, PropertyVariantSrc };
QString qmakeProperty(const QByteArray &name) const; QString qmakeProperty(const QByteArray &name,
PropertyVariant variant = PropertyVariantGet) const;
void applyProperties(QMakeGlobals *qmakeGlobals) const;
virtual void addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const; virtual void addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const;
virtual Utils::Environment qmakeRunEnvironment() const; virtual Utils::Environment qmakeRunEnvironment() const;
@@ -181,12 +182,6 @@ public:
/// warnings and finally info items. /// warnings and finally info items.
QList<ProjectExplorer::Task> reportIssues(const QString &proFile, const QString &buildDir) const; QList<ProjectExplorer::Task> reportIssues(const QString &proFile, const QString &buildDir) const;
static bool queryQMakeVariables(const Utils::FileName &binary, const Utils::Environment &env,
QHash<QString, QString> *versionInfo, QString *error = 0);
static Utils::FileName mkspecDirectoryFromVersionInfo(const QHash<QString, QString> &versionInfo);
static Utils::FileName mkspecFromVersionInfo(const QHash<QString, QString> &versionInfo);
static Utils::FileName sourcePath(const QHash<QString, QString> &versionInfo);
static bool isQmlDebuggingSupported(ProjectExplorer::Kit *k, QString *reason = 0); static bool isQmlDebuggingSupported(ProjectExplorer::Kit *k, QString *reason = 0);
bool isQmlDebuggingSupported(QString *reason = 0) const; bool isQmlDebuggingSupported(QString *reason = 0) const;
static bool isQtQuickCompilerSupported(ProjectExplorer::Kit *k, QString *reason = 0); static bool isQtQuickCompilerSupported(ProjectExplorer::Kit *k, QString *reason = 0);
@@ -232,9 +227,6 @@ protected:
BaseQtVersion(const Utils::FileName &path, bool isAutodetected = false, const QString &autodetectionSource = QString()); BaseQtVersion(const Utils::FileName &path, bool isAutodetected = false, const QString &autodetectionSource = QString());
BaseQtVersion(const BaseQtVersion &other); BaseQtVersion(const BaseQtVersion &other);
static QString qmakeProperty(const QHash<QString,QString> &versionInfo, const QByteArray &name,
PropertyVariant variant = PropertyVariantGet);
virtual QList<ProjectExplorer::Task> reportIssuesImpl(const QString &proFile, const QString &buildDir) const; virtual QList<ProjectExplorer::Task> reportIssuesImpl(const QString &proFile, const QString &buildDir) const;
// helper function for desktop and simulator to figure out the supported abis based on the libraries // helper function for desktop and simulator to figure out the supported abis based on the libraries
@@ -254,6 +246,14 @@ private:
enum Binaries { QmlViewer, QmlScene, Designer, Linguist, Uic, QScxmlc }; enum Binaries { QmlViewer, QmlScene, Designer, Linguist, Uic, QScxmlc };
QString findQtBinary(Binaries binary) const; QString findQtBinary(Binaries binary) const;
void updateMkspec() const; void updateMkspec() const;
QHash<QString,QString> versionInfo() const;
static bool queryQMakeVariables(const Utils::FileName &binary, const Utils::Environment &env,
QHash<QString, QString> *versionInfo, QString *error = 0);
static QString qmakeProperty(const QHash<QString,QString> &versionInfo, const QByteArray &name,
PropertyVariant variant = PropertyVariantGet);
static Utils::FileName mkspecDirectoryFromVersionInfo(const QHash<QString, QString> &versionInfo);
static Utils::FileName mkspecFromVersionInfo(const QHash<QString, QString> &versionInfo);
static Utils::FileName sourcePath(const QHash<QString, QString> &versionInfo);
void setId(int id); // used by the qtversionmanager for legacy restore void setId(int id); // used by the qtversionmanager for legacy restore
// and by the qtoptionspage to replace Qt versions // and by the qtoptionspage to replace Qt versions