QbsProjectManager: Do not call qbs config unnecessarily

- We know the name of the profile for a given kit. There is no need to
  call qbs config to retrieve it.
- Do not update a profile upon kit removal.

Change-Id: I1a555233091c69d9ea6daa1e4a11737719c37fdf
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Christian Kandeler
2019-12-05 15:15:35 +01:00
parent 6ccdf74965
commit f0316dbae9
5 changed files with 19 additions and 16 deletions

View File

@@ -182,7 +182,7 @@ bool QbsBuildConfiguration::fromMap(const QVariantMap &map)
return false; return false;
if (m_configurationName->value().isEmpty()) { // pre-4.4 backwards compatibility if (m_configurationName->value().isEmpty()) { // pre-4.4 backwards compatibility
const QString profileName = QbsProfileManager::profileForKit(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(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY)).toString();
m_configurationName->setValue(profileName + '-' + buildVariant); m_configurationName->setValue(profileName + '-' + buildVariant);
@@ -376,7 +376,7 @@ QString QbsBuildConfiguration::equivalentCommandLine(const BuildStep *buildStep)
if (jobCount > 0) if (jobCount > 0)
commandLine.addArgs({"--jobs", QString::number(jobCount)}); commandLine.addArgs({"--jobs", QString::number(jobCount)});
const QString profileName = QbsProfileManager::profileForKit(buildStep->target()->kit()); const QString profileName = QbsProfileManager::profileNameForKit(buildStep->target()->kit());
const QString buildVariant = qbsConfiguration() const QString buildVariant = qbsConfiguration()
.value(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY)).toString(); .value(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY)).toString();
commandLine.addArg("config:" + configurationName()); commandLine.addArg("config:" + configurationName());

View File

@@ -146,17 +146,12 @@ QbsProfileManager *QbsProfileManager::instance()
return m_instance; return m_instance;
} }
QString QbsProfileManager::profileForKit(const ProjectExplorer::Kit *k) QString QbsProfileManager::ensureProfileForKit(const ProjectExplorer::Kit *k)
{ {
if (!k) if (!k)
return QString(); return QString();
m_instance->updateProfileIfNecessary(k); m_instance->updateProfileIfNecessary(k);
const QString output = runQbsConfig(QbsConfigOp::Get, kitNameKeyInQbsSettings(k)); return profileNameForKit(k);
const int endQuoteIdx = output.lastIndexOf('"');
QTC_ASSERT(endQuoteIdx != -1, return QString());
const int startQuoteIdx = output.lastIndexOf('"', endQuoteIdx - 1);
QTC_ASSERT(startQuoteIdx != -1, return QString());
return output.mid(startQuoteIdx + 1, endQuoteIdx - startQuoteIdx - 1);
} }
void QbsProfileManager::setProfileForKit(const QString &name, const ProjectExplorer::Kit *k) void QbsProfileManager::setProfileForKit(const QString &name, const ProjectExplorer::Kit *k)
@@ -197,9 +192,7 @@ void QbsProfileManager::addQtProfileFromKit(const QString &profileName, const Pr
void QbsProfileManager::addProfileFromKit(const ProjectExplorer::Kit *k) void QbsProfileManager::addProfileFromKit(const ProjectExplorer::Kit *k)
{ {
const QString name = QString::fromLatin1("qtc_%1_%2").arg(k->fileSystemFriendlyName().left(8), const QString name = profileNameForKit(k);
QString::fromLatin1(QCryptographicHash::hash(k->id().name(),
QCryptographicHash::Sha1).toHex().left(8)));
runQbsConfig(QbsConfigOp::Unset, "profiles." + name); runQbsConfig(QbsConfigOp::Unset, "profiles." + name);
setProfileForKit(name, k); setProfileForKit(name, k);
addQtProfileFromKit(name, k); addQtProfileFromKit(name, k);
@@ -224,10 +217,19 @@ void QbsProfileManager::handleKitRemoval(ProjectExplorer::Kit *kit)
{ {
m_kitsToBeSetupForQbs.removeOne(kit); m_kitsToBeSetupForQbs.removeOne(kit);
runQbsConfig(QbsConfigOp::Unset, kitNameKeyInQbsSettings(kit)); runQbsConfig(QbsConfigOp::Unset, kitNameKeyInQbsSettings(kit));
runQbsConfig(QbsConfigOp::Unset, "profiles." + profileForKit(kit)); runQbsConfig(QbsConfigOp::Unset, "profiles." + profileNameForKit(kit));
emit qbsProfilesUpdated(); emit qbsProfilesUpdated();
} }
QString QbsProfileManager::profileNameForKit(const ProjectExplorer::Kit *kit)
{
if (!kit)
return QString();
return QString::fromLatin1("qtc_%1_%2").arg(kit->fileSystemFriendlyName().left(8),
QString::fromLatin1(QCryptographicHash::hash(
kit->id().name(), QCryptographicHash::Sha1).toHex().left(8)));
}
QString QbsProfileManager::runQbsConfig(QbsConfigOp op, const QString &key, const QVariant &value) QString QbsProfileManager::runQbsConfig(QbsConfigOp op, const QString &key, const QVariant &value)
{ {
QProcess qbsConfig; QProcess qbsConfig;

View File

@@ -49,7 +49,8 @@ public:
static QbsProfileManager *instance(); static QbsProfileManager *instance();
static QString profileForKit(const ProjectExplorer::Kit *k); static QString ensureProfileForKit(const ProjectExplorer::Kit *k);
static QString profileNameForKit(const ProjectExplorer::Kit *kit);
static void updateProfileIfNecessary(const ProjectExplorer::Kit *kit); static void updateProfileIfNecessary(const ProjectExplorer::Kit *kit);
enum class QbsConfigOp { Get, Set, Unset }; static QString runQbsConfig(QbsConfigOp op, const QString &key, const QVariant &value = {}); enum class QbsConfigOp { Get, Set, Unset }; static QString runQbsConfig(QbsConfigOp op, const QString &key, const QVariant &value = {});

View File

@@ -195,7 +195,7 @@ void QbsProfilesSettingsWidget::displayCurrentProfile()
const Core::Id kitId = Core::Id::fromSetting(m_ui.kitsComboBox->currentData()); const Core::Id kitId = Core::Id::fromSetting(m_ui.kitsComboBox->currentData());
const Kit * const kit = KitManager::kit(kitId); const Kit * const kit = KitManager::kit(kitId);
QTC_ASSERT(kit, return); QTC_ASSERT(kit, return);
const QString profileName = QbsProfileManager::profileForKit(kit); const QString profileName = QbsProfileManager::ensureProfileForKit(kit);
m_ui.profileValueLabel->setText(profileName); m_ui.profileValueLabel->setText(profileName);
for (int i = 0; i < m_model.rowCount(); ++i) { for (int i = 0; i < m_model.rowCount(); ++i) {
const QModelIndex currentProfileIndex = m_model.index(i, 0); const QModelIndex currentProfileIndex = m_model.index(i, 0);

View File

@@ -435,7 +435,7 @@ bool QbsBuildSystem::renameFileInProduct(
QString QbsBuildSystem::profile() const QString QbsBuildSystem::profile() const
{ {
return QbsProfileManager::profileForKit(target()->kit()); return QbsProfileManager::ensureProfileForKit(target()->kit());
} }
bool QbsBuildSystem::checkCancelStatus() bool QbsBuildSystem::checkCancelStatus()