diff options
Diffstat (limited to 'src/plugins/qbsprojectmanager/qbsbuildstep.cpp')
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsbuildstep.cpp | 49 |
1 files changed, 17 insertions, 32 deletions
diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp index 239276de77..062f48e15b 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp @@ -26,7 +26,6 @@ #include "qbsbuildstep.h" #include "qbsbuildconfiguration.h" -#include "qbsparser.h" #include "qbsproject.h" #include "qbsprojectmanagerconstants.h" #include "qbssession.h" @@ -40,6 +39,7 @@ #include <projectexplorer/target.h> #include <qtsupport/qtversionmanager.h> #include <utils/macroexpander.h> +#include <utils/outputformatter.h> #include <utils/pathchooser.h> #include <utils/qtcassert.h> #include <utils/qtcprocess.h> @@ -60,7 +60,6 @@ // -------------------------------------------------------------------- const char QBS_CONFIG[] = "Qbs.Configuration"; -const char QBS_DRY_RUN[] = "Qbs.DryRun"; const char QBS_KEEP_GOING[] = "Qbs.DryKeepGoing"; const char QBS_MAXJOBCOUNT[] = "Qbs.MaxJobs"; const char QBS_SHOWCOMMANDLINES[] = "Qbs.ShowCommandLines"; @@ -156,7 +155,6 @@ QbsBuildStep::~QbsBuildStep() doCancel(); if (m_session) m_session->disconnect(this); - delete m_parser; } bool QbsBuildStep::init() @@ -169,25 +167,19 @@ bool QbsBuildStep::init() if (!bc) return false; - delete m_parser; - m_parser = new Internal::QbsParser; - ProjectExplorer::IOutputParser *parser = target()->kit()->createOutputParser(); - if (parser) - m_parser->appendOutputParser(parser); - m_changedFiles = bc->changedFiles(); m_activeFileTags = bc->activeFileTags(); m_products = bc->products(); - connect(m_parser, &ProjectExplorer::IOutputParser::addOutput, - this, [this](const QString &string, ProjectExplorer::BuildStep::OutputFormat format) { - emit addOutput(string, format); - }); - connect(m_parser, &ProjectExplorer::IOutputParser::addTask, this, &QbsBuildStep::addTask); - return true; } +void QbsBuildStep::setupOutputFormatter(OutputFormatter *formatter) +{ + formatter->addLineParsers(target()->kit()->createOutputParsers()); + BuildStep::setupOutputFormatter(formatter); +} + void QbsBuildStep::doRun() { // We need a pre-build parsing step in order not to lose project file changes done @@ -234,7 +226,7 @@ QVariantMap QbsBuildStep::qbsConfiguration(VariableHandling variableHandling) co Constants::QBS_CONFIG_QUICK_COMPILER_KEY); if (variableHandling == ExpandVariables) { - const MacroExpander * const expander = buildConfiguration()->macroExpander(); + const MacroExpander * const expander = macroExpander(); for (auto it = config.begin(), end = config.end(); it != end; ++it) { const QString rawString = it.value().toString(); const QString expandedString = expander->expand(rawString); @@ -273,7 +265,7 @@ Utils::FilePath QbsBuildStep::installRoot(VariableHandling variableHandling) con return Utils::FilePath::fromString(root); QString defaultInstallDir = QbsSettings::defaultInstallDirTemplate(); if (variableHandling == VariableHandling::ExpandVariables) - defaultInstallDir = buildConfiguration()->macroExpander()->expand(defaultInstallDir); + defaultInstallDir = macroExpander()->expand(defaultInstallDir); return FilePath::fromString(defaultInstallDir); } @@ -379,29 +371,24 @@ void QbsBuildStep::handleProcessResult( const QStringList &stdErr, bool success) { + Q_UNUSED(workingDir); const bool hasOutput = !stdOut.isEmpty() || !stdErr.isEmpty(); if (success && !hasOutput) return; - m_parser->setWorkingDirectory(workingDir.toString()); emit addOutput(executable.toUserOutput() + ' ' + QtcProcess::joinArgs(arguments), OutputFormat::Stdout); - for (const QString &line : stdErr) { - m_parser->stdError(line); + for (const QString &line : stdErr) emit addOutput(line, OutputFormat::Stderr); - } - for (const QString &line : stdOut) { - m_parser->stdOutput(line); + for (const QString &line : stdOut) emit addOutput(line, OutputFormat::Stdout); - } - m_parser->flush(); } void QbsBuildStep::createTaskAndOutput(ProjectExplorer::Task::TaskType type, const QString &message, const QString &file, int line) { - emit addTask(CompileTask(type, message, FilePath::fromString(file), line), 1); emit addOutput(message, OutputFormat::Stdout); + emit addTask(CompileTask(type, message, FilePath::fromString(file), line), 1); } QString QbsBuildStep::buildVariant() const @@ -411,7 +398,7 @@ QString QbsBuildStep::buildVariant() const QbsBuildSystem *QbsBuildStep::qbsBuildSystem() const { - return static_cast<QbsBuildSystem *>(buildConfiguration()->buildSystem()); + return static_cast<QbsBuildSystem *>(buildSystem()); } void QbsBuildStep::setBuildVariant(const QString &variant) @@ -653,9 +640,7 @@ QbsBuildStepConfigWidget::QbsBuildStepConfigWidget(QbsBuildStep *step) : auto chooser = new Core::VariableChooser(this); chooser->addSupportedWidget(propertyEdit); chooser->addSupportedWidget(installDirChooser->lineEdit()); - chooser->addMacroExpanderProvider([step] { - return step->buildConfiguration()->macroExpander(); - }); + chooser->addMacroExpanderProvider([step] { return step->macroExpander(); }); propertyEdit->setValidationFunction([this](FancyLineEdit *edit, QString *errorMessage) { return validateProperties(edit, errorMessage); }); @@ -693,7 +678,7 @@ void QbsBuildStepConfigWidget::updateState() cleanInstallRootCheckBox->setChecked(qbsStep()->cleanInstallRoot()); forceProbesCheckBox->setChecked(qbsStep()->forceProbes()); updatePropertyEdit(qbsStep()->qbsConfiguration(QbsBuildStep::PreserveVariables)); - installDirChooser->setFileName(qbsStep()->installRoot(QbsBuildStep::PreserveVariables)); + installDirChooser->setFilePath(qbsStep()->installRoot(QbsBuildStep::PreserveVariables)); defaultInstallDirCheckBox->setChecked(!qbsStep()->hasCustomInstallRoot()); } @@ -876,7 +861,7 @@ bool QbsBuildStepConfigWidget::validateProperties(Utils::FancyLineEdit *edit, QS } QList<Property> properties; - const MacroExpander * const expander = step()->buildConfiguration()->macroExpander(); + const MacroExpander * const expander = step()->macroExpander(); foreach (const QString &rawArg, argList) { int pos = rawArg.indexOf(':'); if (pos > 0) { |