SDKtool: Fix autodetection sources of Qt versions

Make sure to use autodetection sources (--id) in sdktool that
are actually expected by Creator. Do so by prepending the necessary
magic.

This makes sure that creator will actually remove the SDK Qt versions
again once they get removed by SDKtool.

Task-number: QTCREATORBUG-8235
Change-Id: I8dde1ab1ae192c8f79de9fb9104461e7435237ec
Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
This commit is contained in:
Tobias Hunger
2012-11-20 16:28:53 +01:00
parent 280dc45537
commit af2b39699a
2 changed files with 12 additions and 3 deletions

View File

@@ -255,8 +255,12 @@ QVariantMap AddQtOperation::addQt(const QVariantMap &map,
const QString &id, const QString &displayName, const QString &type,
const QString &qmake, const KeyValuePairList &extra)
{
QString sdkId = id;
if (!id.startsWith(QLatin1String("SDK.")))
sdkId = QString::fromLatin1("SDK.") + id;
// Sanity check: Make sure autodetection source is not in use already:
QStringList valueKeys = FindValueOperation::findValues(map, id);
QStringList valueKeys = FindValueOperation::findValues(map, sdkId);
bool hasId = false;
foreach (const QString &k, valueKeys) {
if (k.endsWith(QString(QLatin1Char('/')) + QLatin1String(AUTODETECTION_SOURCE))) {
@@ -297,7 +301,7 @@ QVariantMap AddQtOperation::addQt(const QVariantMap &map,
data << KeyValuePair(QStringList() << qt << QLatin1String(ID), QVariant(-1));
data << KeyValuePair(QStringList() << qt << QLatin1String(DISPLAYNAME), QVariant(uniqueName));
data << KeyValuePair(QStringList() << qt << QLatin1String(AUTODETECTED), QVariant(true));
data << KeyValuePair(QStringList() << qt << QLatin1String(AUTODETECTION_SOURCE), QVariant(id));
data << KeyValuePair(QStringList() << qt << QLatin1String(AUTODETECTION_SOURCE), QVariant(sdkId));
data << KeyValuePair(QStringList() << qt << QLatin1String(QMAKE), QVariant(saneQmake));
data << KeyValuePair(QStringList() << qt << QLatin1String(TYPE), QVariant(type));

View File

@@ -133,12 +133,17 @@ bool RmQtOperation::test() const
QVariantMap RmQtOperation::rmQt(const QVariantMap &map, const QString &id)
{
QString sdkId = id;
if (!id.startsWith(QLatin1String("SDK.")))
sdkId = QString::fromLatin1("SDK.") + id;
QVariantList qtList;
for (QVariantMap::const_iterator i = map.begin(); i != map.end(); ++i) {
if (!i.key().startsWith(QLatin1String(PREFIX)))
continue;
QVariantMap qtData = i.value().toMap();
if (qtData.value(QLatin1String(AUTODETECTION_SOURCE)).toString() != id)
const QString dataId = qtData.value(QLatin1String(AUTODETECTION_SOURCE)).toString();
if ((dataId != id) && (dataId != sdkId))
qtList.append(qtData);
}