summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@theqtcompany.com>2015-04-30 12:55:26 +0200
committerTobias Hunger <tobias.hunger@theqtcompany.com>2015-05-04 13:50:34 +0000
commitb2e3f0262bbf5de4fea24207cd824e162e8e59e4 (patch)
tree45892e94d5333daca35959b33f063d0175f7b441
parent5aba7fb09504e1a08e25c0a5f388f8108c472b05 (diff)
downloadqt-creator-b2e3f0262bbf5de4fea24207cd824e162e8e59e4.tar.gz
Sdktool: Add switch to set environment for kits.
Use --env TEST=somevalue or --env TEST (to unset TEST) once per environment variable you want to set/unset. Task-number: QTCREATORBUG-14342 Change-Id: Ia968aeb55a9702d12bc0beb9a38bdd8309a18559 Reviewed-by: Rainer Keller <rainer.keller@theqtcompany.com> Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
-rw-r--r--src/tools/sdktool/addkitoperation.cpp48
-rw-r--r--src/tools/sdktool/addkitoperation.h5
-rw-r--r--src/tools/sdktool/addtoolchainoperation.cpp2
-rw-r--r--src/tools/sdktool/rmkitoperation.cpp2
4 files changed, 45 insertions, 12 deletions
diff --git a/src/tools/sdktool/addkitoperation.cpp b/src/tools/sdktool/addkitoperation.cpp
index 818869686d..70c3f7acc5 100644
--- a/src/tools/sdktool/addkitoperation.cpp
+++ b/src/tools/sdktool/addkitoperation.cpp
@@ -57,6 +57,7 @@ const char DISPLAYNAME[] = "PE.Profile.Name";
const char ICON[] = "PE.Profile.Icon";
const char AUTODETECTED[] = "PE.Profile.AutoDetected";
const char SDK[] = "PE.Profile.SDK";
+const char ENV[] = "PE.Profile.Environment";
const char DATA[] = "PE.Profile.Data";
// Standard KitInformation:
@@ -100,6 +101,7 @@ QString AddKitOperation::argumentsHelpText() const
" --toolchain <ID> tool chain of the new kit.\n"
" --qt <ID> Qt of the new kit.\n"
" --mkspec <PATH> mkspec of the new kit.\n"
+ " --env <VALUE> add a custom environment setting. [may be repeated]\n"
" <KEY> <TYPE:VALUE> extra key value pairs\n");
}
@@ -212,6 +214,14 @@ bool AddKitOperation::setArguments(const QStringList &args)
continue;
}
+ if (current == QLatin1String("--env")) {
+ if (next.isNull())
+ return false;
+ ++i; // skip next;
+ m_env.append(next);
+ continue;
+ }
+
if (next.isNull())
return false;
++i; // skip next;
@@ -249,7 +259,7 @@ int AddKitOperation::execute() const
QVariantMap result = addKit(map, m_id, m_displayName, m_icon, m_debuggerId, m_debuggerEngine,
m_debugger, m_deviceType, m_device, m_sysRoot, m_tc, m_qt,
- m_mkspec, m_extra);
+ m_mkspec, m_env, m_extra);
if (result.isEmpty() || map == result)
return 2;
@@ -283,6 +293,9 @@ bool AddKitOperation::test() const
QLatin1String("uname"), 1,
KeyValuePairList());
+ QStringList env;
+ env << QLatin1String("TEST=1") << QLatin1String("PATH");
+
if (map.count() != 3
|| !map.contains(QLatin1String(VERSION))
|| map.value(QLatin1String(VERSION)).toInt() != 1
@@ -298,6 +311,7 @@ bool AddKitOperation::test() const
QString(), 1, QLatin1String("/usr/bin/gdb-test"),
QLatin1String("Desktop"), QLatin1String("{dev-id}"), QString(),
QLatin1String("{tcXX-id}"), QLatin1String("{qt-id}"), QLatin1String("unsupported/mkspec"),
+ QStringList(),
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (!empty.isEmpty())
return false;
@@ -307,6 +321,7 @@ bool AddKitOperation::test() const
QString(), 1, QLatin1String("/usr/bin/gdb-test"),
QLatin1String("Desktop"), QLatin1String("{dev-id}"), QString(),
QLatin1String("x86-linux-generic-elf-64bit"), QLatin1String("{qt-id}"), QLatin1String("unsupported/mkspec"),
+ env,
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (empty.isEmpty())
return false;
@@ -316,6 +331,7 @@ bool AddKitOperation::test() const
QString(), 1, QLatin1String("/usr/bin/gdb-test"),
QLatin1String("Desktop"), QLatin1String("{dev-id}"), QString(),
QLatin1String("x86-macos-generic-mach_o-64bit"), QLatin1String("{qt-id}"), QLatin1String("unsupported/mkspec"),
+ env,
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (empty.isEmpty())
return false;
@@ -326,6 +342,7 @@ bool AddKitOperation::test() const
QString(), 1, QLatin1String("/usr/bin/gdb-test"),
QLatin1String("Desktop"), QLatin1String("{dev-id}"), QString(),
QLatin1String("{tc-id}"), QLatin1String("{qtXX-id}"), QLatin1String("unsupported/mkspec"),
+ env,
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (!empty.isEmpty())
return false;
@@ -335,15 +352,18 @@ bool AddKitOperation::test() const
QString(), 1, QLatin1String("/usr/bin/gdb-test"),
QLatin1String("Desktop"), QLatin1String("{devXX-id}"), QString(),
QLatin1String("{tc-id}"), QLatin1String("{qt-id}"), QLatin1String("unsupported/mkspec"),
+ env,
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (!empty.isEmpty())
return false;
+ // Profile 0:
map = addKit(map, tcMap, qtMap, devMap,
QLatin1String("testId"), QLatin1String("Test Kit"), QLatin1String("/tmp/icon.png"),
QString(), 1, QLatin1String("/usr/bin/gdb-test"),
QLatin1String("Desktop"), QString(), QString(),
QLatin1String("{tc-id}"), QLatin1String("{qt-id}"), QLatin1String("unsupported/mkspec"),
+ env,
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (map.count() != 4
@@ -373,7 +393,7 @@ bool AddKitOperation::test() const
return false;
QVariantMap data = profile0.value(QLatin1String(DATA)).toMap();
- if (data.count() != 6
+ if (data.count() != 7
|| !data.contains(QLatin1String(DEBUGGER))
|| data.value(QLatin1String(DEBUGGER)).type() != QVariant::Map
|| !data.contains(QLatin1String(DEVICE_TYPE))
@@ -394,16 +414,18 @@ bool AddKitOperation::test() const
QString(), 1, QLatin1String("/usr/bin/gdb-test3"),
QLatin1String("Desktop"), QString(), QString(),
QLatin1String("{tc-id}"), QLatin1String("{qt-id}"), QLatin1String("unsupported/mkspec"),
+ env,
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (!result.isEmpty())
return false;
- // Make sure name is unique:
+ // Profile 1: Make sure name is unique:
map = addKit(map, tcMap, qtMap, devMap,
QLatin1String("testId2"), QLatin1String("Test Kit2"), QLatin1String("/tmp/icon2.png"),
QString(), 1, QLatin1String("/usr/bin/gdb-test2"),
QLatin1String("Desktop"), QLatin1String("{dev-id}"), QLatin1String("/sys/root\\\\"),
QLatin1String("{tc-id}"), QLatin1String("{qt-id}"), QLatin1String("unsupported/mkspec"),
+ env,
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (map.count() != 5
|| !map.contains(QLatin1String(VERSION))
@@ -435,7 +457,7 @@ bool AddKitOperation::test() const
return false;
data = profile1.value(QLatin1String(DATA)).toMap();
- if (data.count() != 8
+ if (data.count() != 9
|| !data.contains(QLatin1String(DEBUGGER))
|| data.value(QLatin1String(DEBUGGER)).type() != QVariant::Map
|| !data.contains(QLatin1String(DEVICE_TYPE))
@@ -450,16 +472,19 @@ bool AddKitOperation::test() const
|| data.value(QLatin1String(QT)).toString() != QLatin1String("SDK.{qt-id}")
|| !data.contains(QLatin1String(MKSPEC))
|| data.value(QLatin1String(MKSPEC)).toString() != QLatin1String("unsupported/mkspec")
+ || !data.contains(QLatin1String(ENV))
+ || data.value(QLatin1String(ENV)).toStringList() != env
|| !data.contains(QLatin1String("extraData"))
|| data.value(QLatin1String("extraData")).toString() != QLatin1String("extraValue"))
return false;
- // Test debugger id:
+ // Profile 2: Test debugger id:
map = addKit(map, tcMap, qtMap, devMap,
QLatin1String("test with debugger Id"), QLatin1String("Test debugger Id"), QLatin1String("/tmp/icon2.png"),
QString::fromLatin1("debugger Id"), 0, QString(),
QLatin1String("Desktop"), QString(), QString(),
QLatin1String("{tc-id}"), QLatin1String("{qt-id}"), QLatin1String("unsupported/mkspec"),
+ env,
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (map.count() != 6
|| !map.contains(QLatin1String(VERSION))
@@ -494,7 +519,7 @@ bool AddKitOperation::test() const
return false;
data = profile2.value(QLatin1String(DATA)).toMap();
- if (data.count() != 6
+ if (data.count() != 7
|| !data.contains(QLatin1String(DEBUGGER))
|| data.value(QLatin1String(DEBUGGER)).toString() != QLatin1String("debugger Id"))
return false;
@@ -509,14 +534,15 @@ QVariantMap AddKitOperation::addKit(const QVariantMap &map,
const quint32 &debuggerType, const QString &debugger,
const QString &deviceType, const QString &device,
const QString &sysRoot, const QString &tc, const QString &qt,
- const QString &mkspec, const KeyValuePairList &extra)
+ const QString &mkspec, const QStringList &env,
+ const KeyValuePairList &extra)
{
QVariantMap tcMap = load(QLatin1String("ToolChains"));
QVariantMap qtMap = load(QLatin1String("QtVersions"));
QVariantMap devMap = load(QLatin1String("Devices"));
return addKit(map, tcMap, qtMap, devMap, id, displayName, icon, debuggerId, debuggerType,
- debugger, deviceType, device, sysRoot, tc, qt, mkspec, extra);
+ debugger, deviceType, device, sysRoot, tc, qt, mkspec, env, extra);
}
QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QVariantMap &tcMap,
@@ -526,7 +552,8 @@ QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QVariantMap &t
const quint32 &debuggerType, const QString &debugger,
const QString &deviceType, const QString &device,
const QString &sysRoot, const QString &tc, const QString &qt,
- const QString &mkspec, const KeyValuePairList &extra)
+ const QString &mkspec, const QStringList &env,
+ const KeyValuePairList &extra)
{
// Sanity check: Make sure autodetection source is not in use already:
QStringList valueKeys = FindValueOperation::findValue(map, QVariant(id));
@@ -624,6 +651,9 @@ QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QVariantMap &t
if (!mkspec.isNull())
data << KeyValuePair(QStringList() << kit << QLatin1String(DATA)
<< QLatin1String(MKSPEC), QVariant(mkspec));
+ if (!env.isEmpty())
+ data << KeyValuePair(QStringList() << kit << QLatin1String(DATA)
+ << QLatin1String(ENV), QVariant(env));
data << KeyValuePair(QStringList() << QLatin1String(DEFAULT), QVariant(defaultKit));
data << KeyValuePair(QStringList() << QLatin1String(COUNT), QVariant(count + 1));
diff --git a/src/tools/sdktool/addkitoperation.h b/src/tools/sdktool/addkitoperation.h
index c002829ff4..20ff66e3de 100644
--- a/src/tools/sdktool/addkitoperation.h
+++ b/src/tools/sdktool/addkitoperation.h
@@ -57,7 +57,7 @@ public:
const quint32 &debuggerType, const QString &debugger,
const QString &deviceType, const QString &device,
const QString &sysRoot, const QString &tc, const QString &qt,
- const QString &mkspec, const KeyValuePairList &extra);
+ const QString &mkspec, const QStringList &env, const KeyValuePairList &extra);
static QVariantMap initializeKits();
@@ -69,7 +69,7 @@ public:
const quint32 &debuggerType, const QString &debugger,
const QString &deviceType, const QString &device,
const QString &sysRoot, const QString &tc, const QString &qt,
- const QString &mkspec, const KeyValuePairList &extra);
+ const QString &mkspec, const QStringList &env, const KeyValuePairList &extra);
private:
QString m_id;
@@ -84,6 +84,7 @@ private:
QString m_tc;
QString m_qt;
QString m_mkspec;
+ QStringList m_env;
KeyValuePairList m_extra;
};
diff --git a/src/tools/sdktool/addtoolchainoperation.cpp b/src/tools/sdktool/addtoolchainoperation.cpp
index a3003f3dee..dd5e658a77 100644
--- a/src/tools/sdktool/addtoolchainoperation.cpp
+++ b/src/tools/sdktool/addtoolchainoperation.cpp
@@ -280,7 +280,7 @@ QVariantMap AddToolChainOperation::initializeToolChains()
bool AddToolChainOperation::exists(const QVariantMap &map, const QString &id)
{
- QStringList valueKeys = FindValueOperation::findValue(map, id.toUtf8());
+ QStringList valueKeys = FindValueOperation::findValue(map, id);
foreach (const QString &k, valueKeys) {
if (k.endsWith(QString(QLatin1Char('/')) + QLatin1String(ID))) {
diff --git a/src/tools/sdktool/rmkitoperation.cpp b/src/tools/sdktool/rmkitoperation.cpp
index bd079f64b1..829bf888b8 100644
--- a/src/tools/sdktool/rmkitoperation.cpp
+++ b/src/tools/sdktool/rmkitoperation.cpp
@@ -131,6 +131,7 @@ bool RmKitOperation::test() const
QLatin1String("Desktop"), QString(), QString(),
QLatin1String("{tc-id}"), QLatin1String("{qt-id}"),
QLatin1String("unsupported/mkspec"),
+ QStringList(),
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
map =
AddKitOperation::addKit(map, tcMap, qtMap, devMap,
@@ -140,6 +141,7 @@ bool RmKitOperation::test() const
QLatin1String("Desktop"), QString(), QString(),
QLatin1String("{tc-id}"), QLatin1String("{qt-id}"),
QLatin1String("unsupported/mkspec2"),
+ QStringList(),
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue2"))));
QVariantMap result = rmKit(map, QLatin1String("testId"));