From 7dc82b1af941040a8e1aea6cff5438b757c7c051 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Tue, 9 Feb 2021 17:27:02 +0100 Subject: MCU: Do not add fall-back path for QUL kits Fixes: UL-3609 Change-Id: I9912c7476f3b45346835d60be61fed7399046162 Reviewed-by: Alessandro Portale --- src/plugins/mcusupport/mcusupportoptions.cpp | 29 ++++++++++++++++++++++++++-- src/plugins/mcusupport/mcusupportoptions.h | 1 + src/plugins/mcusupport/mcusupportplugin.cpp | 1 + src/plugins/qmljstools/qmljsmodelmanager.cpp | 2 +- src/plugins/qtsupport/qtkitinformation.cpp | 5 +++++ src/plugins/qtsupport/qtkitinformation.h | 6 ++++++ src/plugins/qtsupport/qtsupportconstants.h | 3 +++ 7 files changed, 44 insertions(+), 3 deletions(-) diff --git a/src/plugins/mcusupport/mcusupportoptions.cpp b/src/plugins/mcusupport/mcusupportoptions.cpp index 3d86cd1798..56bcf57165 100644 --- a/src/plugins/mcusupport/mcusupportoptions.cpp +++ b/src/plugins/mcusupport/mcusupportoptions.cpp @@ -600,7 +600,7 @@ void McuSupportOptions::setQulDir(const FilePath &dir) qtForMCUsSdkPackage->updateStatus(); if (qtForMCUsSdkPackage->status() == McuPackage::Status::ValidPackage) Sdk::targetsAndPackages(dir, &packages, &mcuTargets); - for (auto package : packages) + for (auto package : qAsConst(packages)) connect(package, &McuPackage::changed, this, &McuSupportOptions::changed); emit changed(); @@ -629,7 +629,8 @@ static void setKitProperties(const QString &kitName, Kit *k, const McuTarget *mc k->makeSticky(); if (mcuTarget->toolChainPackage()->isDesktopToolchain()) k->setDeviceTypeForIcon(DEVICE_TYPE); - QSet irrelevant = { SysRootKitAspect::id() }; + k->setValue(QtSupport::SuppliesQtQuickImportPath::id(), true); + QSet irrelevant = { SysRootKitAspect::id(), QtSupport::SuppliesQtQuickImportPath::id() }; if (!kitNeedsQtVersion()) irrelevant.insert(QtSupport::QtKitAspect::id()); k->setIrrelevantAspects(irrelevant); @@ -912,5 +913,29 @@ void McuSupportOptions::createAutomaticKits() delete qtForMCUsPackage; } +/** + * @brief Fix/update existing kits if needed + */ +void McuSupportOptions::fixExistingKits() +{ + for (Kit *kit : KitManager::kits()) { + if (!kit->hasValue(Constants::KIT_MCUTARGET_KITVERSION_KEY) ) + continue; + + // Check if the MCU kits are flagged as supplying a QtQuick import path, in order + // to tell the QMLJS code-model that it won't need to add a fall-back import + // path. + const auto bringsQtQuickImportPath = QtSupport::SuppliesQtQuickImportPath::id(); + auto irrelevantAspects = kit->irrelevantAspects(); + if (!irrelevantAspects.contains(bringsQtQuickImportPath)) { + irrelevantAspects.insert(bringsQtQuickImportPath); + kit->setIrrelevantAspects(irrelevantAspects); + } + if (!kit->hasValue(bringsQtQuickImportPath)) { + kit->setValue(bringsQtQuickImportPath, true); + } + } +} + } // Internal } // McuSupport diff --git a/src/plugins/mcusupport/mcusupportoptions.h b/src/plugins/mcusupport/mcusupportoptions.h index 2ab9401424..57772bafb2 100644 --- a/src/plugins/mcusupport/mcusupportoptions.h +++ b/src/plugins/mcusupport/mcusupportoptions.h @@ -208,6 +208,7 @@ public: static void removeOutdatedKits(); static ProjectExplorer::Kit *newKit(const McuTarget *mcuTarget, const McuPackage *qtForMCUsSdk); static void createAutomaticKits(); + static void fixExistingKits(); void populatePackagesAndTargets(); static void registerQchFiles(); static void registerExamples(); diff --git a/src/plugins/mcusupport/mcusupportplugin.cpp b/src/plugins/mcusupport/mcusupportplugin.cpp index 9ecd84e75b..dec7c66c71 100644 --- a/src/plugins/mcusupport/mcusupportplugin.cpp +++ b/src/plugins/mcusupport/mcusupportplugin.cpp @@ -96,6 +96,7 @@ void McuSupportPlugin::extensionsInitialized() connect(KitManager::instance(), &KitManager::kitsLoaded, [](){ McuSupportOptions::removeOutdatedKits(); McuSupportOptions::createAutomaticKits(); + McuSupportOptions::fixExistingKits(); McuSupportPlugin::askUserAboutMcuSupportKitsSetup(); }); } diff --git a/src/plugins/qmljstools/qmljsmodelmanager.cpp b/src/plugins/qmljstools/qmljsmodelmanager.cpp index dfb7adcb8a..56c974c07c 100644 --- a/src/plugins/qmljstools/qmljsmodelmanager.cpp +++ b/src/plugins/qmljstools/qmljsmodelmanager.cpp @@ -155,7 +155,7 @@ ModelManagerInterface::ProjectInfo ModelManager::defaultProjectInfoForProject( projectInfo.tryQmlDump = project && qtVersion->type() == QLatin1String(QtSupport::Constants::DESKTOPQT); projectInfo.qtQmlPath = qtVersion->qmlPath().toFileInfo().canonicalFilePath(); projectInfo.qtVersionString = qtVersion->qtVersionString(); - } else { + } else if (!activeKit->value(QtSupport::SuppliesQtQuickImportPath::id(), false).toBool()) { projectInfo.qtQmlPath = QFileInfo(QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath)).canonicalFilePath(); projectInfo.qtVersionString = QLatin1String(qVersion()); } diff --git a/src/plugins/qtsupport/qtkitinformation.cpp b/src/plugins/qtsupport/qtkitinformation.cpp index cc8c42f83f..a1411598f2 100644 --- a/src/plugins/qtsupport/qtkitinformation.cpp +++ b/src/plugins/qtsupport/qtkitinformation.cpp @@ -464,4 +464,9 @@ int QtKitAspect::weight(const Kit *k) const return qtAbi.isCompatibleWith(tcAbi); }) ? 1 : 0; } +Id SuppliesQtQuickImportPath::id() +{ + return QtSupport::Constants::FLAGS_SUPPLIES_QTQUICK_IMPORT_PATH; +} + } // namespace QtSupport diff --git a/src/plugins/qtsupport/qtkitinformation.h b/src/plugins/qtsupport/qtkitinformation.h index 22efc6caff..23427df87b 100644 --- a/src/plugins/qtsupport/qtkitinformation.h +++ b/src/plugins/qtsupport/qtkitinformation.h @@ -83,4 +83,10 @@ private: void kitsWereLoaded(); }; +class QTSUPPORT_EXPORT SuppliesQtQuickImportPath +{ +public: + static Utils::Id id(); +}; + } // namespace QtSupport diff --git a/src/plugins/qtsupport/qtsupportconstants.h b/src/plugins/qtsupport/qtsupportconstants.h index f8a453d13d..ea921295d6 100644 --- a/src/plugins/qtsupport/qtsupportconstants.h +++ b/src/plugins/qtsupport/qtsupportconstants.h @@ -55,5 +55,8 @@ const char FEATURE_QT_CONSOLE[] = "QtSupport.Wizards.FeatureQtConsole"; const char FEATURE_MOBILE[] = "QtSupport.Wizards.FeatureMobile"; const char FEATURE_DESKTOP[] = "QtSupport.Wizards.FeatureDesktop"; +// Kit flags +const char FLAGS_SUPPLIES_QTQUICK_IMPORT_PATH[] = "QtSupport.SuppliesQtQuickImportPath"; + } // namepsace Constants } // namepsace QtSupport -- cgit v1.2.1