forked from qt-creator/qt-creator
AbstractProcessStep: Connect to QtcProcess::done() signal
Instead of connecting to finished() signal. Change-Id: I2c1266bf699f54053fde37bb7ff22a93131e6b11 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -208,7 +208,6 @@ void AbstractProcessStep::doRun()
|
|||||||
CommandLine::Raw);
|
CommandLine::Raw);
|
||||||
if (!effectiveCommand.executable().isExecutableFile()) {
|
if (!effectiveCommand.executable().isExecutableFile()) {
|
||||||
processStartupFailed();
|
processStartupFailed();
|
||||||
finish(false);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -233,14 +232,12 @@ void AbstractProcessStep::doRun()
|
|||||||
this, &AbstractProcessStep::processReadyReadStdOutput);
|
this, &AbstractProcessStep::processReadyReadStdOutput);
|
||||||
connect(d->m_process.get(), &QtcProcess::readyReadStandardError,
|
connect(d->m_process.get(), &QtcProcess::readyReadStandardError,
|
||||||
this, &AbstractProcessStep::processReadyReadStdError);
|
this, &AbstractProcessStep::processReadyReadStdError);
|
||||||
connect(d->m_process.get(), &QtcProcess::finished,
|
connect(d->m_process.get(), &QtcProcess::done,
|
||||||
this, &AbstractProcessStep::slotProcessFinished);
|
this, &AbstractProcessStep::slotProcessFinished);
|
||||||
|
|
||||||
d->m_process->start();
|
d->m_process->start();
|
||||||
if (!d->m_process->waitForStarted()) {
|
if (!d->m_process->waitForStarted()) {
|
||||||
processStartupFailed();
|
|
||||||
d->m_process.reset();
|
d->m_process.reset();
|
||||||
finish(false);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
processStarted();
|
processStarted();
|
||||||
@@ -281,15 +278,13 @@ void AbstractProcessStep::setupProcessParameters(ProcessParameters *params) cons
|
|||||||
|
|
||||||
void AbstractProcessStep::Private::cleanUp(int exitCode, QProcess::ExitStatus status)
|
void AbstractProcessStep::Private::cleanUp(int exitCode, QProcess::ExitStatus status)
|
||||||
{
|
{
|
||||||
// The process has finished, leftover data is read in processFinished
|
// The process has finished, leftover data was read in slotProcessFinished
|
||||||
q->processFinished(exitCode, status);
|
q->processFinished(exitCode, status);
|
||||||
const bool returnValue = q->processSucceeded(exitCode, status)
|
const bool returnValue = q->processSucceeded(exitCode, status) || m_ignoreReturnValue;
|
||||||
|| m_ignoreReturnValue;
|
|
||||||
|
|
||||||
if (m_process)
|
if (m_process)
|
||||||
m_process.release()->deleteLater();
|
m_process.release()->deleteLater();
|
||||||
|
|
||||||
// Report result
|
|
||||||
q->finish(returnValue);
|
q->finish(returnValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -316,7 +311,7 @@ void AbstractProcessStep::processStarted()
|
|||||||
|
|
||||||
void AbstractProcessStep::processFinished(int exitCode, QProcess::ExitStatus status)
|
void AbstractProcessStep::processFinished(int exitCode, QProcess::ExitStatus status)
|
||||||
{
|
{
|
||||||
QString command = d->m_param.effectiveCommand().toUserOutput();
|
const QString command = d->m_param.effectiveCommand().toUserOutput();
|
||||||
if (status == QProcess::NormalExit && exitCode == 0) {
|
if (status == QProcess::NormalExit && exitCode == 0) {
|
||||||
emit addOutput(tr("The process \"%1\" exited normally.").arg(command),
|
emit addOutput(tr("The process \"%1\" exited normally.").arg(command),
|
||||||
BuildStep::OutputFormat::NormalMessage);
|
BuildStep::OutputFormat::NormalMessage);
|
||||||
@@ -345,6 +340,7 @@ void AbstractProcessStep::processStartupFailed()
|
|||||||
QString err = d->m_process ? d->m_process->errorString() : QString();
|
QString err = d->m_process ? d->m_process->errorString() : QString();
|
||||||
if (!err.isEmpty())
|
if (!err.isEmpty())
|
||||||
emit addOutput(err, OutputFormat::ErrorMessage);
|
emit addOutput(err, OutputFormat::ErrorMessage);
|
||||||
|
finish(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -401,6 +397,10 @@ void AbstractProcessStep::finish(bool success)
|
|||||||
void AbstractProcessStep::slotProcessFinished()
|
void AbstractProcessStep::slotProcessFinished()
|
||||||
{
|
{
|
||||||
QTC_ASSERT(d->m_process.get(), return);
|
QTC_ASSERT(d->m_process.get(), return);
|
||||||
|
if (d->m_process->error() == QProcess::FailedToStart) {
|
||||||
|
processStartupFailed();
|
||||||
|
return;
|
||||||
|
}
|
||||||
stdError(d->stderrStream->toUnicode(d->m_process->readAllStandardError()));
|
stdError(d->stderrStream->toUnicode(d->m_process->readAllStandardError()));
|
||||||
stdOutput(d->stdoutStream->toUnicode(d->m_process->readAllStandardOutput()));
|
stdOutput(d->stdoutStream->toUnicode(d->m_process->readAllStandardOutput()));
|
||||||
d->cleanUp(d->m_process->exitCode(), d->m_process->exitStatus());
|
d->cleanUp(d->m_process->exitCode(), d->m_process->exitStatus());
|
||||||
|
Reference in New Issue
Block a user