forked from qt-creator/qt-creator
AbstractProcessStep: Pass reference to the setupProcess()
Conform to the handleProcessDone() and the task tree interface. Task-number: QTCREATORBUG-29168 Change-Id: I25394a877a86434ea5ac26cd85fe50640e55db11 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -191,7 +191,7 @@ void AbstractProcessStep::doRun()
|
|||||||
setupStreams();
|
setupStreams();
|
||||||
|
|
||||||
d->m_process.reset(new Process);
|
d->m_process.reset(new Process);
|
||||||
setupProcess(d->m_process.get());
|
setupProcess(*d->m_process.get());
|
||||||
connect(d->m_process.get(), &Process::done, this, [this] {
|
connect(d->m_process.get(), &Process::done, this, [this] {
|
||||||
handleProcessDone(*d->m_process);
|
handleProcessDone(*d->m_process);
|
||||||
const ProcessResult result = d->outputFormatter->hasFatalErrors()
|
const ProcessResult result = d->outputFormatter->hasFatalErrors()
|
||||||
@@ -223,30 +223,30 @@ void AbstractProcessStep::setupStreams()
|
|||||||
d->stderrStream = std::make_unique<QTextDecoder>(QTextCodec::codecForLocale());
|
d->stderrStream = std::make_unique<QTextDecoder>(QTextCodec::codecForLocale());
|
||||||
}
|
}
|
||||||
|
|
||||||
void AbstractProcessStep::setupProcess(Process *process)
|
void AbstractProcessStep::setupProcess(Process &process)
|
||||||
{
|
{
|
||||||
process->setUseCtrlCStub(HostOsInfo::isWindowsHost());
|
process.setUseCtrlCStub(HostOsInfo::isWindowsHost());
|
||||||
process->setWorkingDirectory(d->m_param.effectiveWorkingDirectory());
|
process.setWorkingDirectory(d->m_param.effectiveWorkingDirectory());
|
||||||
// Enforce PWD in the environment because some build tools use that.
|
// Enforce PWD in the environment because some build tools use that.
|
||||||
// PWD can be different from getcwd in case of symbolic links (getcwd resolves symlinks).
|
// PWD can be different from getcwd in case of symbolic links (getcwd resolves symlinks).
|
||||||
// For example Clang uses PWD for paths in debug info, see QTCREATORBUG-23788
|
// For example Clang uses PWD for paths in debug info, see QTCREATORBUG-23788
|
||||||
Environment envWithPwd = d->m_param.environment();
|
Environment envWithPwd = d->m_param.environment();
|
||||||
envWithPwd.set("PWD", process->workingDirectory().path());
|
envWithPwd.set("PWD", process.workingDirectory().path());
|
||||||
process->setEnvironment(envWithPwd);
|
process.setEnvironment(envWithPwd);
|
||||||
process->setCommand({d->m_param.effectiveCommand(), d->m_param.effectiveArguments(),
|
process.setCommand({d->m_param.effectiveCommand(), d->m_param.effectiveArguments(),
|
||||||
CommandLine::Raw});
|
CommandLine::Raw});
|
||||||
if (d->m_lowPriority && ProjectExplorerPlugin::projectExplorerSettings().lowBuildPriority)
|
if (d->m_lowPriority && ProjectExplorerPlugin::projectExplorerSettings().lowBuildPriority)
|
||||||
process->setLowPriority();
|
process.setLowPriority();
|
||||||
|
|
||||||
connect(process, &Process::readyReadStandardOutput, this, [this, process] {
|
connect(&process, &Process::readyReadStandardOutput, this, [this, &process] {
|
||||||
emit addOutput(d->stdoutStream->toUnicode(process->readAllRawStandardOutput()),
|
emit addOutput(d->stdoutStream->toUnicode(process.readAllRawStandardOutput()),
|
||||||
OutputFormat::Stdout, DontAppendNewline);
|
OutputFormat::Stdout, DontAppendNewline);
|
||||||
});
|
});
|
||||||
connect(process, &Process::readyReadStandardError, this, [this, process] {
|
connect(&process, &Process::readyReadStandardError, this, [this, &process] {
|
||||||
emit addOutput(d->stderrStream->toUnicode(process->readAllRawStandardError()),
|
emit addOutput(d->stderrStream->toUnicode(process.readAllRawStandardError()),
|
||||||
OutputFormat::Stderr, DontAppendNewline);
|
OutputFormat::Stderr, DontAppendNewline);
|
||||||
});
|
});
|
||||||
connect(process, &Process::started, this, [this] {
|
connect(&process, &Process::started, this, [this] {
|
||||||
ProcessParameters *params = d->m_displayedParams;
|
ProcessParameters *params = d->m_displayedParams;
|
||||||
emit addOutput(Tr::tr("Starting: \"%1\" %2")
|
emit addOutput(Tr::tr("Starting: \"%1\" %2")
|
||||||
.arg(params->effectiveCommand().toUserOutput(), params->prettyArguments()),
|
.arg(params->effectiveCommand().toUserOutput(), params->prettyArguments()),
|
||||||
|
@@ -49,7 +49,7 @@ protected:
|
|||||||
void setDisplayedParameters(ProcessParameters *params);
|
void setDisplayedParameters(ProcessParameters *params);
|
||||||
|
|
||||||
bool checkWorkingDirectory();
|
bool checkWorkingDirectory();
|
||||||
void setupProcess(Utils::Process *process);
|
void setupProcess(Utils::Process &process);
|
||||||
void handleProcessDone(const Utils::Process &process);
|
void handleProcessDone(const Utils::Process &process);
|
||||||
void runTaskTree(const Tasking::Group &recipe);
|
void runTaskTree(const Tasking::Group &recipe);
|
||||||
|
|
||||||
|
@@ -287,7 +287,7 @@ void QMakeStep::doRun()
|
|||||||
m_outputFormatter->setLineParsers({new QMakeParser});
|
m_outputFormatter->setLineParsers({new QMakeParser});
|
||||||
ProcessParameters *pp = processParameters();
|
ProcessParameters *pp = processParameters();
|
||||||
pp->setCommandLine(m_qmakeCommand);
|
pp->setCommandLine(m_qmakeCommand);
|
||||||
setupProcess(&process);
|
setupProcess(process);
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto setupMakeQMake = [this](Process &process) {
|
const auto setupMakeQMake = [this](Process &process) {
|
||||||
@@ -296,7 +296,7 @@ void QMakeStep::doRun()
|
|||||||
m_outputFormatter->setLineParsers({parser});
|
m_outputFormatter->setLineParsers({parser});
|
||||||
ProcessParameters *pp = processParameters();
|
ProcessParameters *pp = processParameters();
|
||||||
pp->setCommandLine(m_makeCommand);
|
pp->setCommandLine(m_makeCommand);
|
||||||
setupProcess(&process);
|
setupProcess(process);
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto onProcessDone = [this](const Process &process) { handleProcessDone(process); };
|
const auto onProcessDone = [this](const Process &process) { handleProcessDone(process); };
|
||||||
|
Reference in New Issue
Block a user