From 045d1496b5947551465189a7c0f56931bf17b718 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 9 Jul 2015 10:25:54 +0200 Subject: [PATCH] QmlDesigner: create error output file for puppet builds Change-Id: I140820702d11e5bc20e6063bdee13411a5f2eeaa Reviewed-by: Tim Jenssen --- .../instances/puppetbuildprogressdialog.cpp | 6 ++++++ .../instances/puppetbuildprogressdialog.h | 1 + .../designercore/instances/puppetcreator.cpp | 18 ++++++++++++++---- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/instances/puppetbuildprogressdialog.cpp b/src/plugins/qmldesigner/designercore/instances/puppetbuildprogressdialog.cpp index dfe36cea5c..30002333e5 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetbuildprogressdialog.cpp +++ b/src/plugins/qmldesigner/designercore/instances/puppetbuildprogressdialog.cpp @@ -67,6 +67,12 @@ bool PuppetBuildProgressDialog::useFallbackPuppet() const return m_useFallbackPuppet; } +void PuppetBuildProgressDialog::setErrorOutputFile(const QString &filePath) +{ + ui->openErrorOutputFileLabel->setText(QString::fromLatin1("%2").arg( + filePath, ui->openErrorOutputFileLabel->text())); +} + void PuppetBuildProgressDialog::setUseFallbackPuppet() { m_useFallbackPuppet = true; diff --git a/src/plugins/qmldesigner/designercore/instances/puppetbuildprogressdialog.h b/src/plugins/qmldesigner/designercore/instances/puppetbuildprogressdialog.h index ab2622c7fb..53432f70ab 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetbuildprogressdialog.h +++ b/src/plugins/qmldesigner/designercore/instances/puppetbuildprogressdialog.h @@ -51,6 +51,7 @@ public: void setProgress(int progress); void newBuildOutput(const QByteArray &standardOutput); bool useFallbackPuppet() const; + void setErrorOutputFile(const QString &filePath); private slots: void setUseFallbackPuppet(); diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp index b397d1a264..55b91b0bc1 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp @@ -391,21 +391,31 @@ bool PuppetCreator::startBuildProcess(const QString &buildDirectoryPath, if (command.isEmpty()) return false; + const QString errorOutputFilePath(buildDirectoryPath + QLatin1String("/build_error_output.txt")); + if (QFile::exists(errorOutputFilePath)) + QFile(errorOutputFilePath).remove(); + progressDialog->setErrorOutputFile(errorOutputFilePath); + QProcess process; + process.setStandardErrorFile(errorOutputFilePath); process.setProcessChannelMode(QProcess::SeparateChannels); process.setProcessEnvironment(processEnvironment()); process.setWorkingDirectory(buildDirectoryPath); process.start(command, processArguments); process.waitForStarted(); - while (process.waitForReadyRead(-1)) { + while (process.waitForReadyRead(100) || process.state() == QProcess::Running) { if (progressDialog->useFallbackPuppet()) return false; + QApplication::processEvents(QEventLoop::ExcludeSocketNotifiers); + QByteArray newOutput = process.readAllStandardOutput(); - if (progressDialog) - progressDialog->newBuildOutput(newOutput); + if (!newOutput.isEmpty()) { + if (progressDialog) + progressDialog->newBuildOutput(newOutput); - m_compileLog.append(newOutput); + m_compileLog.append(QString::fromLatin1(newOutput)); + } } process.waitForFinished(); -- GitLab