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);