McuSupport: Display errors when generating kits automatically

Fixes: QTCREATORBUG-25260
Change-Id: I5e45a56d08920886b2f654a1c98a7451e1c9dc3f
Reviewed-by: Dawid Śliwa <dawid.sliwa@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Christiaan Janssen
2020-12-04 16:32:34 +01:00
committed by christiaan.janssen
parent 1b0ad83b99
commit 4b6f1c1366
3 changed files with 46 additions and 8 deletions

View File

@@ -490,6 +490,19 @@ bool McuTarget::isValid() const
}); });
} }
void McuTarget::printPackageProblems() const
{
for (auto package: packages()) {
package->updateStatus();
if (package->status() != McuPackage::ValidPackage)
printMessage(QString("Error creating kit for target %1, package %2: %3").arg(
McuSupportOptions::kitName(this),
package->label(),
package->statusText()),
true);
}
}
QVersionNumber McuTarget::qulVersion() const QVersionNumber McuTarget::qulVersion() const
{ {
return m_qulVersion; return m_qulVersion;
@@ -699,13 +712,28 @@ static void setKitCMakeOptions(Kit *k, const McuTarget* mcuTarget, const QString
config.append(CMakeConfigItem("CMAKE_CXX_COMPILER", "%{Compiler:Executable:Cxx}")); config.append(CMakeConfigItem("CMAKE_CXX_COMPILER", "%{Compiler:Executable:Cxx}"));
config.append(CMakeConfigItem("CMAKE_C_COMPILER", "%{Compiler:Executable:C}")); config.append(CMakeConfigItem("CMAKE_C_COMPILER", "%{Compiler:Executable:C}"));
} }
if (!mcuTarget->toolChainPackage()->isDesktopToolchain())
if (!mcuTarget->toolChainPackage()->isDesktopToolchain()) {
const FilePath cMakeToolchainFile = FilePath::fromString(qulDir + "/lib/cmake/Qul/toolchain/"
+ mcuTarget->toolChainPackage()->cmakeToolChainFileName());
config.append(CMakeConfigItem( config.append(CMakeConfigItem(
"CMAKE_TOOLCHAIN_FILE", "CMAKE_TOOLCHAIN_FILE",
(qulDir + "/lib/cmake/Qul/toolchain/" cMakeToolchainFile.toString().toUtf8()));
+ mcuTarget->toolChainPackage()->cmakeToolChainFileName()).toUtf8())); if (!cMakeToolchainFile.exists()) {
printMessage(McuTarget::tr("Warning for target %1: missing CMake Toolchain File expected at %2.")
.arg(McuSupportOptions::kitName(mcuTarget), cMakeToolchainFile.toUserOutput()), false);
}
}
const FilePath generatorsPath = FilePath::fromString(qulDir + "/lib/cmake/Qul/QulGenerators.cmake");
config.append(CMakeConfigItem("QUL_GENERATORS", config.append(CMakeConfigItem("QUL_GENERATORS",
(qulDir + "/lib/cmake/Qul/QulGenerators.cmake").toUtf8())); generatorsPath.toString().toUtf8()));
if (!generatorsPath.exists()) {
printMessage(McuTarget::tr("Warning for target %1: missing QulGenerators expected at %2.")
.arg(McuSupportOptions::kitName(mcuTarget), generatorsPath.toUserOutput()), false);
}
config.append(CMakeConfigItem("QUL_PLATFORM", config.append(CMakeConfigItem("QUL_PLATFORM",
mcuTarget->platform().name.toUtf8())); mcuTarget->platform().name.toUtf8()));
@@ -861,8 +889,12 @@ void McuSupportOptions::createAutomaticKits()
Sdk::targetsAndPackages(dir, &packages, &mcuTargets); Sdk::targetsAndPackages(dir, &packages, &mcuTargets);
for (auto target: qAsConst(mcuTargets)) for (auto target: qAsConst(mcuTargets))
if (target->isValid() && existingKits(target).isEmpty()) if (existingKits(target).isEmpty()) {
newKit(target, qtForMCUsPackage); if (target->isValid())
newKit(target, qtForMCUsPackage);
else
target->printPackageProblems();
}
qDeleteAll(packages); qDeleteAll(packages);
qDeleteAll(mcuTargets); qDeleteAll(mcuTargets);

View File

@@ -175,6 +175,7 @@ public:
void setColorDepth(int colorDepth); void setColorDepth(int colorDepth);
int colorDepth() const; int colorDepth() const;
bool isValid() const; bool isValid() const;
void printPackageProblems() const;
private: private:
const QVersionNumber m_qulVersion; const QVersionNumber m_qulVersion;

View File

@@ -567,7 +567,7 @@ void targetsAndPackages(const Utils::FilePath &dir, QVector<McuPackage *> *packa
const McuTargetDescription desc = parseDescriptionJson(file.readAll()); const McuTargetDescription desc = parseDescriptionJson(file.readAll());
if (QVersionNumber::fromString(desc.qulVersion) < McuSupportOptions::minimalQulVersion()) { if (QVersionNumber::fromString(desc.qulVersion) < McuSupportOptions::minimalQulVersion()) {
auto pth = Utils::FilePath::fromString(fileInfo.filePath()); auto pth = Utils::FilePath::fromString(fileInfo.filePath());
printMessage(QObject::tr("Skipped %1 - Unsupported version \"%2\" (should be >= %3)") printMessage(McuTarget::tr("Skipped %1 - Unsupported version \"%2\" (should be >= %3)")
.arg( .arg(
QDir::toNativeSeparators(pth.fileNameWithPathComponents(1)), QDir::toNativeSeparators(pth.fileNameWithPathComponents(1)),
desc.qulVersion, desc.qulVersion,
@@ -580,7 +580,7 @@ void targetsAndPackages(const Utils::FilePath &dir, QVector<McuPackage *> *packa
// No valid description means invalid SDK installation. // No valid description means invalid SDK installation.
if (descriptions.empty() && kitsPath(dir).exists()) { if (descriptions.empty() && kitsPath(dir).exists()) {
printMessage(QObject::tr("No valid kit descriptions found at %1.").arg(kitsPath(dir).toUserOutput()), true); printMessage(McuTarget::tr("No valid kit descriptions found at %1.").arg(kitsPath(dir).toUserOutput()), true);
return; return;
} }
@@ -611,6 +611,11 @@ void targetsAndPackages(const Utils::FilePath &dir, QVector<McuPackage *> *packa
desktopDescription.toolchainId = Utils::HostOsInfo::isWindowsHost() ? QString("msvc") : QString("gcc"); desktopDescription.toolchainId = Utils::HostOsInfo::isWindowsHost() ? QString("msvc") : QString("gcc");
desktopDescription.type = McuTargetDescription::TargetType::Desktop; desktopDescription.type = McuTargetDescription::TargetType::Desktop;
descriptions.prepend(desktopDescription); descriptions.prepend(desktopDescription);
} else {
if (dir.exists())
printMessage(McuTarget::tr("Skipped creating fallback desktop kit: Could not find %1.")
.arg(QDir::toNativeSeparators(desktopLib.fileNameWithPathComponents(1))),
false);
} }
} }
} }