forked from qt-creator/qt-creator
BaseQtVersion: use QMakeEvaluator's native format for m_versionInfo
Change-Id: I926bc97fe6fa510ac5a8fe77b64014333a69bd04 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -677,8 +677,8 @@ QStringList BaseQtVersion::warningReason() const
|
||||
QStringList ret;
|
||||
if (qtAbis().isEmpty())
|
||||
ret << QCoreApplication::translate("QtVersion", "ABI detection failed: Make sure to use a matching compiler when building.");
|
||||
if (m_versionInfo.value(QLatin1String("QT_INSTALL_PREFIX/get"))
|
||||
!= m_versionInfo.value(QLatin1String("QT_INSTALL_PREFIX"))) {
|
||||
if (m_versionInfo.value(ProKey("QT_INSTALL_PREFIX/get"))
|
||||
!= m_versionInfo.value(ProKey("QT_INSTALL_PREFIX"))) {
|
||||
ret << QCoreApplication::translate("QtVersion", "Non-installed -prefix build - for internal development only.");
|
||||
}
|
||||
return ret;
|
||||
@@ -792,12 +792,13 @@ QString BaseQtVersion::toHtml(bool verbose) const
|
||||
str << "<tr><td><b>" << QCoreApplication::translate("BaseQtVersion", "Version:")
|
||||
<< "</b></td><td>" << qtVersionString() << "</td></tr>";
|
||||
if (verbose) {
|
||||
const QHash<QString,QString> vInfo = versionInfo();
|
||||
const QHash<ProKey, ProString> vInfo = versionInfo();
|
||||
if (!vInfo.isEmpty()) {
|
||||
QStringList keys = vInfo.keys();
|
||||
keys.sort();
|
||||
foreach (QString variableName, keys) {
|
||||
const QString &value = vInfo.value(variableName);
|
||||
QList<ProKey> keys = vInfo.keys();
|
||||
Utils::sort(keys);
|
||||
foreach (const ProKey &key, keys) {
|
||||
const QString &value = vInfo.value(key).toQString();
|
||||
QString variableName = key.toQString();
|
||||
if (variableName != QLatin1String("QMAKE_MKSPECS")
|
||||
&& !variableName.endsWith(QLatin1String("/raw"))) {
|
||||
bool isPath = false;
|
||||
@@ -1196,20 +1197,20 @@ void BaseQtVersion::updateVersionInfo() const
|
||||
m_versionInfoUpToDate = true;
|
||||
}
|
||||
|
||||
QHash<QString,QString> BaseQtVersion::versionInfo() const
|
||||
QHash<ProKey,ProString> BaseQtVersion::versionInfo() const
|
||||
{
|
||||
updateVersionInfo();
|
||||
return m_versionInfo;
|
||||
}
|
||||
|
||||
QString BaseQtVersion::qmakeProperty(const QHash<QString,QString> &versionInfo, const QByteArray &name,
|
||||
QString BaseQtVersion::qmakeProperty(const QHash<ProKey,ProString> &versionInfo, const QByteArray &name,
|
||||
PropertyVariant variant)
|
||||
{
|
||||
QString val = versionInfo.value(QString::fromLatin1(
|
||||
name + (variant == PropertyVariantGet ? "/get" : "/src")));
|
||||
QString val = versionInfo.value(ProKey(QString::fromLatin1(
|
||||
name + (variant == PropertyVariantGet ? "/get" : "/src")))).toQString();
|
||||
if (!val.isNull())
|
||||
return val;
|
||||
return versionInfo.value(QString::fromLatin1(name));
|
||||
return versionInfo.value(ProKey(QString::fromLatin1(name))).toQString();
|
||||
}
|
||||
|
||||
QString BaseQtVersion::qmakeProperty(const QByteArray &name, PropertyVariant variant) const
|
||||
@@ -1410,7 +1411,7 @@ static QByteArray runQmakeQuery(const FileName &binary, const Environment &env,
|
||||
}
|
||||
|
||||
bool BaseQtVersion::queryQMakeVariables(const FileName &binary, const Environment &env,
|
||||
QHash<QString, QString> *versionInfo, QString *error)
|
||||
QHash<ProKey, ProString> *versionInfo, QString *error)
|
||||
{
|
||||
QString tmp;
|
||||
if (!error)
|
||||
@@ -1452,23 +1453,23 @@ bool BaseQtVersion::queryQMakeVariables(const FileName &binary, const Environmen
|
||||
const int index = line.indexOf(QLatin1Char(':'));
|
||||
if (index != -1) {
|
||||
QString name = line.left(index);
|
||||
QString value = QDir::fromNativeSeparators(line.mid(index+1));
|
||||
ProString value(QDir::fromNativeSeparators(line.mid(index+1)));
|
||||
if (value.isNull())
|
||||
value = QLatin1String(""); // Make sure it is not null, to discern from missing keys
|
||||
versionInfo->insert(name, value);
|
||||
value = ProString(""); // Make sure it is not null, to discern from missing keys
|
||||
versionInfo->insert(ProKey(name), value);
|
||||
if (name.startsWith(QLatin1String("QT_")) && !name.contains(QLatin1Char('/'))) {
|
||||
if (name.startsWith(QLatin1String("QT_INSTALL_"))) {
|
||||
versionInfo->insert(name + QLatin1String("/raw"), value);
|
||||
versionInfo->insert(name + QLatin1String("/get"), value);
|
||||
versionInfo->insert(ProKey(name + QLatin1String("/raw")), value);
|
||||
versionInfo->insert(ProKey(name + QLatin1String("/get")), value);
|
||||
if (name == QLatin1String("QT_INSTALL_PREFIX")
|
||||
|| name == QLatin1String("QT_INSTALL_DATA")
|
||||
|| name == QLatin1String("QT_INSTALL_BINS")) {
|
||||
name.replace(3, 7, QLatin1String("HOST"));
|
||||
versionInfo->insert(name, value);
|
||||
versionInfo->insert(name + QLatin1String("/get"), value);
|
||||
versionInfo->insert(ProKey(name), value);
|
||||
versionInfo->insert(ProKey(name + QLatin1String("/get")), value);
|
||||
}
|
||||
} else if (name.startsWith(QLatin1String("QT_HOST_"))) {
|
||||
versionInfo->insert(name + QLatin1String("/get"), value);
|
||||
versionInfo->insert(ProKey(name + QLatin1String("/get")), value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1476,7 +1477,7 @@ bool BaseQtVersion::queryQMakeVariables(const FileName &binary, const Environmen
|
||||
return true;
|
||||
}
|
||||
|
||||
FileName BaseQtVersion::mkspecDirectoryFromVersionInfo(const QHash<QString, QString> &versionInfo)
|
||||
FileName BaseQtVersion::mkspecDirectoryFromVersionInfo(const QHash<ProKey, ProString> &versionInfo)
|
||||
{
|
||||
QString dataDir = qmakeProperty(versionInfo, "QT_HOST_DATA", PropertyVariantSrc);
|
||||
if (dataDir.isEmpty())
|
||||
@@ -1484,7 +1485,7 @@ FileName BaseQtVersion::mkspecDirectoryFromVersionInfo(const QHash<QString, QStr
|
||||
return FileName::fromUserInput(dataDir + QLatin1String("/mkspecs"));
|
||||
}
|
||||
|
||||
FileName BaseQtVersion::mkspecFromVersionInfo(const QHash<QString, QString> &versionInfo)
|
||||
FileName BaseQtVersion::mkspecFromVersionInfo(const QHash<ProKey, ProString> &versionInfo)
|
||||
{
|
||||
FileName baseMkspecDir = mkspecDirectoryFromVersionInfo(versionInfo);
|
||||
if (baseMkspecDir.isEmpty())
|
||||
@@ -1564,7 +1565,7 @@ FileName BaseQtVersion::mkspecFromVersionInfo(const QHash<QString, QString> &ver
|
||||
return mkspecFullPath;
|
||||
}
|
||||
|
||||
FileName BaseQtVersion::sourcePath(const QHash<QString, QString> &versionInfo)
|
||||
FileName BaseQtVersion::sourcePath(const QHash<ProKey, ProString> &versionInfo)
|
||||
{
|
||||
const QString qt5Source = qmakeProperty(versionInfo, "QT_INSTALL_PREFIX/src");
|
||||
if (!qt5Source.isEmpty())
|
||||
|
||||
@@ -48,6 +48,8 @@ class Task;
|
||||
} // namespace ProjectExplorer
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class ProKey;
|
||||
class ProString;
|
||||
class ProFileEvaluator;
|
||||
class QMakeGlobals;
|
||||
class QSettings;
|
||||
@@ -246,14 +248,14 @@ private:
|
||||
enum Binaries { QmlViewer, QmlScene, Designer, Linguist, Uic, QScxmlc };
|
||||
QString findQtBinary(Binaries binary) const;
|
||||
void updateMkspec() const;
|
||||
QHash<QString,QString> versionInfo() const;
|
||||
QHash<ProKey, ProString> 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,
|
||||
QHash<ProKey, ProString> *versionInfo, QString *error = 0);
|
||||
static QString qmakeProperty(const QHash<ProKey, ProString> &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);
|
||||
static Utils::FileName mkspecDirectoryFromVersionInfo(const QHash<ProKey,ProString> &versionInfo);
|
||||
static Utils::FileName mkspecFromVersionInfo(const QHash<ProKey,ProString> &versionInfo);
|
||||
static Utils::FileName sourcePath(const QHash<ProKey,ProString> &versionInfo);
|
||||
void setId(int id); // used by the qtversionmanager for legacy restore
|
||||
// and by the qtoptionspage to replace Qt versions
|
||||
|
||||
@@ -286,7 +288,7 @@ private:
|
||||
|
||||
mutable QHash<QString, QString> m_mkspecValues;
|
||||
|
||||
mutable QHash<QString,QString> m_versionInfo;
|
||||
mutable QHash<ProKey, ProString> m_versionInfo;
|
||||
|
||||
Utils::FileName m_qmakeCommand;
|
||||
mutable QString m_qtVersionString;
|
||||
|
||||
@@ -47,7 +47,7 @@ QtVersionFactory::~QtVersionFactory()
|
||||
|
||||
BaseQtVersion *QtVersionFactory::createQtVersionFromQMakePath(const Utils::FileName &qmakePath, bool isAutoDetected, const QString &autoDetectionSource, QString *error)
|
||||
{
|
||||
QHash<QString, QString> versionInfo;
|
||||
QHash<ProKey, ProString> versionInfo;
|
||||
if (!BaseQtVersion::queryQMakeVariables(qmakePath, Utils::Environment::systemEnvironment(),
|
||||
&versionInfo, error))
|
||||
return 0;
|
||||
|
||||
@@ -367,13 +367,6 @@ bool QMakeGlobals::initProperties()
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#else
|
||||
void QMakeGlobals::setProperties(const QHash<QString, QString> &props)
|
||||
{
|
||||
QHash<QString, QString>::ConstIterator it = props.constBegin(), eit = props.constEnd();
|
||||
for (; it != eit; ++it)
|
||||
properties.insert(ProKey(it.key()), ProString(it.value()));
|
||||
}
|
||||
#endif
|
||||
#endif // QT_BUILD_QMAKE
|
||||
|
||||
|
||||
@@ -126,7 +126,6 @@ public:
|
||||
# ifdef PROEVALUATOR_INIT_PROPS
|
||||
bool initProperties();
|
||||
# else
|
||||
void setProperties(const QHash<QString, QString> &props);
|
||||
void setProperties(const QHash<ProKey, ProString> &props) { properties = props; }
|
||||
# endif
|
||||
ProString propertyValue(const ProKey &name) const { return properties.value(name); }
|
||||
|
||||
Reference in New Issue
Block a user