Qbs: Use Store instead of QVariantMap in a few places

Change-Id: I0636fad4ca032ec6657f2e35154c2e0ea4d0c9ca
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2023-10-06 12:23:37 +02:00
parent e1f7469afb
commit 167cd3378d
8 changed files with 43 additions and 42 deletions

View File

@@ -62,7 +62,7 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Utils::Id id)
setInitializer([this, target](const BuildInfo &info) { setInitializer([this, target](const BuildInfo &info) {
const Kit *kit = target->kit(); const Kit *kit = target->kit();
QVariantMap configData = info.extraInfo.value<QVariantMap>(); Store configData = storeFromVariant(info.extraInfo);
const QString buildVariant = [](BuildConfiguration::BuildType buildType) -> QString { const QString buildVariant = [](BuildConfiguration::BuildType buildType) -> QString {
switch (buildType) { switch (buildType) {
case BuildConfiguration::Release: return Constants::QBS_VARIANT_RELEASE; case BuildConfiguration::Release: return Constants::QBS_VARIANT_RELEASE;
@@ -73,7 +73,7 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Utils::Id id)
} }
return Constants::QBS_VARIANT_DEBUG; return Constants::QBS_VARIANT_DEBUG;
}(info.buildType); }(info.buildType);
configData.insert(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY), buildVariant); configData.insert(Constants::QBS_CONFIG_VARIANT_KEY, buildVariant);
FilePath buildDir = info.buildDirectory; FilePath buildDir = info.buildDirectory;
if (buildDir.isEmpty()) if (buildDir.isEmpty())
buildDir = defaultBuildDirectory(target->project()->projectFilePath(), buildDir = defaultBuildDirectory(target->project()->projectFilePath(),
@@ -82,7 +82,7 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Utils::Id id)
setBuildDirectory(buildDir); setBuildDirectory(buildDir);
// Add the build configuration. // Add the build configuration.
QVariantMap bd = configData; Store bd = configData;
QString configName = bd.take("configName").toString(); QString configName = bd.take("configName").toString();
if (configName.isEmpty()) { if (configName.isEmpty()) {
configName = "qtc_" + kit->fileSystemFriendlyName() + '_' configName = "qtc_" + kit->fileSystemFriendlyName() + '_'
@@ -162,7 +162,7 @@ void QbsBuildConfiguration::fromMap(const Store &map)
if (configurationName().isEmpty()) { // pre-4.4 backwards compatibility if (configurationName().isEmpty()) { // pre-4.4 backwards compatibility
const QString profileName = QbsProfileManager::profileNameForKit(target()->kit()); const QString profileName = QbsProfileManager::profileNameForKit(target()->kit());
const QString buildVariant = qbsConfiguration() const QString buildVariant = qbsConfiguration()
.value(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY)).toString(); .value(Constants::QBS_CONFIG_VARIANT_KEY).toString();
configurationName.setValue(profileName + '-' + buildVariant); configurationName.setValue(profileName + '-' + buildVariant);
} }
} }
@@ -183,9 +183,9 @@ QbsBuildStep *QbsBuildConfiguration::qbsStep() const
return buildSteps()->firstOfType<QbsBuildStep>(); return buildSteps()->firstOfType<QbsBuildStep>();
} }
QVariantMap QbsBuildConfiguration::qbsConfiguration() const Store QbsBuildConfiguration::qbsConfiguration() const
{ {
QVariantMap config; Store config;
QbsBuildStep *qbsBs = qbsStep(); QbsBuildStep *qbsBs = qbsStep();
if (qbsBs) if (qbsBs)
config = qbsBs->qbsConfiguration(QbsBuildStep::ExpandVariables); config = qbsBs->qbsConfiguration(QbsBuildStep::ExpandVariables);
@@ -269,7 +269,7 @@ QString QbsBuildConfiguration::equivalentCommandLine(const QbsBuildStepData &ste
const QString profileName = QbsProfileManager::profileNameForKit(target()->kit()); const QString profileName = QbsProfileManager::profileNameForKit(target()->kit());
const QString buildVariant = qbsConfiguration() const QString buildVariant = qbsConfiguration()
.value(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY)).toString(); .value(Constants::QBS_CONFIG_VARIANT_KEY).toString();
commandLine.addArg("config:" + configurationName()); commandLine.addArg("config:" + configurationName());
commandLine.addArg(QString(Constants::QBS_CONFIG_VARIANT_KEY) + ':' + buildVariant); commandLine.addArg(QString(Constants::QBS_CONFIG_VARIANT_KEY) + ':' + buildVariant);
const FilePath installRoot = stepData.installRoot; const FilePath installRoot = stepData.installRoot;

View File

@@ -47,7 +47,7 @@ public:
ProjectExplorer::BuildSystem *buildSystem() const final; ProjectExplorer::BuildSystem *buildSystem() const final;
QbsBuildStep *qbsStep() const; QbsBuildStep *qbsStep() const;
QVariantMap qbsConfiguration() const; Utils::Store qbsConfiguration() const;
BuildType buildType() const override; BuildType buildType() const override;

View File

@@ -124,7 +124,7 @@ public:
private: private:
void updateState(); void updateState();
void updatePropertyEdit(const QVariantMap &data); void updatePropertyEdit(const Store &data);
void changeUseDefaultInstallDir(bool useDefault); void changeUseDefaultInstallDir(bool useDefault);
void changeInstallDir(); void changeInstallDir();
@@ -172,7 +172,7 @@ QbsBuildStep::QbsBuildStep(BuildStepList *bsl, Id id) :
setDisplayName(QbsProjectManager::Tr::tr("Qbs Build")); setDisplayName(QbsProjectManager::Tr::tr("Qbs Build"));
setSummaryText(QbsProjectManager::Tr::tr("<b>Qbs:</b> %1").arg("build")); setSummaryText(QbsProjectManager::Tr::tr("<b>Qbs:</b> %1").arg("build"));
setQbsConfiguration(QVariantMap()); setQbsConfiguration(Store());
auto qbsBuildConfig = qobject_cast<QbsBuildConfiguration *>(buildConfiguration()); auto qbsBuildConfig = qobject_cast<QbsBuildConfiguration *>(buildConfiguration());
QTC_CHECK(qbsBuildConfig); QTC_CHECK(qbsBuildConfig);
@@ -273,13 +273,13 @@ QWidget *QbsBuildStep::createConfigWidget()
return new QbsBuildStepConfigWidget(this); return new QbsBuildStepConfigWidget(this);
} }
QVariantMap QbsBuildStep::qbsConfiguration(VariableHandling variableHandling) const Store QbsBuildStep::qbsConfiguration(VariableHandling variableHandling) const
{ {
QVariantMap config = m_qbsConfiguration; Store config = m_qbsConfiguration;
const auto qbsBuildConfig = qbsBuildConfiguration(); const auto qbsBuildConfig = qbsBuildConfiguration();
config.insert(Constants::QBS_FORCE_PROBES_KEY, forceProbes()); config.insert(Constants::QBS_FORCE_PROBES_KEY, forceProbes());
const auto store = [&config](TriState ts, const QString &key) { const auto store = [&config](TriState ts, const Key &key) {
if (ts == TriState::Enabled) if (ts == TriState::Enabled)
config.insert(key, true); config.insert(key, true);
else if (ts == TriState::Disabled) else if (ts == TriState::Disabled)
@@ -308,9 +308,9 @@ QVariantMap QbsBuildStep::qbsConfiguration(VariableHandling variableHandling) co
return config; return config;
} }
void QbsBuildStep::setQbsConfiguration(const QVariantMap &config) void QbsBuildStep::setQbsConfiguration(const Store &config)
{ {
QVariantMap tmp = config; Store tmp = config;
tmp.insert(Constants::QBS_CONFIG_PROFILE_KEY, qbsBuildSystem()->profile()); tmp.insert(Constants::QBS_CONFIG_PROFILE_KEY, qbsBuildSystem()->profile());
QString buildVariant = tmp.value(Constants::QBS_CONFIG_VARIANT_KEY).toString(); QString buildVariant = tmp.value(Constants::QBS_CONFIG_VARIANT_KEY).toString();
if (buildVariant.isEmpty()) { if (buildVariant.isEmpty()) {
@@ -355,13 +355,13 @@ void QbsBuildStep::fromMap(const Store &map)
BuildStep::fromMap(map); BuildStep::fromMap(map);
if (hasError()) if (hasError())
return; return;
setQbsConfiguration(mapEntryFromStoreEntry(map.value(QBS_CONFIG)).toMap()); setQbsConfiguration(storeFromVariant(map.value(QBS_CONFIG)));
} }
void QbsBuildStep::toMap(Store &map) const void QbsBuildStep::toMap(Store &map) const
{ {
ProjectExplorer::BuildStep::toMap(map); ProjectExplorer::BuildStep::toMap(map);
map.insert(QBS_CONFIG, m_qbsConfiguration); map.insert(QBS_CONFIG, variantFromStore(m_qbsConfiguration));
} }
QString QbsBuildStep::buildVariant() const QString QbsBuildStep::buildVariant() const
@@ -579,9 +579,9 @@ void QbsBuildStepConfigWidget::updateState()
} }
void QbsBuildStepConfigWidget::updatePropertyEdit(const QVariantMap &data) void QbsBuildStepConfigWidget::updatePropertyEdit(const Store &data)
{ {
QVariantMap editable = data; Store editable = data;
// remove data that is edited with special UIs: // remove data that is edited with special UIs:
editable.remove(Constants::QBS_CONFIG_PROFILE_KEY); editable.remove(Constants::QBS_CONFIG_PROFILE_KEY);
@@ -596,8 +596,8 @@ void QbsBuildStepConfigWidget::updatePropertyEdit(const QVariantMap &data)
editable.remove(Constants::QBS_ARCHITECTURES); editable.remove(Constants::QBS_ARCHITECTURES);
QStringList propertyList; QStringList propertyList;
for (QVariantMap::const_iterator i = editable.constBegin(); i != editable.constEnd(); ++i) for (Store::const_iterator i = editable.constBegin(); i != editable.constEnd(); ++i)
propertyList.append(i.key() + ':' + i.value().toString()); propertyList.append(QString::fromUtf8(i.key().toByteArray()) + ':' + i.value().toString());
propertyEdit->setText(ProcessArgs::joinArgs(propertyList)); propertyEdit->setText(ProcessArgs::joinArgs(propertyList));
} }
@@ -605,7 +605,7 @@ void QbsBuildStepConfigWidget::updatePropertyEdit(const QVariantMap &data)
void QbsBuildStepConfigWidget::changeUseDefaultInstallDir(bool useDefault) void QbsBuildStepConfigWidget::changeUseDefaultInstallDir(bool useDefault)
{ {
const GuardLocker locker(m_ignoreChanges); const GuardLocker locker(m_ignoreChanges);
QVariantMap config = m_qbsStep->qbsConfiguration(QbsBuildStep::PreserveVariables); Store config = m_qbsStep->qbsConfiguration(QbsBuildStep::PreserveVariables);
installDirChooser->setEnabled(!useDefault); installDirChooser->setEnabled(!useDefault);
if (useDefault) if (useDefault)
config.remove(Constants::QBS_INSTALL_ROOT_KEY); config.remove(Constants::QBS_INSTALL_ROOT_KEY);
@@ -619,29 +619,29 @@ void QbsBuildStepConfigWidget::changeInstallDir()
if (!m_qbsStep->hasCustomInstallRoot()) if (!m_qbsStep->hasCustomInstallRoot())
return; return;
const GuardLocker locker(m_ignoreChanges); const GuardLocker locker(m_ignoreChanges);
QVariantMap config = m_qbsStep->qbsConfiguration(QbsBuildStep::PreserveVariables); Store config = m_qbsStep->qbsConfiguration(QbsBuildStep::PreserveVariables);
config.insert(Constants::QBS_INSTALL_ROOT_KEY, installDirChooser->rawFilePath().toString()); config.insert(Constants::QBS_INSTALL_ROOT_KEY, installDirChooser->rawFilePath().toString());
m_qbsStep->setQbsConfiguration(config); m_qbsStep->setQbsConfiguration(config);
} }
void QbsBuildStepConfigWidget::applyCachedProperties() void QbsBuildStepConfigWidget::applyCachedProperties()
{ {
QVariantMap data; Store data;
const QVariantMap tmp = m_qbsStep->qbsConfiguration(QbsBuildStep::PreserveVariables); const Store tmp = m_qbsStep->qbsConfiguration(QbsBuildStep::PreserveVariables);
// Insert values set up with special UIs: // Insert values set up with special UIs:
data.insert(Constants::QBS_CONFIG_PROFILE_KEY, data.insert(Constants::QBS_CONFIG_PROFILE_KEY,
tmp.value(Constants::QBS_CONFIG_PROFILE_KEY)); tmp.value(Constants::QBS_CONFIG_PROFILE_KEY));
data.insert(Constants::QBS_CONFIG_VARIANT_KEY, data.insert(Constants::QBS_CONFIG_VARIANT_KEY,
tmp.value(Constants::QBS_CONFIG_VARIANT_KEY)); tmp.value(Constants::QBS_CONFIG_VARIANT_KEY));
QStringList additionalSpecialKeys({Constants::QBS_CONFIG_DECLARATIVE_DEBUG_KEY, KeyList additionalSpecialKeys({Constants::QBS_CONFIG_DECLARATIVE_DEBUG_KEY,
Constants::QBS_CONFIG_QUICK_DEBUG_KEY, Constants::QBS_CONFIG_QUICK_DEBUG_KEY,
Constants::QBS_CONFIG_QUICK_COMPILER_KEY, Constants::QBS_CONFIG_QUICK_COMPILER_KEY,
Constants::QBS_CONFIG_SEPARATE_DEBUG_INFO_KEY, Constants::QBS_CONFIG_SEPARATE_DEBUG_INFO_KEY,
Constants::QBS_INSTALL_ROOT_KEY}); Constants::QBS_INSTALL_ROOT_KEY});
if (m_qbsStep->selectedAbis.isManagedByTarget()) if (m_qbsStep->selectedAbis.isManagedByTarget())
additionalSpecialKeys << Constants::QBS_ARCHITECTURES; additionalSpecialKeys << Constants::QBS_ARCHITECTURES;
for (const QString &key : std::as_const(additionalSpecialKeys)) { for (const Key &key : std::as_const(additionalSpecialKeys)) {
const auto it = tmp.constFind(key); const auto it = tmp.constFind(key);
if (it != tmp.cend()) if (it != tmp.cend())
data.insert(key, it.value()); data.insert(key, it.value());
@@ -649,7 +649,7 @@ void QbsBuildStepConfigWidget::applyCachedProperties()
for (int i = 0; i < m_propertyCache.count(); ++i) { for (int i = 0; i < m_propertyCache.count(); ++i) {
const Property &property = m_propertyCache.at(i); const Property &property = m_propertyCache.at(i);
data.insert(property.name, property.value); data.insert(property.name.toUtf8(), property.value);
} }
const GuardLocker locker(m_ignoreChanges); const GuardLocker locker(m_ignoreChanges);

View File

@@ -46,8 +46,8 @@ public:
QbsBuildStep(ProjectExplorer::BuildStepList *bsl, Utils::Id id); QbsBuildStep(ProjectExplorer::BuildStepList *bsl, Utils::Id id);
QVariantMap qbsConfiguration(VariableHandling variableHandling) const; Utils::Store qbsConfiguration(VariableHandling variableHandling) const;
void setQbsConfiguration(const QVariantMap &config); void setQbsConfiguration(const Utils::Store &config);
Utils::FilePath installRoot(VariableHandling variableHandling = ExpandVariables) const; Utils::FilePath installRoot(VariableHandling variableHandling = ExpandVariables) const;
QString buildVariant() const; QString buildVariant() const;
@@ -82,7 +82,7 @@ private:
void updateState(); void updateState();
QStringList configuredArchitectures() const; QStringList configuredArchitectures() const;
QVariantMap m_qbsConfiguration; Utils::Store m_qbsConfiguration;
// Temporary data: // Temporary data:
QStringList m_changedFiles; QStringList m_changedFiles;

View File

@@ -577,7 +577,7 @@ void QbsBuildSystem::startParsing()
{ {
QTC_ASSERT(!m_qbsProjectParser, return); QTC_ASSERT(!m_qbsProjectParser, return);
QVariantMap config = m_buildConfiguration->qbsConfiguration(); Store config = m_buildConfiguration->qbsConfiguration();
if (!config.contains(Constants::QBS_INSTALL_ROOT_KEY)) { if (!config.contains(Constants::QBS_INSTALL_ROOT_KEY)) {
config.insert(Constants::QBS_INSTALL_ROOT_KEY, m_buildConfiguration->macroExpander() config.insert(Constants::QBS_INSTALL_ROOT_KEY, m_buildConfiguration->macroExpander()
->expand(QbsSettings::defaultInstallDirTemplate())); ->expand(QbsSettings::defaultInstallDirTemplate()));

View File

@@ -205,9 +205,9 @@ const QList<BuildInfo> QbsProjectImporter::buildInfoList(void *directoryData) co
? BuildConfiguration::Profile : bgData->buildVariant == QbsConstants::QBS_VARIANT_RELEASE ? BuildConfiguration::Profile : bgData->buildVariant == QbsConstants::QBS_VARIANT_RELEASE
? BuildConfiguration::Release : BuildConfiguration::Debug; ? BuildConfiguration::Release : BuildConfiguration::Debug;
info.buildDirectory = bgData->bgFilePath.parentDir().parentDir(); info.buildDirectory = bgData->bgFilePath.parentDir().parentDir();
QVariantMap config = bgData->overriddenProperties; Store config = storeFromMap(bgData->overriddenProperties);
config.insert("configName", info.displayName); config.insert("configName", info.displayName);
info.extraInfo = config; info.extraInfo = variantFromStore(config);
qCDebug(qbsPmLog) << "creating build info for " << info.displayName << ' ' << bgData->buildVariant; qCDebug(qbsPmLog) << "creating build info for " << info.displayName << ' ' << bgData->buildVariant;
return {info}; return {info};
} }

View File

@@ -41,7 +41,7 @@ QbsProjectParser::~QbsProjectParser()
m_fi = nullptr; // we do not own m_fi, do not delete m_fi = nullptr; // we do not own m_fi, do not delete
} }
void QbsProjectParser::parse(const QVariantMap &config, const Environment &env, void QbsProjectParser::parse(const Store &config, const Environment &env,
const FilePath &dir, const QString &configName) const FilePath &dir, const QString &configName)
{ {
QTC_ASSERT(m_session, return); QTC_ASSERT(m_session, return);
@@ -50,7 +50,7 @@ void QbsProjectParser::parse(const QVariantMap &config, const Environment &env,
m_environment = env; m_environment = env;
QJsonObject request; QJsonObject request;
request.insert("type", "resolve-project"); request.insert("type", "resolve-project");
QVariantMap userConfig = config; Store userConfig = config;
request.insert("top-level-profile", request.insert("top-level-profile",
userConfig.take(Constants::QBS_CONFIG_PROFILE_KEY).toString()); userConfig.take(Constants::QBS_CONFIG_PROFILE_KEY).toString());
request.insert("configuration-name", configName); request.insert("configuration-name", configName);
@@ -58,7 +58,7 @@ void QbsProjectParser::parse(const QVariantMap &config, const Environment &env,
userConfig.take(Constants::QBS_FORCE_PROBES_KEY).toBool()); userConfig.take(Constants::QBS_FORCE_PROBES_KEY).toBool());
if (QbsSettings::useCreatorSettingsDirForQbs()) if (QbsSettings::useCreatorSettingsDirForQbs())
request.insert("settings-directory", QbsSettings::qbsSettingsBaseDir()); request.insert("settings-directory", QbsSettings::qbsSettingsBaseDir());
request.insert("overridden-properties", QJsonObject::fromVariantMap(userConfig)); request.insert("overridden-properties", QJsonObject::fromVariantMap(mapFromStore(userConfig)));
// People don't like it when files are created as a side effect of opening a project, // People don't like it when files are created as a side effect of opening a project,
// so do not store the build graph if the build directory does not exist yet. // so do not store the build graph if the build directory does not exist yet.

View File

@@ -6,6 +6,7 @@
#include "qbssession.h" #include "qbssession.h"
#include <utils/environment.h> #include <utils/environment.h>
#include <utils/store.h>
#include <QFutureInterface> #include <QFutureInterface>
#include <QJsonObject> #include <QJsonObject>
@@ -23,7 +24,7 @@ public:
QbsProjectParser(QbsBuildSystem *buildSystem, QFutureInterface<bool> *fi); QbsProjectParser(QbsBuildSystem *buildSystem, QFutureInterface<bool> *fi);
~QbsProjectParser() override; ~QbsProjectParser() override;
void parse(const QVariantMap &config, void parse(const Utils::Store &config,
const Utils::Environment &env, const Utils::Environment &env,
const Utils::FilePath &dir, const Utils::FilePath &dir,
const QString &configName); const QString &configName);