From 1d3db8afc34dd5d70614810a72046121c518103b Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Wed, 17 Jan 2024 15:41:44 +0100 Subject: [PATCH] AppMan: Add support to change the Environment in the RunConfiguration Change-Id: I05e0df8abf40b3f1a55edc1ab1419a04b1060fa7 Reviewed-by: hjk --- .../appmanagerrunconfiguration.cpp | 4 ++++ .../appmanagerruncontrol.cpp | 21 ++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/plugins/qtapplicationmanager/appmanagerrunconfiguration.cpp b/src/plugins/qtapplicationmanager/appmanagerrunconfiguration.cpp index 5cd8bbbc734..3699d5a03e8 100644 --- a/src/plugins/qtapplicationmanager/appmanagerrunconfiguration.cpp +++ b/src/plugins/qtapplicationmanager/appmanagerrunconfiguration.cpp @@ -13,6 +13,7 @@ #include #include +#include #include @@ -64,7 +65,10 @@ public: : AppManagerRunConfiguration(target, id) { setDefaultDisplayName(Tr::tr("Run and Debug an Appman Package")); + environment.addPreferredBaseEnvironment(Tr::tr("Clean Environment"), {}); } + + EnvironmentAspect environment{this}; }; class AppManagerRunConfigurationFactory : public RunConfigurationFactory diff --git a/src/plugins/qtapplicationmanager/appmanagerruncontrol.cpp b/src/plugins/qtapplicationmanager/appmanagerruncontrol.cpp index 6aa9a0156a4..f89c26b8c0c 100644 --- a/src/plugins/qtapplicationmanager/appmanagerruncontrol.cpp +++ b/src/plugins/qtapplicationmanager/appmanagerruncontrol.cpp @@ -57,13 +57,25 @@ public: QString appId = runControl->aspect()->value; QString instanceId = runControl->aspect()->value; QString documentUrl = runControl->aspect()->value; + QStringList envVars; + if (auto envAspect = runControl->aspect()) + envVars = envAspect->environment.toStringList(); + // Always use the default environment to start the appman-controller in + // The env variables from the EnvironmentAspect are set through the controller + setEnvironment({}); // Prevent the write channel to be closed, otherwise the appman-controller will exit setProcessMode(ProcessMode::Writer); CommandLine cmd{controller}; if (!instanceId.isEmpty()) cmd.addArgs({"--instance-id", instanceId}); - cmd.addArgs({"start-application", "-eio", appId}); + if (envVars.isEmpty()) { + cmd.addArgs({"start-application", "-eio", appId}); + } else { + cmd.addArgs({"debug-application", "-eio"}); + cmd.addArg(envVars.join(' ')); + cmd.addArg(appId); + } if (!documentUrl.isEmpty()) cmd.addArg(documentUrl); setCommandLine(cmd); @@ -106,6 +118,9 @@ public: QString appId = runControl->aspect()->value; QString instanceId = runControl->aspect()->value; QString documentUrl = runControl->aspect()->value; + QStringList envVars; + if (auto envAspect = runControl->aspect()) + envVars = envAspect->environment.toStringList(); // const int perfPort = m_portsGatherer->gdbServer().port(); const int gdbServerPort = m_portsGatherer->gdbServer().port(); @@ -119,6 +134,7 @@ public: if (m_useGdbServer || m_useQmlServer) { QStringList debugArgs; + debugArgs.append(envVars.join(' ')); if (m_useGdbServer) { debugArgs.append(QString("gdbserver :%1").arg(gdbServerPort)); } @@ -146,6 +162,9 @@ public: if (!documentUrl.isEmpty()) cmd.addArg(documentUrl); + // Always use the default environment to start the appman-controller in + // The env variables from the EnvironmentAspect are set through the controller + setEnvironment({}); // Prevent the write channel to be closed, otherwise the appman-controller will exit setProcessMode(ProcessMode::Writer); setCommandLine(cmd);