From 1a99f41fe8ce74cfcff6ae18d662d9c995f1a543 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 24 Feb 2022 11:51:58 +0100 Subject: [PATCH] QbsProjectManager: Call qbs-config directly It's slightly faster than going through the qbs executable first. Fixes: QTCREATORBUG-27102 Change-Id: I13297e700fed43b20e1d1185dbdfc16152584d56 Reviewed-by: Reviewed-by: Qt CI Bot Reviewed-by: Alessandro Portale --- src/plugins/qbsprojectmanager/qbsprofilemanager.cpp | 10 +++++----- src/plugins/qbsprojectmanager/qbssettings.cpp | 12 ++++++++++++ src/plugins/qbsprojectmanager/qbssettings.h | 1 + 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp b/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp index 41810655c3a..7909de1981e 100644 --- a/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp +++ b/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp @@ -218,8 +218,7 @@ QString QbsProfileManager::profileNameForKit(const ProjectExplorer::Kit *kit) QString QbsProfileManager::runQbsConfig(QbsConfigOp op, const QString &key, const QVariant &value) { - Utils::QtcProcess qbsConfig; - QStringList args("config"); + QStringList args; if (QbsSettings::useCreatorSettingsDirForQbs()) args << "--settings-dir" << QbsSettings::qbsSettingsBaseDir(); switch (op) { @@ -242,10 +241,11 @@ QString QbsProfileManager::runQbsConfig(QbsConfigOp op, const QString &key, cons break; } } - const Utils::FilePath qbsExe = QbsSettings::qbsExecutableFilePath(); - if (qbsExe.isEmpty() || !qbsExe.exists()) + const Utils::FilePath qbsConfigExe = QbsSettings::qbsConfigFilePath(); + if (qbsConfigExe.isEmpty() || !qbsConfigExe.exists()) return {}; - qbsConfig.setCommand({qbsExe, args}); + Utils::QtcProcess qbsConfig; + qbsConfig.setCommand({qbsConfigExe, args}); qbsConfig.start(); if (!qbsConfig.waitForStarted(3000) || !qbsConfig.waitForFinished(5000)) { Core::MessageManager::writeFlashing( diff --git a/src/plugins/qbsprojectmanager/qbssettings.cpp b/src/plugins/qbsprojectmanager/qbssettings.cpp index 010fad3f73e..55619f73f28 100644 --- a/src/plugins/qbsprojectmanager/qbssettings.cpp +++ b/src/plugins/qbsprojectmanager/qbssettings.cpp @@ -87,6 +87,18 @@ FilePath QbsSettings::qbsExecutableFilePath() return candidate; } +FilePath QbsSettings::qbsConfigFilePath() +{ + const FilePath qbsExe = qbsExecutableFilePath(); + if (!qbsExe.isExecutableFile()) + return {}; + const FilePath qbsConfig = qbsExe.absolutePath().pathAppended("qbs-config") + .withExecutableSuffix(); + if (!qbsConfig.isExecutableFile()) + return {}; + return qbsConfig; +} + QString QbsSettings::defaultInstallDirTemplate() { return instance().m_settings.defaultInstallDirTemplate; diff --git a/src/plugins/qbsprojectmanager/qbssettings.h b/src/plugins/qbsprojectmanager/qbssettings.h index fef663e2063..dd908029e62 100644 --- a/src/plugins/qbsprojectmanager/qbssettings.h +++ b/src/plugins/qbsprojectmanager/qbssettings.h @@ -50,6 +50,7 @@ public: static QbsSettings &instance(); static Utils::FilePath qbsExecutableFilePath(); + static Utils::FilePath qbsConfigFilePath(); static bool hasQbsExecutable(); static QString defaultInstallDirTemplate(); static bool useCreatorSettingsDirForQbs();