QtVersion: Allow to override ABIs via SDKtool

Allow for overriding the ABIs detected for a Qt version from the
sdktool.

Leave the default at "auto-detect ABI".

Change-Id: Ibe2625b0a321a9541512d36a91aa2e42611a959b
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Tobias Hunger
2018-06-21 14:40:12 +02:00
parent 7799f7fa21
commit 527484bba9
6 changed files with 48 additions and 17 deletions

View File

@@ -46,6 +46,7 @@ const char ID[] = "Id";
const char DISPLAYNAME[] = "Name";
const char AUTODETECTED[] = "isAutodetected";
const char AUTODETECTION_SOURCE[] = "autodetectionSource";
const char ABIS[] = "Abis";
const char QMAKE[] = "QMakePath";
const char TYPE[] = "QtVersion.Type";
@@ -72,6 +73,7 @@ QString AddQtOperation::argumentsHelpText() const
" --name <NAME> display name of the new Qt version. (required)\n"
" --qmake <PATH> path to qmake. (required)\n"
" --type <TYPE> type of Qt version to add. (required)\n"
" --abis <ABI>(,<ABI>)* ABIs of Qt version (leave out for auto-detection!)\n"
" <KEY> <TYPE:VALUE> extra key value pairs\n");
}
@@ -121,6 +123,16 @@ bool AddQtOperation::setArguments(const QStringList &args)
continue;
}
if (current == "--abis") {
if (next.isNull()) {
std::cerr << "Error parsing after --abis." << std::endl << std::endl;
return false;
}
++i; // skip next;
m_abis = next.split(',');
continue;
}
if (next.isNull()) {
std::cerr << "Unknown parameter: " << qPrintable(current) << std::endl << std::endl;
return false;
@@ -155,7 +167,7 @@ int AddQtOperation::execute() const
if (map.isEmpty())
map = initializeQtVersions();
QVariantMap result = addQt(map, m_id, m_displayName, m_type, m_qmake, m_extra);
QVariantMap result = addQt(map, m_id, m_displayName, m_type, m_qmake, m_extra, m_abis);
if (result.isEmpty() || result == map)
return 2;
@@ -176,11 +188,13 @@ bool AddQtOperation::test() const
#if defined Q_OS_WIN
map = addQt(map, QLatin1String("{some-qt-id}"), QLatin1String("Test Qt Version"), QLatin1String("testType"),
QLatin1String("/tmp//../tmp/test\\qmake"),
KeyValuePairList() << KeyValuePair(QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))));
KeyValuePairList() << KeyValuePair(QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))),
QStringList());
#else
map = addQt(map, QLatin1String("{some-qt-id}"), QLatin1String("Test Qt Version"), QLatin1String("testType"),
QLatin1String("/tmp//../tmp/test/qmake"),
KeyValuePairList() << KeyValuePair(QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))));
KeyValuePairList() << KeyValuePair(QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))),
QStringList());
#endif
if (map.count() != 2
@@ -190,7 +204,7 @@ bool AddQtOperation::test() const
return false;
QVariantMap version0 = map.value(QLatin1String("QtVersion.0")).toMap();
if (version0.count() != 7
if (version0.count() != 8
|| !version0.contains(QLatin1String(ID))
|| version0.value(QLatin1String(ID)).toInt() != -1
|| !version0.contains(QLatin1String(DISPLAYNAME))
@@ -201,6 +215,8 @@ bool AddQtOperation::test() const
|| version0.value(QLatin1String(AUTODETECTION_SOURCE)).toString() != QLatin1String("SDK.{some-qt-id}")
|| !version0.contains(QLatin1String(TYPE))
|| version0.value(QLatin1String(TYPE)).toString() != QLatin1String("testType")
|| !version0.contains(QLatin1String(ABIS))
|| version0.value(QLatin1String(ABIS)).toStringList() != QStringList()
|| !version0.contains(QLatin1String(QMAKE))
|| version0.value(QLatin1String(QMAKE)).toString() != QLatin1String("/tmp/test/qmake")
|| !version0.contains(QLatin1String("extraData"))
@@ -210,14 +226,16 @@ bool AddQtOperation::test() const
// Ignore existing ids:
QVariantMap result = addQt(map, QLatin1String("{some-qt-id}"), QLatin1String("Test Qt Version2"), QLatin1String("testType2"),
QLatin1String("/tmp/test/qmake2"),
KeyValuePairList() << KeyValuePair(QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))));
KeyValuePairList() << KeyValuePair(QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))),
QStringList());
if (!result.isEmpty())
return false;
// Make sure name is unique:
map = addQt(map, QLatin1String("testId2"), QLatin1String("Test Qt Version"), QLatin1String("testType3"),
QLatin1String("/tmp/test/qmake2"),
KeyValuePairList() << KeyValuePair(QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))));
QLatin1String("/tmp/test/qmake2"),
KeyValuePairList() << KeyValuePair(QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))),
QStringList());
if (map.count() != 3
|| !map.contains(QLatin1String(VERSION))
|| map.value(QLatin1String(VERSION)).toInt() != 1
@@ -229,7 +247,7 @@ bool AddQtOperation::test() const
return false;
QVariantMap version1 = map.value(QLatin1String("QtVersion.1")).toMap();
if (version1.count() != 7
if (version1.count() != 8
|| !version1.contains(QLatin1String(ID))
|| version1.value(QLatin1String(ID)).toInt() != -1
|| !version1.contains(QLatin1String(DISPLAYNAME))
@@ -240,6 +258,8 @@ bool AddQtOperation::test() const
|| version1.value(QLatin1String(AUTODETECTION_SOURCE)).toString() != QLatin1String("SDK.testId2")
|| !version1.contains(QLatin1String(TYPE))
|| version1.value(QLatin1String(TYPE)).toString() != QLatin1String("testType3")
|| !version1.contains(QLatin1String(ABIS))
|| version1.value(QLatin1String(ABIS)).toStringList() != QStringList()
|| !version1.contains(QLatin1String(QMAKE))
|| version1.value(QLatin1String(QMAKE)).toString() != QLatin1String("/tmp/test/qmake2")
|| !version1.contains(QLatin1String("extraData"))
@@ -252,7 +272,8 @@ bool AddQtOperation::test() const
QVariantMap AddQtOperation::addQt(const QVariantMap &map,
const QString &id, const QString &displayName, const QString &type,
const QString &qmake, const KeyValuePairList &extra)
const QString &qmake, const KeyValuePairList &extra,
const QStringList &abis)
{
QString sdkId = extendId(id);
@@ -293,6 +314,7 @@ QVariantMap AddQtOperation::addQt(const QVariantMap &map,
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));
data << KeyValuePair(QStringList() << qt << ABIS, QVariant(abis));
KeyValuePairList qtExtraList;
foreach (const KeyValuePair &pair, extra)
@@ -322,10 +344,8 @@ bool AddQtOperation::exists(const QVariantMap &map, const QString &id)
// Sanity check: Make sure autodetection source is not in use already:
QStringList valueKeys = FindValueOperation::findValue(map, sdkId);
foreach (const QString &k, valueKeys) {
if (k.endsWith(QString(QLatin1Char('/')) + QLatin1String(AUTODETECTION_SOURCE))) {
if (k.endsWith(QString(QLatin1Char('/')) + QLatin1String(AUTODETECTION_SOURCE)))
return true;
break;
}
}
return false;
}