From 3093142a705da40d0cc92a83c1341b160e9a4445 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Tue, 11 Jul 2023 21:20:24 +0200 Subject: [PATCH] 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 --- .../projectexplorer/abstractprocessstep.cpp | 26 +++++++++---------- .../projectexplorer/abstractprocessstep.h | 2 +- src/plugins/qmakeprojectmanager/qmakestep.cpp | 4 +-- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp index 06952b85129..7377128ccb6 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.cpp +++ b/src/plugins/projectexplorer/abstractprocessstep.cpp @@ -191,7 +191,7 @@ void AbstractProcessStep::doRun() setupStreams(); 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] { handleProcessDone(*d->m_process); const ProcessResult result = d->outputFormatter->hasFatalErrors() @@ -223,30 +223,30 @@ void AbstractProcessStep::setupStreams() d->stderrStream = std::make_unique(QTextCodec::codecForLocale()); } -void AbstractProcessStep::setupProcess(Process *process) +void AbstractProcessStep::setupProcess(Process &process) { - process->setUseCtrlCStub(HostOsInfo::isWindowsHost()); - process->setWorkingDirectory(d->m_param.effectiveWorkingDirectory()); + process.setUseCtrlCStub(HostOsInfo::isWindowsHost()); + process.setWorkingDirectory(d->m_param.effectiveWorkingDirectory()); // 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). // For example Clang uses PWD for paths in debug info, see QTCREATORBUG-23788 Environment envWithPwd = d->m_param.environment(); - envWithPwd.set("PWD", process->workingDirectory().path()); - process->setEnvironment(envWithPwd); - process->setCommand({d->m_param.effectiveCommand(), d->m_param.effectiveArguments(), + envWithPwd.set("PWD", process.workingDirectory().path()); + process.setEnvironment(envWithPwd); + process.setCommand({d->m_param.effectiveCommand(), d->m_param.effectiveArguments(), CommandLine::Raw}); if (d->m_lowPriority && ProjectExplorerPlugin::projectExplorerSettings().lowBuildPriority) - process->setLowPriority(); + process.setLowPriority(); - connect(process, &Process::readyReadStandardOutput, this, [this, process] { - emit addOutput(d->stdoutStream->toUnicode(process->readAllRawStandardOutput()), + connect(&process, &Process::readyReadStandardOutput, this, [this, &process] { + emit addOutput(d->stdoutStream->toUnicode(process.readAllRawStandardOutput()), OutputFormat::Stdout, DontAppendNewline); }); - connect(process, &Process::readyReadStandardError, this, [this, process] { - emit addOutput(d->stderrStream->toUnicode(process->readAllRawStandardError()), + connect(&process, &Process::readyReadStandardError, this, [this, &process] { + emit addOutput(d->stderrStream->toUnicode(process.readAllRawStandardError()), OutputFormat::Stderr, DontAppendNewline); }); - connect(process, &Process::started, this, [this] { + connect(&process, &Process::started, this, [this] { ProcessParameters *params = d->m_displayedParams; emit addOutput(Tr::tr("Starting: \"%1\" %2") .arg(params->effectiveCommand().toUserOutput(), params->prettyArguments()), diff --git a/src/plugins/projectexplorer/abstractprocessstep.h b/src/plugins/projectexplorer/abstractprocessstep.h index e6b11981ee6..38c507e7ead 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.h +++ b/src/plugins/projectexplorer/abstractprocessstep.h @@ -49,7 +49,7 @@ protected: void setDisplayedParameters(ProcessParameters *params); bool checkWorkingDirectory(); - void setupProcess(Utils::Process *process); + void setupProcess(Utils::Process &process); void handleProcessDone(const Utils::Process &process); void runTaskTree(const Tasking::Group &recipe); diff --git a/src/plugins/qmakeprojectmanager/qmakestep.cpp b/src/plugins/qmakeprojectmanager/qmakestep.cpp index 292a6439dff..6df042d8d39 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.cpp +++ b/src/plugins/qmakeprojectmanager/qmakestep.cpp @@ -287,7 +287,7 @@ void QMakeStep::doRun() m_outputFormatter->setLineParsers({new QMakeParser}); ProcessParameters *pp = processParameters(); pp->setCommandLine(m_qmakeCommand); - setupProcess(&process); + setupProcess(process); }; const auto setupMakeQMake = [this](Process &process) { @@ -296,7 +296,7 @@ void QMakeStep::doRun() m_outputFormatter->setLineParsers({parser}); ProcessParameters *pp = processParameters(); pp->setCommandLine(m_makeCommand); - setupProcess(&process); + setupProcess(process); }; const auto onProcessDone = [this](const Process &process) { handleProcessDone(process); };