Python: prevent setting local env to remote pyls

Change-Id: Id0eea5420c897687e6931bf640e3a37ba2638b8f
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2022-06-15 13:10:26 +02:00
parent e7d90c23b6
commit 1956fa0365
3 changed files with 18 additions and 13 deletions

View File

@@ -99,10 +99,6 @@ void BaseClientInterface::parseCurrentMessage()
m_currentMessage = BaseMessage();
}
StdIOClientInterface::StdIOClientInterface()
: m_env(Utils::Environment::systemEnvironment())
{}
StdIOClientInterface::~StdIOClientInterface()
{
delete m_process;
@@ -128,7 +124,8 @@ void StdIOClientInterface::startImpl()
});
m_process->setCommand(m_cmd);
m_process->setWorkingDirectory(m_workingDirectory);
m_process->setEnvironment(m_env);
if (m_env.isValid())
m_process->setEnvironment(m_env);
m_process->start();
}

View File

@@ -72,7 +72,7 @@ class LANGUAGECLIENT_EXPORT StdIOClientInterface : public BaseClientInterface
{
Q_OBJECT
public:
StdIOClientInterface();
StdIOClientInterface() = default;
~StdIOClientInterface() override;
StdIOClientInterface(const StdIOClientInterface &) = delete;

View File

@@ -153,14 +153,22 @@ class PyLSInterface : public StdIOClientInterface
public:
PyLSInterface()
: m_extraPythonPath("QtCreator-pyls-XXXXXX")
{
Environment env = Environment::systemEnvironment();
env.appendOrSet("PYTHONPATH",
m_extraPythonPath.path().toString(),
OsSpecificAspects::pathListSeparator(env.osType()));
setEnvironment(env);
}
{ }
TemporaryDirectory m_extraPythonPath;
protected:
void startImpl() override
{
if (!m_cmd.executable().needsDevice()) {
// todo check where to put this tempdir in remote setups
Environment env = Environment::systemEnvironment();
env.appendOrSet("PYTHONPATH",
m_extraPythonPath.path().toString(),
OsSpecificAspects::pathListSeparator(env.osType()));
setEnvironment(env);
}
StdIOClientInterface::startImpl();
}
};
PyLSClient *clientForPython(const FilePath &python)