From e0088357d0bec224922a740cdb62fe30fe2872ef Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Thu, 25 Jan 2024 10:12:26 +0100 Subject: [PATCH] AppMan: Various small fixes * Always use the correct symbol when debugging * Fix the TargetInformation::isValid() function * Optimize RunConfigurationFactory::supportsBuildKey() Change-Id: I5f007d5c216ff9808adf9f8b878c9cbc9f47e3eb Reviewed-by: hjk --- .../appmanagerrunconfiguration.cpp | 6 ++---- .../qtapplicationmanager/appmanagerruncontrol.cpp | 13 ++++++------- .../appmanagertargetinformation.cpp | 3 ++- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/plugins/qtapplicationmanager/appmanagerrunconfiguration.cpp b/src/plugins/qtapplicationmanager/appmanagerrunconfiguration.cpp index f53e709c121..2a5e20fa48b 100644 --- a/src/plugins/qtapplicationmanager/appmanagerrunconfiguration.cpp +++ b/src/plugins/qtapplicationmanager/appmanagerrunconfiguration.cpp @@ -86,10 +86,8 @@ public: virtual bool supportsBuildKey(Target *target, const QString &key) const final { - QList tis = TargetInformation::readFromProject(target); - return Utils::anyOf(tis, [key](const TargetInformation &ti) { - return ti.buildKey == key; - }); + QList tis = TargetInformation::readFromProject(target, key); + return !tis.isEmpty(); } virtual bool filterTarget(const TargetInformation &ti) const diff --git a/src/plugins/qtapplicationmanager/appmanagerruncontrol.cpp b/src/plugins/qtapplicationmanager/appmanagerruncontrol.cpp index f89c26b8c0c..2bbb4e92897 100644 --- a/src/plugins/qtapplicationmanager/appmanagerruncontrol.cpp +++ b/src/plugins/qtapplicationmanager/appmanagerruncontrol.cpp @@ -193,7 +193,7 @@ private: class AppManagerDebugSupport final : public Debugger::DebuggerRunTool { private: - QString m_symbolFile; + FilePath m_symbolFile; AppManInferiorRunner *m_debuggee = nullptr; public: @@ -217,14 +217,13 @@ public: return; if (targetInformation.manifest.isQmlRuntime()) { - const Utils::FilePath dir = SysRootKitAspect::sysRoot(target->kit()); - // TODO: get real aspect from deploy configuration - QString amfolder = Constants::REMOTE_DEFAULT_BIN_PATH; - m_symbolFile = dir.toString() + amfolder + QDir::separator() + Constants::APPMAN_LAUNCHER_QML; + m_symbolFile = getToolFilePath(Constants::APPMAN_LAUNCHER_QML, + target->kit(), + DeviceKitAspect::device(target->kit())); } else if (targetInformation.manifest.isNativeRuntime()) { m_symbolFile = Utils::findOrDefault(target->buildSystem()->applicationTargets(), [&](const BuildTargetInfo &ti) { return ti.buildKey == targetInformation.manifest.code || ti.projectFilePath.toString() == targetInformation.manifest.code; - }).targetFilePath.toString(); + }).targetFilePath; } else { reportFailure(Tr::tr("Cannot debug: Only QML and native applications are supported.")); } @@ -249,7 +248,7 @@ private: setUseContinueInsteadOfRun(true); setContinueAfterAttach(true); setRemoteChannel(m_debuggee->gdbServer()); - setSymbolFile(FilePath::fromString(m_symbolFile)); + setSymbolFile(m_symbolFile); QtSupport::QtVersion *version = QtSupport::QtKitAspect::qtVersion(runControl()->kit()); if (version) { diff --git a/src/plugins/qtapplicationmanager/appmanagertargetinformation.cpp b/src/plugins/qtapplicationmanager/appmanagertargetinformation.cpp index 2cda41b0179..b44ddf50e76 100644 --- a/src/plugins/qtapplicationmanager/appmanagertargetinformation.cpp +++ b/src/plugins/qtapplicationmanager/appmanagertargetinformation.cpp @@ -48,6 +48,7 @@ QList TargetInformation::readFromProject(const Target *target const Utils::expected_str localFileContents = manifestFilePath.fileContents(); if (!localFileContents.has_value()) { qWarning() << "NOPE:" << localFileContents.error(); + continue; } auto createTargetInformation = [buildKey, manifestFilePath, cmakeTarget, packageFilePath, isBuiltinPackage, &result](const YAML::Node &document) { @@ -131,7 +132,7 @@ TargetInformation::TargetInformation(const Target *target) bool TargetInformation::isValid() const { - return !manifest.filePath.isEmpty() && packageFilePath.isFile(); + return !manifest.filePath.isEmpty() && manifest.filePath.isFile(); } } // namespace Internal