MCU: Do not add fall-back path for QUL kits

Fixes: UL-3609
Change-Id: I9912c7476f3b45346835d60be61fed7399046162
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Erik Verbruggen
2021-02-09 17:27:02 +01:00
committed by Erik Verbruggen
parent 12a0934830
commit 7dc82b1af9
7 changed files with 44 additions and 3 deletions

View File

@@ -600,7 +600,7 @@ void McuSupportOptions::setQulDir(const FilePath &dir)
qtForMCUsSdkPackage->updateStatus(); qtForMCUsSdkPackage->updateStatus();
if (qtForMCUsSdkPackage->status() == McuPackage::Status::ValidPackage) if (qtForMCUsSdkPackage->status() == McuPackage::Status::ValidPackage)
Sdk::targetsAndPackages(dir, &packages, &mcuTargets); Sdk::targetsAndPackages(dir, &packages, &mcuTargets);
for (auto package : packages) for (auto package : qAsConst(packages))
connect(package, &McuPackage::changed, this, &McuSupportOptions::changed); connect(package, &McuPackage::changed, this, &McuSupportOptions::changed);
emit changed(); emit changed();
@@ -629,7 +629,8 @@ static void setKitProperties(const QString &kitName, Kit *k, const McuTarget *mc
k->makeSticky(); k->makeSticky();
if (mcuTarget->toolChainPackage()->isDesktopToolchain()) if (mcuTarget->toolChainPackage()->isDesktopToolchain())
k->setDeviceTypeForIcon(DEVICE_TYPE); k->setDeviceTypeForIcon(DEVICE_TYPE);
QSet<Id> irrelevant = { SysRootKitAspect::id() }; k->setValue(QtSupport::SuppliesQtQuickImportPath::id(), true);
QSet<Id> irrelevant = { SysRootKitAspect::id(), QtSupport::SuppliesQtQuickImportPath::id() };
if (!kitNeedsQtVersion()) if (!kitNeedsQtVersion())
irrelevant.insert(QtSupport::QtKitAspect::id()); irrelevant.insert(QtSupport::QtKitAspect::id());
k->setIrrelevantAspects(irrelevant); k->setIrrelevantAspects(irrelevant);
@@ -912,5 +913,29 @@ void McuSupportOptions::createAutomaticKits()
delete qtForMCUsPackage; 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 } // Internal
} // McuSupport } // McuSupport

View File

@@ -208,6 +208,7 @@ public:
static void removeOutdatedKits(); static void removeOutdatedKits();
static ProjectExplorer::Kit *newKit(const McuTarget *mcuTarget, const McuPackage *qtForMCUsSdk); static ProjectExplorer::Kit *newKit(const McuTarget *mcuTarget, const McuPackage *qtForMCUsSdk);
static void createAutomaticKits(); static void createAutomaticKits();
static void fixExistingKits();
void populatePackagesAndTargets(); void populatePackagesAndTargets();
static void registerQchFiles(); static void registerQchFiles();
static void registerExamples(); static void registerExamples();

View File

@@ -96,6 +96,7 @@ void McuSupportPlugin::extensionsInitialized()
connect(KitManager::instance(), &KitManager::kitsLoaded, [](){ connect(KitManager::instance(), &KitManager::kitsLoaded, [](){
McuSupportOptions::removeOutdatedKits(); McuSupportOptions::removeOutdatedKits();
McuSupportOptions::createAutomaticKits(); McuSupportOptions::createAutomaticKits();
McuSupportOptions::fixExistingKits();
McuSupportPlugin::askUserAboutMcuSupportKitsSetup(); McuSupportPlugin::askUserAboutMcuSupportKitsSetup();
}); });
} }

View File

@@ -155,7 +155,7 @@ ModelManagerInterface::ProjectInfo ModelManager::defaultProjectInfoForProject(
projectInfo.tryQmlDump = project && qtVersion->type() == QLatin1String(QtSupport::Constants::DESKTOPQT); projectInfo.tryQmlDump = project && qtVersion->type() == QLatin1String(QtSupport::Constants::DESKTOPQT);
projectInfo.qtQmlPath = qtVersion->qmlPath().toFileInfo().canonicalFilePath(); projectInfo.qtQmlPath = qtVersion->qmlPath().toFileInfo().canonicalFilePath();
projectInfo.qtVersionString = qtVersion->qtVersionString(); projectInfo.qtVersionString = qtVersion->qtVersionString();
} else { } else if (!activeKit->value(QtSupport::SuppliesQtQuickImportPath::id(), false).toBool()) {
projectInfo.qtQmlPath = QFileInfo(QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath)).canonicalFilePath(); projectInfo.qtQmlPath = QFileInfo(QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath)).canonicalFilePath();
projectInfo.qtVersionString = QLatin1String(qVersion()); projectInfo.qtVersionString = QLatin1String(qVersion());
} }

View File

@@ -464,4 +464,9 @@ int QtKitAspect::weight(const Kit *k) const
return qtAbi.isCompatibleWith(tcAbi); }) ? 1 : 0; return qtAbi.isCompatibleWith(tcAbi); }) ? 1 : 0;
} }
Id SuppliesQtQuickImportPath::id()
{
return QtSupport::Constants::FLAGS_SUPPLIES_QTQUICK_IMPORT_PATH;
}
} // namespace QtSupport } // namespace QtSupport

View File

@@ -83,4 +83,10 @@ private:
void kitsWereLoaded(); void kitsWereLoaded();
}; };
class QTSUPPORT_EXPORT SuppliesQtQuickImportPath
{
public:
static Utils::Id id();
};
} // namespace QtSupport } // namespace QtSupport

View File

@@ -55,5 +55,8 @@ const char FEATURE_QT_CONSOLE[] = "QtSupport.Wizards.FeatureQtConsole";
const char FEATURE_MOBILE[] = "QtSupport.Wizards.FeatureMobile"; const char FEATURE_MOBILE[] = "QtSupport.Wizards.FeatureMobile";
const char FEATURE_DESKTOP[] = "QtSupport.Wizards.FeatureDesktop"; const char FEATURE_DESKTOP[] = "QtSupport.Wizards.FeatureDesktop";
// Kit flags
const char FLAGS_SUPPLIES_QTQUICK_IMPORT_PATH[] = "QtSupport.SuppliesQtQuickImportPath";
} // namepsace Constants } // namepsace Constants
} // namepsace QtSupport } // namepsace QtSupport