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