aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlessandro Portale <alessandro.portale@qt.io>2020-04-22 23:24:54 +0200
committerAlessandro Portale <alessandro.portale@qt.io>2020-04-27 10:26:23 +0000
commit5795ce2aae14692ceed23d3a673661373f9f8ce5 (patch)
tree5898c25ffe237dbaf9618e5e32a01ac3ddfbfcdb
parentab840d004377f96ede62ce92d603f63d90818e89 (diff)
McuSupport: Remove outdated Qt for MCUs kits
Add a version to the generated Qt for MCUs kits. That version will increase with every change to the way Qt for MCUs kits get generated. If there are auto-detected Qt for MCUs kits with a different version than the current, remove these kits when a "fresh" gets generated. Task-number: QTCREATORBUG-23891 Change-Id: Iafcd2342d458f9c77ada47180cb61b3b4b090598 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r--src/plugins/mcusupport/mcusupportconstants.h1
-rw-r--r--src/plugins/mcusupport/mcusupportoptions.cpp18
-rw-r--r--src/plugins/mcusupport/mcusupportoptions.h2
-rw-r--r--src/plugins/mcusupport/mcusupportoptionspage.cpp1
4 files changed, 22 insertions, 0 deletions
diff --git a/src/plugins/mcusupport/mcusupportconstants.h b/src/plugins/mcusupport/mcusupportconstants.h
index 88489b1196c..17fd68f181f 100644
--- a/src/plugins/mcusupport/mcusupportconstants.h
+++ b/src/plugins/mcusupport/mcusupportconstants.h
@@ -35,6 +35,7 @@ const char SETTINGS_ID[] = "CC.McuSupport.Configuration";
const char KIT_MCUTARGET_VENDOR_KEY[] = "McuSupport.McuTargetVendor";
const char KIT_MCUTARGET_MODEL_KEY[] = "McuSupport.McuTargetModel";
const char KIT_MCUTARGET_SDKVERSION_KEY[] = "McuSupport.McuTargetSdkVersion";
+const char KIT_MCUTARGET_KITVERSION_KEY[] = "McuSupport.McuTargetKitVersion";
const char SETTINGS_GROUP[] = "McuSupport";
const char SETTINGS_KEY_PACKAGE_PREFIX[] = "Package_";
diff --git a/src/plugins/mcusupport/mcusupportoptions.cpp b/src/plugins/mcusupport/mcusupportoptions.cpp
index 719030e3feb..342e273e6e3 100644
--- a/src/plugins/mcusupport/mcusupportoptions.cpp
+++ b/src/plugins/mcusupport/mcusupportoptions.cpp
@@ -61,6 +61,8 @@
namespace McuSupport {
namespace Internal {
+static const int KIT_VERSION = 1; // Bumps up whenever details in Kit creation change
+
static QString packagePathFromSettings(const QString &settingsKey, const QString &defaultPath = {})
{
QSettings *s = Core::ICore::settings();
@@ -473,6 +475,7 @@ static void setKitProperties(const QString &kitName, ProjectExplorer::Kit *k,
k->setValue(Constants::KIT_MCUTARGET_MODEL_KEY, mcuTarget->qulPlatform());
k->setValue(Constants::KIT_MCUTARGET_SDKVERSION_KEY,
McuSupportOptions::supportedQulVersion().toString());
+ k->setValue(Constants::KIT_MCUTARGET_KITVERSION_KEY, KIT_VERSION);
k->setAutoDetected(true);
k->makeSticky();
if (mcuTarget->toolChainPackage()->type() == McuToolChainPackage::TypeDesktop)
@@ -613,6 +616,21 @@ QList<ProjectExplorer::Kit *> McuSupportOptions::existingKits(const McuTarget *m
});
}
+QList<ProjectExplorer::Kit *> McuSupportOptions::outdatedKits()
+{
+ return Utils::filtered(ProjectExplorer::KitManager::kits(), [](ProjectExplorer::Kit *kit) {
+ return kit->isAutoDetected()
+ && !kit->value(Constants::KIT_MCUTARGET_VENDOR_KEY).isNull()
+ && kit->value(Constants::KIT_MCUTARGET_KITVERSION_KEY) != KIT_VERSION;
+ });
+}
+
+void McuSupportOptions::removeOutdatedKits()
+{
+ for (auto kit : McuSupportOptions::outdatedKits())
+ ProjectExplorer::KitManager::deregisterKit(kit);
+}
+
ProjectExplorer::Kit *McuSupportOptions::newKit(const McuTarget *mcuTarget)
{
using namespace ProjectExplorer;
diff --git a/src/plugins/mcusupport/mcusupportoptions.h b/src/plugins/mcusupport/mcusupportoptions.h
index b87452cca5c..2843ba6341c 100644
--- a/src/plugins/mcusupport/mcusupportoptions.h
+++ b/src/plugins/mcusupport/mcusupportoptions.h
@@ -168,6 +168,8 @@ public:
QString kitName(const McuTarget* mcuTarget) const;
QList<ProjectExplorer::Kit *> existingKits(const McuTarget *mcuTargt);
+ static QList<ProjectExplorer::Kit *> outdatedKits();
+ static void removeOutdatedKits();
ProjectExplorer::Kit *newKit(const McuTarget *mcuTarget);
void populatePackagesAndTargets();
static void registerQchFiles();
diff --git a/src/plugins/mcusupport/mcusupportoptionspage.cpp b/src/plugins/mcusupport/mcusupportoptionspage.cpp
index e07899028d5..7fabe979314 100644
--- a/src/plugins/mcusupport/mcusupportoptionspage.cpp
+++ b/src/plugins/mcusupport/mcusupportoptionspage.cpp
@@ -231,6 +231,7 @@ void McuSupportOptionsWidget::apply()
return;
McuSupportOptions::registerQchFiles();
+ McuSupportOptions::removeOutdatedKits();
const McuTarget *mcuTarget = currentMcuTarget();
if (!mcuTarget)