summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2020-02-13 18:01:27 +0100
committerhjk <hjk@qt.io>2020-02-14 15:48:38 +0000
commit1f5a089f24f56ade1b8c29a0cf07699fc7fd8747 (patch)
tree2a14795e3bdb61f0f1b88cbcdb3fc0fd32071591
parent9af4b8694f82aa455ce844368c4f9c00b6f907b9 (diff)
downloadqt-creator-1f5a089f24f56ade1b8c29a0cf07699fc7fd8747.tar.gz
Qbs: Pass related info directly to command line creation function
Saves a few casts and otherwise unneeded accessors. Change-Id: I7a6ff1e8348a24690f35e69d300463a6c5c18867 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp106
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildconfiguration.h19
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildstep.cpp20
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildstep.h1
-rw-r--r--src/plugins/qbsprojectmanager/qbscleanstep.cpp6
-rw-r--r--src/plugins/qbsprojectmanager/qbscleanstep.h3
-rw-r--r--src/plugins/qbsprojectmanager/qbsinstallstep.cpp17
-rw-r--r--src/plugins/qbsprojectmanager/qbsinstallstep.h1
8 files changed, 74 insertions, 99 deletions
diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
index f66aba3165..f2aac00591 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
+++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
@@ -261,84 +261,7 @@ QString QbsBuildConfiguration::configurationName() const
return m_configurationName->value();
}
-class StepProxy
-{
-public:
- StepProxy(const BuildStep *buildStep)
- : m_qbsBuildStep(qobject_cast<const QbsBuildStep *>(buildStep))
- , m_qbsCleanStep(qobject_cast<const QbsCleanStep *>(buildStep))
- , m_qbsInstallStep(qobject_cast<const QbsInstallStep *>(buildStep))
- {
- }
-
- QString command() const {
- if (m_qbsBuildStep)
- return QLatin1String("build");
- if (m_qbsInstallStep)
- return QLatin1String("install");
- return QLatin1String("clean");
- }
-
- bool dryRun() const {
- if (m_qbsBuildStep)
- return false;
- if (m_qbsInstallStep)
- return m_qbsInstallStep->dryRun();
- return m_qbsCleanStep->dryRun();
- }
-
- bool keepGoing() const {
- if (m_qbsBuildStep)
- return m_qbsBuildStep->keepGoing();
- if (m_qbsInstallStep)
- return m_qbsInstallStep->keepGoing();
- return m_qbsCleanStep->keepGoing();
- }
-
- bool forceProbeExecution() const { return m_qbsBuildStep && m_qbsBuildStep->forceProbes(); }
-
- bool showCommandLines() const {
- return m_qbsBuildStep ? m_qbsBuildStep->showCommandLines() : false;
- }
-
- bool noInstall() const {
- return m_qbsBuildStep ? !m_qbsBuildStep->install() : false;
- }
-
- bool noBuild() const { return m_qbsInstallStep; }
-
- bool cleanInstallRoot() const {
- if (m_qbsBuildStep)
- return m_qbsBuildStep->cleanInstallRoot();
- if (m_qbsInstallStep)
- return m_qbsInstallStep->removeFirst();
- return false;
- }
-
- int jobCount() const {
- return m_qbsBuildStep ? m_qbsBuildStep->maxJobs() : 0;
- }
-
- Utils::FilePath installRoot() const {
- const QbsBuildStep *bs = nullptr;
- if (m_qbsBuildStep) {
- bs = m_qbsBuildStep;
- } else if (m_qbsInstallStep) {
- bs = static_cast<QbsBuildConfiguration *>(m_qbsInstallStep->deployConfiguration()
- ->target()->activeBuildConfiguration())->qbsStep();
- }
- if (bs)
- return bs->installRoot();
- return Utils::FilePath();
- }
-
-private:
- const QbsBuildStep * const m_qbsBuildStep;
- const QbsCleanStep * const m_qbsCleanStep;
- const QbsInstallStep * const m_qbsInstallStep;
-};
-
-QString QbsBuildConfiguration::equivalentCommandLine(const BuildStep *buildStep) const
+QString QbsBuildConfiguration::equivalentCommandLine(const QbsBuildStepData &stepData) const
{
CommandLine commandLine;
const QString qbsInstallDir = QString::fromLocal8Bit(qgetenv("QBS_INSTALL_DIR"));
@@ -346,42 +269,41 @@ QString QbsBuildConfiguration::equivalentCommandLine(const BuildStep *buildStep)
? qbsInstallDir + QLatin1String("/bin/qbs")
: QCoreApplication::applicationDirPath() + QLatin1String("/qbs"));
commandLine.addArg(QDir::toNativeSeparators(qbsFilePath));
- const StepProxy stepProxy(buildStep);
- commandLine.addArg(stepProxy.command());
+ commandLine.addArg(stepData.command);
const QString buildDir = buildDirectory().toUserOutput();
commandLine.addArgs({"-d", buildDir});
- commandLine.addArgs({"-f", buildStep->project()->projectFilePath().toUserOutput()});
+ commandLine.addArgs({"-f", project()->projectFilePath().toUserOutput()});
if (QbsSettings::useCreatorSettingsDirForQbs()) {
commandLine.addArgs({"--settings-dir",
QDir::toNativeSeparators(QbsSettings::qbsSettingsBaseDir())});
}
- if (stepProxy.dryRun())
+ if (stepData.dryRun)
commandLine.addArg("--dry-run");
- if (stepProxy.keepGoing())
+ if (stepData.keepGoing)
commandLine.addArg("--keep-going");
- if (stepProxy.forceProbeExecution())
+ if (stepData.forceProbeExecution)
commandLine.addArg("--force-probe-execution");
- if (stepProxy.showCommandLines())
+ if (stepData.showCommandLines)
commandLine.addArgs({"--command-echo-mode", "command-line"});
- if (stepProxy.noInstall())
+ if (stepData.noInstall)
commandLine.addArg("--no-install");
- if (stepProxy.noBuild())
+ if (stepData.noBuild)
commandLine.addArg("--no-build");
- if (stepProxy.cleanInstallRoot())
+ if (stepData.cleanInstallRoot)
commandLine.addArg("--clean-install-root");
- const int jobCount = stepProxy.jobCount();
+ const int jobCount = stepData.jobCount;
if (jobCount > 0)
commandLine.addArgs({"--jobs", QString::number(jobCount)});
- const QString profileName = QbsProfileManager::profileNameForKit(buildStep->target()->kit());
+ const QString profileName = QbsProfileManager::profileNameForKit(target()->kit());
const QString buildVariant = qbsConfiguration()
.value(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY)).toString();
commandLine.addArg("config:" + configurationName());
commandLine.addArg(QString(Constants::QBS_CONFIG_VARIANT_KEY) + ':' + buildVariant);
- const FilePath installRoot = stepProxy.installRoot();
+ const FilePath installRoot = stepData.installRoot;
if (!installRoot.isEmpty()) {
commandLine.addArg(QString(Constants::QBS_INSTALL_ROOT_KEY) + ':' + installRoot.toUserOutput());
- if (qobject_cast<const QbsInstallStep *>(buildStep))
+ if (stepData.isInstallStep)
commandLine.addArgs({"--installRoot", installRoot.toUserOutput()});
}
commandLine.addArg("profile:" + profileName);
diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h
index cc7e0e90d3..96b66e2f47 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h
+++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h
@@ -40,7 +40,22 @@ namespace QbsProjectManager {
namespace Internal {
class QbsBuildStep;
-class QbsProject;
+
+class QbsBuildStepData
+{
+public:
+ QString command;
+ bool dryRun = false;
+ bool keepGoing = false;
+ bool forceProbeExecution = false;
+ bool showCommandLines = false;
+ bool noInstall = false;
+ bool noBuild = false;
+ bool cleanInstallRoot = false;
+ bool isInstallStep = false;
+ int jobCount = 0;
+ Utils::FilePath installRoot;
+};
class QbsBuildConfiguration final : public ProjectExplorer::BuildConfiguration
{
@@ -73,7 +88,7 @@ public:
QStringList products() const;
QString configurationName() const;
- QString equivalentCommandLine(const ProjectExplorer::BuildStep *buildStep) const;
+ QString equivalentCommandLine(const QbsBuildStepData &stepData) const;
bool isQmlDebuggingEnabled() const;
ProjectExplorer::TriState qmlDebuggingSetting() const;
diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
index 1884d6eb27..dea23b0453 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
+++ b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
@@ -523,6 +523,23 @@ void QbsBuildStep::finish()
emit finished(m_lastWasSuccess);
}
+QbsBuildStepData QbsBuildStep::stepData() const
+{
+ QbsBuildStepData data;
+ data.command = "build";
+ data.dryRun = false;
+ data.keepGoing = m_keepGoing;
+ data.forceProbeExecution = m_forceProbes;
+ data.showCommandLines = m_showCommandLines;
+ data.noInstall = !m_install;
+ data.noBuild = false;
+ data.cleanInstallRoot = m_cleanInstallDir;
+ data.jobCount = maxJobs();
+ data.installRoot = installRoot();
+ return data;
+}
+
+
// --------------------------------------------------------------------
// QbsBuildStepConfigWidget:
// --------------------------------------------------------------------
@@ -674,7 +691,8 @@ void QbsBuildStepConfigWidget::updateState()
const int idx = (buildVariant == Constants::QBS_VARIANT_DEBUG) ? 0 : 1;
buildVariantComboBox->setCurrentIndex(idx);
const auto qbsBuildConfig = static_cast<QbsBuildConfiguration *>(step()->buildConfiguration());
- QString command = qbsBuildConfig->equivalentCommandLine(qbsStep());
+
+ QString command = qbsBuildConfig->equivalentCommandLine(qbsStep()->stepData());
for (int i = 0; i < m_propertyCache.count(); ++i) {
command += ' ' + m_propertyCache.at(i).name + ':' + m_propertyCache.at(i).effectiveValue;
diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.h b/src/plugins/qbsprojectmanager/qbsbuildstep.h
index 79ab7bb043..3c5249dfb0 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildstep.h
+++ b/src/plugins/qbsprojectmanager/qbsbuildstep.h
@@ -70,6 +70,7 @@ public:
bool forceProbes() const { return m_forceProbes; }
QbsBuildSystem *qbsBuildSystem() const;
+ QbsBuildStepData stepData() const;
signals:
void qbsConfigurationChanged();
diff --git a/src/plugins/qbsprojectmanager/qbscleanstep.cpp b/src/plugins/qbsprojectmanager/qbscleanstep.cpp
index b27d16d932..ddecb793dc 100644
--- a/src/plugins/qbsprojectmanager/qbscleanstep.cpp
+++ b/src/plugins/qbsprojectmanager/qbscleanstep.cpp
@@ -67,8 +67,12 @@ QbsCleanStep::QbsCleanStep(BuildStepList *bsl, Core::Id id)
effectiveCommandAspect->setLabelText(tr("Equivalent command line:"));
setSummaryUpdater([this, effectiveCommandAspect] {
+ QbsBuildStepData data;
+ data.command = "clean";
+ data.dryRun = m_dryRunAspect->value();
+ data.keepGoing = m_keepGoingAspect->value();
QString command = static_cast<QbsBuildConfiguration *>(buildConfiguration())
- ->equivalentCommandLine(this);
+ ->equivalentCommandLine(data);
effectiveCommandAspect->setValue(command);
return tr("<b>Qbs:</b> %1").arg(command);
});
diff --git a/src/plugins/qbsprojectmanager/qbscleanstep.h b/src/plugins/qbsprojectmanager/qbscleanstep.h
index 1a5c9f8340..7af3d61fc7 100644
--- a/src/plugins/qbsprojectmanager/qbscleanstep.h
+++ b/src/plugins/qbsprojectmanager/qbscleanstep.h
@@ -44,8 +44,7 @@ public:
QbsCleanStep(ProjectExplorer::BuildStepList *bsl, Core::Id id);
~QbsCleanStep() override;
- bool dryRun() const { return m_dryRunAspect->value(); }
- bool keepGoing() const { return m_keepGoingAspect->value(); }
+ QbsBuildStepData stepData() const;
private:
bool init() override;
diff --git a/src/plugins/qbsprojectmanager/qbsinstallstep.cpp b/src/plugins/qbsprojectmanager/qbsinstallstep.cpp
index bc0abe9866..ba98e6d2e7 100644
--- a/src/plugins/qbsprojectmanager/qbsinstallstep.cpp
+++ b/src/plugins/qbsprojectmanager/qbsinstallstep.cpp
@@ -231,6 +231,21 @@ void QbsInstallStep::setKeepGoing(bool kg)
emit changed();
}
+QbsBuildStepData QbsInstallStep::stepData() const
+{
+ QbsBuildStepData data;
+ data.command = "install";
+ data.dryRun = dryRun();
+ data.keepGoing = keepGoing();
+ data.noBuild = true;
+ data.cleanInstallRoot = removeFirst();
+ data.isInstallStep = true;
+ auto bs = static_cast<QbsBuildConfiguration *>(target()->activeBuildConfiguration())->qbsStep();
+ if (bs)
+ data.installRoot = bs->installRoot();
+ return data;
+};
+
// --------------------------------------------------------------------
// QbsInstallStepConfigWidget:
// --------------------------------------------------------------------
@@ -320,7 +335,7 @@ void QbsInstallStepConfigWidget::updateState()
m_keepGoingCheckBox->setChecked(m_step->keepGoing());
}
- QString command = m_step->buildConfig()->equivalentCommandLine(m_step);
+ QString command = m_step->buildConfig()->equivalentCommandLine(m_step->stepData());
m_commandLineTextEdit->setPlainText(command);
diff --git a/src/plugins/qbsprojectmanager/qbsinstallstep.h b/src/plugins/qbsprojectmanager/qbsinstallstep.h
index 943beaac89..c02d2ab25f 100644
--- a/src/plugins/qbsprojectmanager/qbsinstallstep.h
+++ b/src/plugins/qbsprojectmanager/qbsinstallstep.h
@@ -48,6 +48,7 @@ public:
bool removeFirst() const { return m_cleanInstallRoot; }
bool dryRun() const { return m_dryRun; }
bool keepGoing() const { return m_keepGoing; }
+ QbsBuildStepData stepData() const;
signals:
void changed();