SDKtool: Make AddKit handle cmake related settings

--cmake <ID>, --cmake-generator <GEN>:<EXTRA>:<TOOLSET>:<PLATFORM>
and --cmake-config "<KEY>:<TYPE>=<VALUE>" are now supported.

When using --cmake-generator <GEN> must be set, the rest is optional.

--cmake-config may be repeated several times. All will end up in the
kit in the sequence they appear on the command line.

Task-number: QTCREATORBUG-17290
Change-Id: Ida79d65095682331f53d0fbb36d606ad16e6c4ac
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Tobias Hunger
2016-11-17 14:07:03 +01:00
parent 5f6a3f90fb
commit 2d777a8082
3 changed files with 133 additions and 32 deletions

View File

@@ -25,6 +25,7 @@
#include "addkitoperation.h" #include "addkitoperation.h"
#include "addcmakeoperation.h"
#include "addkeysoperation.h" #include "addkeysoperation.h"
#include "addtoolchainoperation.h" #include "addtoolchainoperation.h"
#include "addqtoperation.h" #include "addqtoperation.h"
@@ -66,6 +67,9 @@ const char SYSROOT[] = "PE.Profile.SysRoot";
const char TOOLCHAIN[] = "PE.Profile.ToolChains"; const char TOOLCHAIN[] = "PE.Profile.ToolChains";
const char MKSPEC[] = "QtPM4.mkSpecInformation"; const char MKSPEC[] = "QtPM4.mkSpecInformation";
const char QT[] = "QtSupport.QtInformation"; const char QT[] = "QtSupport.QtInformation";
const char CMAKE_ID[] = "CMakeProjectManager.CMakeKitInformation";
const char CMAKE_GENERATOR[] = "CMake.GeneratorKitInformation";
const char CMAKE_CONFIGURATION[] = "CMake.ConfigurationKitInformation";
AddKitOperation::AddKitOperation() AddKitOperation::AddKitOperation()
: m_debuggerEngine(0) : m_debuggerEngine(0)
@@ -100,6 +104,10 @@ QString AddKitOperation::argumentsHelpText() const
" --qt <ID> Qt of the new kit.\n" " --qt <ID> Qt of the new kit.\n"
" --mkspec <PATH> mkspec of the new kit.\n" " --mkspec <PATH> mkspec of the new kit.\n"
" --env <VALUE> add a custom environment setting. [may be repeated]\n" " --env <VALUE> add a custom environment setting. [may be repeated]\n"
" --cmake <ID> set a cmake tool.\n"
" --cmake-generator <GEN>:<EXTRA>:<TOOLSET>:<PLATFORM>\n"
" set a cmake generator.\n"
" --cmake-config <KEY:TYPE=VALUE> set a cmake configuration value [may be repeated]\n"
" <KEY> <TYPE:VALUE> extra key value pairs\n"); " <KEY> <TYPE:VALUE> extra key value pairs\n");
} }
@@ -233,6 +241,36 @@ bool AddKitOperation::setArguments(const QStringList &args)
continue; continue;
} }
if (current == "--cmake") {
if (next.isNull())
return false;
++i;
m_cmakeId = next;
continue;
}
if (current == "--cmake-generator") {
if (next.isNull())
return false;
++i;
QStringList parts = next.split(':');
m_cmakeGenerator = parts.count() >= 1 ? parts.at(0) : QString();
m_cmakeExtraGenerator = parts.count() >= 2 ? parts.at(1) : QString();
m_cmakeGeneratorToolset = parts.count() >= 3 ? parts.at(2) : QString();
m_cmakeGeneratorPlatform = parts.count() >= 4 ? parts.at(3) : QString();
if (parts.count() > 4)
return false;
continue;
}
if (current == "--cmake-config") {
if (next.isNull())
return false;
++i;
m_cmakeConfiguration.append(next);
continue;
}
if (next.isNull()) if (next.isNull())
return false; return false;
++i; // skip next; ++i; // skip next;
@@ -242,9 +280,6 @@ bool AddKitOperation::setArguments(const QStringList &args)
m_extra << pair; m_extra << pair;
} }
if (m_icon.isEmpty())
m_icon = ":///DESKTOP///";
if (m_id.isEmpty()) if (m_id.isEmpty())
std::cerr << "No id given for kit." << std::endl << std::endl; std::cerr << "No id given for kit." << std::endl << std::endl;
if (m_displayName.isEmpty()) if (m_displayName.isEmpty())
@@ -267,7 +302,9 @@ int AddKitOperation::execute() const
QVariantMap result = addKit(map, m_id, m_displayName, m_icon, m_debuggerId, m_debuggerEngine, QVariantMap result = addKit(map, m_id, m_displayName, m_icon, m_debuggerId, m_debuggerEngine,
m_debugger, m_deviceType, m_device, m_sysRoot, m_tcs, m_qt, m_debugger, m_deviceType, m_device, m_sysRoot, m_tcs, m_qt,
m_mkspec, m_env, m_extra); m_mkspec, m_cmakeId, m_cmakeGenerator, m_cmakeExtraGenerator,
m_cmakeGeneratorToolset, m_cmakeGeneratorPlatform, m_cmakeConfiguration,
m_env, m_extra);
if (result.isEmpty() || map == result) if (result.isEmpty() || map == result)
return 2; return 2;
@@ -311,27 +348,33 @@ bool AddKitOperation::test() const
tcs.insert("Cxx", "{tcXX-id}"); tcs.insert("Cxx", "{tcXX-id}");
// Fail if TC is not there: // Fail if TC is not there:
QVariantMap empty = addKit(map, tcMap, qtMap, devMap, QVariantMap empty = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
"testId", "Test Kit", "/tmp/icon.png", QString(), 1, "testId", "Test Kit", "/tmp/icon.png", QString(), 1,
"/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(), "/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(),
tcs, "{qt-id}", "unsupported/mkspec", QStringList(), tcs, "{qt-id}", "unsupported/mkspec",
QString(), QString(), QString(), QString(), QString(), QStringList(),
QStringList(),
KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
if (!empty.isEmpty()) if (!empty.isEmpty())
return false; return false;
// Do not fail if TC is an ABI: // Do not fail if TC is an ABI:
tcs.clear(); tcs.clear();
tcs.insert("C", "x86-linux-generic-elf-64bit"); tcs.insert("C", "x86-linux-generic-elf-64bit");
empty = addKit(map, tcMap, qtMap, devMap, "testId", "Test Kit", "/tmp/icon.png", QString(), 1, empty = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
"testId", "Test Kit", "/tmp/icon.png", QString(), 1,
"/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(), "/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(),
tcs, "{qt-id}", "unsupported/mkspec", env, tcs, "{qt-id}", "unsupported/mkspec",
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
if (empty.isEmpty()) if (empty.isEmpty())
return false; return false;
// QTCREATORBUG-11983, mach_o was not covered by the first attempt to fix this. // QTCREATORBUG-11983, mach_o was not covered by the first attempt to fix this.
tcs.insert("D", "x86-macos-generic-mach_o-64bit"); tcs.insert("D", "x86-macos-generic-mach_o-64bit");
empty = addKit(map, tcMap, qtMap, devMap, "testId", "Test Kit", "/tmp/icon.png", QString(), 1, empty = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
"testId", "Test Kit", "/tmp/icon.png", QString(), 1,
"/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(), "/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(),
tcs, "{qt-id}", "unsupported/mkspec", env, tcs, "{qt-id}", "unsupported/mkspec",
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
if (empty.isEmpty()) if (empty.isEmpty())
return false; return false;
@@ -340,24 +383,30 @@ bool AddKitOperation::test() const
tcs.insert("Cxx", "{tc-id}"); tcs.insert("Cxx", "{tc-id}");
// Fail if Qt is not there: // Fail if Qt is not there:
empty = addKit(map, tcMap, qtMap, devMap, "testId", "Test Kit", "/tmp/icon.png", QString(), 1, empty = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
"testId", "Test Kit", "/tmp/icon.png", QString(), 1,
"/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(), tcs, "{qtXX-id}", "/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(), tcs, "{qtXX-id}",
"unsupported/mkspec", env, "unsupported/mkspec",
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
if (!empty.isEmpty()) if (!empty.isEmpty())
return false; return false;
// Fail if dev is not there: // Fail if dev is not there:
empty = addKit(map, tcMap, qtMap, devMap, "testId", "Test Kit", "/tmp/icon.png", QString(), 1, empty = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
"testId", "Test Kit", "/tmp/icon.png", QString(), 1,
"/usr/bin/gdb-test", "Desktop", "{devXX-id}", QString(), tcs, "{qt-id}", "/usr/bin/gdb-test", "Desktop", "{devXX-id}", QString(), tcs, "{qt-id}",
"unsupported/mkspec", env, "unsupported/mkspec",
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
if (!empty.isEmpty()) if (!empty.isEmpty())
return false; return false;
// Profile 0: // Profile 0:
map = addKit(map, tcMap, qtMap, devMap, "testId", "Test Kit", "/tmp/icon.png", QString(), 1, map = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
"testId", "Test Kit", "/tmp/icon.png", QString(), 1,
"/usr/bin/gdb-test", "Desktop", QString(), QString(), tcs, "{qt-id}", "/usr/bin/gdb-test", "Desktop", QString(), QString(), tcs, "{qt-id}",
"unsupported/mkspec", env, "unsupported/mkspec",
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
if (map.count() != 4 if (map.count() != 4
@@ -392,17 +441,21 @@ bool AddKitOperation::test() const
return false; return false;
// Ignore existing ids: // Ignore existing ids:
QVariantMap result = addKit(map, tcMap, qtMap, devMap, "testId", "Test Qt Version X", QVariantMap result = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
"testId", "Test Qt Version X",
"/tmp/icon3.png", QString(), 1, "/usr/bin/gdb-test3", "Desktop", "/tmp/icon3.png", QString(), 1, "/usr/bin/gdb-test3", "Desktop",
QString(), QString(), tcs, "{qt-id}", "unsupported/mkspec", env, QString(), QString(), tcs, "{qt-id}", "unsupported/mkspec",
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
if (!result.isEmpty()) if (!result.isEmpty())
return false; return false;
// Profile 1: Make sure name is unique: // Profile 1: Make sure name is unique:
map = addKit(map, tcMap, qtMap, devMap, "testId2", "Test Kit2", "/tmp/icon2.png", QString(), 1, map = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
"testId2", "Test Kit2", "/tmp/icon2.png", QString(), 1,
"/usr/bin/gdb-test2", "Desktop", "{dev-id}", "/sys/root\\\\", tcs, "/usr/bin/gdb-test2", "Desktop", "{dev-id}", "/sys/root\\\\", tcs,
"{qt-id}", "unsupported/mkspec", env, "{qt-id}", "unsupported/mkspec",
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
if (map.count() != 5 if (map.count() != 5
|| !map.contains(VERSION) || map.value(VERSION).toInt() != 1 || !map.contains(VERSION) || map.value(VERSION).toInt() != 1
@@ -442,9 +495,11 @@ bool AddKitOperation::test() const
return false; return false;
// Profile 2: Test debugger id: // Profile 2: Test debugger id:
map = addKit(map, tcMap, qtMap, devMap, "test with debugger Id", "Test debugger Id", map = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
"test with debugger Id", "Test debugger Id",
"/tmp/icon2.png", "debugger Id", 0, QString(), "Desktop", QString(), QString(), "/tmp/icon2.png", "debugger Id", 0, QString(), "Desktop", QString(), QString(),
tcs, "{qt-id}", "unsupported/mkspec", env, tcs, "{qt-id}", "unsupported/mkspec",
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
if (map.count() != 6 if (map.count() != 6
|| !map.contains(VERSION) || map.value(VERSION).toInt() != 1 || !map.contains(VERSION) || map.value(VERSION).toInt() != 1
@@ -484,25 +539,38 @@ QVariantMap AddKitOperation::addKit(const QVariantMap &map,
const quint32 &debuggerType, const QString &debugger, const quint32 &debuggerType, const QString &debugger,
const QString &deviceType, const QString &device, const QString &deviceType, const QString &device,
const QString &sysRoot, const QHash<QString, QString> &tcs, const QString &qt, const QString &sysRoot, const QHash<QString, QString> &tcs, const QString &qt,
const QString &mkspec, const QStringList &env, const QString &mkspec, const QString &cmakeId,
const QString &cmakeGenerator, const QString &cmakeExtraGenerator,
const QString &cmakeGeneratorToolset,
const QString &cmakeGeneratorPlatform,
const QStringList &cmakeConfiguration, const QStringList &env,
const KeyValuePairList &extra) const KeyValuePairList &extra)
{ {
QVariantMap tcMap = load("ToolChains"); QVariantMap tcMap = load("ToolChains");
QVariantMap qtMap = load("QtVersions"); QVariantMap qtMap = load("QtVersions");
QVariantMap devMap = load("Devices"); QVariantMap devMap = load("Devices");
QVariantMap cmakeMap = load("cmaketools");
return addKit(map, tcMap, qtMap, devMap, id, displayName, icon, debuggerId, debuggerType, return addKit(map, tcMap, qtMap, devMap, cmakeMap, id, displayName, icon, debuggerId, debuggerType,
debugger, deviceType, device, sysRoot, tcs, qt, mkspec, env, extra); debugger, deviceType, device, sysRoot, tcs, qt, mkspec,
cmakeId, cmakeGenerator, cmakeExtraGenerator, cmakeGeneratorToolset,
cmakeGeneratorPlatform, cmakeConfiguration,
env, extra);
} }
QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QVariantMap &tcMap, QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QVariantMap &tcMap,
const QVariantMap &qtMap, const QVariantMap &devMap, const QVariantMap &qtMap, const QVariantMap &devMap,
const QVariantMap &cmakeMap,
const QString &id, const QString &displayName, const QString &id, const QString &displayName,
const QString &icon, const QString &debuggerId, const QString &icon, const QString &debuggerId,
const quint32 &debuggerType, const QString &debugger, const quint32 &debuggerType, const QString &debugger,
const QString &deviceType, const QString &device, const QString &deviceType, const QString &device,
const QString &sysRoot, const QHash<QString, QString> &tcs, const QString &qt, const QString &sysRoot, const QHash<QString, QString> &tcs, const QString &qt,
const QString &mkspec, const QStringList &env, const QString &mkspec, const QString &cmakeId,
const QString &cmakeGenerator, const QString &cmakeExtraGenerator,
const QString &cmakeGeneratorToolset,
const QString &cmakeGeneratorPlatform,
const QStringList &cmakeConfiguration, const QStringList &env,
const KeyValuePairList &extra) const KeyValuePairList &extra)
{ {
// Sanity check: Make sure autodetection source is not in use already: // Sanity check: Make sure autodetection source is not in use already:
@@ -541,6 +609,10 @@ QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QVariantMap &t
std::cerr << "Error: Device " << qPrintable(device) << " does not exist." << std::endl; std::cerr << "Error: Device " << qPrintable(device) << " does not exist." << std::endl;
return QVariantMap(); return QVariantMap();
} }
if (!cmakeId.isEmpty() && !AddCMakeOperation::exists(cmakeMap, cmakeId)) {
std::cerr << "Error: CMake tool " << qPrintable(cmakeId) << " does not exist." << std::endl;
return QVariantMap();
}
// Find position to insert: // Find position to insert:
bool ok; bool ok;
@@ -592,6 +664,22 @@ QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QVariantMap &t
data << KeyValuePair({ kit, DATA, QT }, QVariant(qtId)); data << KeyValuePair({ kit, DATA, QT }, QVariant(qtId));
if (!mkspec.isNull()) if (!mkspec.isNull())
data << KeyValuePair({ kit, DATA, MKSPEC }, QVariant(mkspec)); data << KeyValuePair({ kit, DATA, MKSPEC }, QVariant(mkspec));
if (!cmakeId.isNull())
data << KeyValuePair({kit, CMAKE_ID}, QVariant(cmakeId));
if (!cmakeGenerator.isNull()) {
QVariantMap generatorMap;
generatorMap.insert("Generator", cmakeGenerator);
if (!cmakeExtraGenerator.isNull())
generatorMap.insert("ExtraGenerator", cmakeExtraGenerator);
if (!cmakeGeneratorToolset.isNull())
generatorMap.insert("Toolset", cmakeGeneratorToolset);
if (!cmakeGeneratorPlatform.isNull())
generatorMap.insert("Platform", cmakeGeneratorPlatform);
data << KeyValuePair({ kit, CMAKE_GENERATOR }, generatorMap);
}
if (!cmakeConfiguration.isEmpty()) {
data << KeyValuePair({kit, CMAKE_CONFIGURATION}, QVariant(cmakeConfiguration));
}
if (!env.isEmpty()) if (!env.isEmpty())
data << KeyValuePair({ kit, DATA, ENV }, QVariant(env)); data << KeyValuePair({ kit, DATA, ENV }, QVariant(env));

View File

@@ -52,20 +52,24 @@ public:
const quint32 &debuggerType, const QString &debugger, const quint32 &debuggerType, const QString &debugger,
const QString &deviceType, const QString &device, const QString &deviceType, const QString &device,
const QString &sysRoot, const QHash<QString, QString> &tcs, const QString &sysRoot, const QHash<QString, QString> &tcs,
const QString &qt, const QString &mkspec, const QStringList &env, const QString &qt, const QString &mkspec,
const QString &cmakeId, const QString &cmakeGenerator,
const QString &cmakeExtraGenerator, const QString &cmakeGeneratorToolset,
const QString &cmakeGeneratorPlatform,
const QStringList &cmakeConfiguration, const QStringList &env,
const KeyValuePairList &extra); const KeyValuePairList &extra);
static QVariantMap initializeKits(); static QVariantMap initializeKits();
// internal: // internal:
static QVariantMap addKit(const QVariantMap &map, const QVariantMap &tcMap, static QVariantMap addKit(const QVariantMap &map, const QVariantMap &tcMap,
const QVariantMap &qtMap, const QVariantMap &devMap, const QVariantMap &qtMap, const QVariantMap &devMap, const QVariantMap &cmakeMap,
const QString &id, const QString &displayName, const QString &id, const QString &displayName,
const QString &icon, const QString &debuggerId, const QString &icon, const QString &debuggerId,
const quint32 &debuggerType, const QString &debugger, const quint32 &debuggerType, const QString &debugger,
const QString &deviceType, const QString &device, const QString &deviceType, const QString &device,
const QString &sysRoot, const QHash<QString, QString> &tcs, const QString &sysRoot, const QHash<QString, QString> &tcs,
const QString &qt, const QString &mkspec, const QStringList &env, const QString &qt, const QString &mkspec, const QString &cmakeId, const QString &cmakeGenerator, const QString &cmakeExtraGenerator, const QString &cmakeGeneratorToolset, const QString &cmakeGeneratorPlatform, const QStringList &cmakeConfiguration, const QStringList &env,
const KeyValuePairList &extra); const KeyValuePairList &extra);
private: private:
@@ -81,6 +85,12 @@ private:
QHash<QString, QString> m_tcs; QHash<QString, QString> m_tcs;
QString m_qt; QString m_qt;
QString m_mkspec; QString m_mkspec;
QString m_cmakeId;
QString m_cmakeGenerator;
QString m_cmakeExtraGenerator;
QString m_cmakeGeneratorToolset;
QString m_cmakeGeneratorPlatform;
QStringList m_cmakeConfiguration;
QStringList m_env; QStringList m_env;
KeyValuePairList m_extra; KeyValuePairList m_extra;
}; };

View File

@@ -119,15 +119,18 @@ bool RmKitOperation::test() const
QVariantMap map = QVariantMap map =
AddKitOperation::addKit(AddKitOperation::initializeKits(), tcMap, qtMap, devMap, AddKitOperation::addKit(AddKitOperation::initializeKits(), tcMap, qtMap, devMap,
QVariantMap(),
"testId", "Test Qt Version", "/tmp/icon.png", QString(), 1, "testId", "Test Qt Version", "/tmp/icon.png", QString(), 1,
"/usr/bin/gdb-test", "Desktop", QString(), QString(), tcs, "/usr/bin/gdb-test", "Desktop", QString(), QString(), tcs,
"{qt-id}", "unsupported/mkspec", QStringList(), "{qt-id}", "unsupported/mkspec",
QString(), QString(), QString(), QString(), QString(), QStringList(), QStringList(),
KeyValuePairList() << KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))); KeyValuePairList() << KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")));
map = map =
AddKitOperation::addKit(map, tcMap, qtMap, devMap, "testId2", "Test Qt Version", AddKitOperation::addKit(map, tcMap, qtMap, devMap, QVariantMap(), "testId2", "Test Qt Version",
"/tmp/icon2.png", QString(), 1, "/usr/bin/gdb-test2", "/tmp/icon2.png", QString(), 1, "/usr/bin/gdb-test2",
"Desktop", QString(), QString(), tcs, "{qt-id}", "Desktop", QString(), QString(), tcs, "{qt-id}",
"unsupported/mkspec2", QStringList(), "unsupported/mkspec2",
QString(), QString(), QString(), QString(), QString(), QStringList(), QStringList(),
KeyValuePairList() << KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue2"))); KeyValuePairList() << KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue2")));
QVariantMap result = rmKit(map, "testId"); QVariantMap result = rmKit(map, "testId");