forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -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_";
|
||||
|
@@ -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;
|
||||
|
@@ -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();
|
||||
|
@@ -231,6 +231,7 @@ void McuSupportOptionsWidget::apply()
|
||||
return;
|
||||
|
||||
McuSupportOptions::registerQchFiles();
|
||||
McuSupportOptions::removeOutdatedKits();
|
||||
|
||||
const McuTarget *mcuTarget = currentMcuTarget();
|
||||
if (!mcuTarget)
|
||||
|
Reference in New Issue
Block a user