CMake: Put cmake server-mode socket into a temporary directory

Do not put the cmake server-mode socket into the build directory, but
put it into a temporary directory instead.

This makes sure it will not stick around and also avoids polluting the
build directory with Qt Creator specific files.

Task-number: QTCREATORBUG-17320
Change-Id: Id849b1a80d7cba07c026cc2ecd7030435c401884
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Tobias Hunger
2017-01-18 11:35:50 +01:00
committed by Tim Jenssen
parent c6f90e575e
commit 01e80b264b
2 changed files with 7 additions and 15 deletions

View File

@@ -25,11 +25,13 @@
#include "servermode.h"
#include <coreplugin/icore.h>
#include <coreplugin/reaper.h>
#include <utils/algorithm.h>
#include <utils/qtcassert.h>
#include <utils/qtcprocess.h>
#include <utils/temporarydirectory.h>
#include <QByteArray>
#include <QCryptographicHash>
@@ -61,13 +63,12 @@ Q_LOGGING_CATEGORY(cmakeServerMode, "qtc.cmake.serverMode");
// Helpers:
// ----------------------------------------------------------------------
QString socketName(const Utils::FileName &buildDirectory)
QString socketName()
{
if (HostOsInfo::isWindowsHost()) {
QUuid uuid = QUuid::createUuid();
QUuid uuid = QUuid::createUuid();
if (HostOsInfo::isWindowsHost())
return "\\\\.\\pipe\\" + uuid.toString();
}
return buildDirectory.toString() + "/socket";
return Utils::TemporaryDirectory::masterDirectoryPath() + "/cmake-socket-" + uuid.toString();
}
bool isValid(const QVariant &v)
@@ -108,7 +109,7 @@ ServerMode::ServerMode(const Environment &env,
m_cmakeProcess->setEnvironment(env);
m_cmakeProcess->setWorkingDirectory(buildDirectory.toString());
m_socketName = socketName(buildDirectory);
m_socketName = socketName();
const QStringList args = QStringList({ "-E", "server", "--pipe=" + m_socketName });
connect(m_cmakeProcess.get(), &QtcProcess::started, this, [this]() { m_connectionTimer.start(); });

View File

@@ -62,15 +62,6 @@ const char SOURCES_KEY[] = "sources";
const int MAX_PROGRESS = 1400;
// ----------------------------------------------------------------------
// Helpers:
// ----------------------------------------------------------------------
QString socketName(const BuildDirReader::Parameters &p)
{
return p.buildDirectory.toString() + "/socket";
}
// --------------------------------------------------------------------
// ServerModeReader:
// --------------------------------------------------------------------