diff options
author | Alessandro Portale <alessandro.portale@qt.io> | 2020-04-22 23:24:54 +0200 |
---|---|---|
committer | Alessandro Portale <alessandro.portale@qt.io> | 2020-04-27 10:26:23 +0000 |
commit | 5795ce2aae14692ceed23d3a673661373f9f8ce5 (patch) | |
tree | 5898c25ffe237dbaf9618e5e32a01ac3ddfbfcdb | |
parent | ab840d004377f96ede62ce92d603f63d90818e89 (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.h | 1 | ||||
-rw-r--r-- | src/plugins/mcusupport/mcusupportoptions.cpp | 18 | ||||
-rw-r--r-- | src/plugins/mcusupport/mcusupportoptions.h | 2 | ||||
-rw-r--r-- | src/plugins/mcusupport/mcusupportoptionspage.cpp | 1 |
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) |