Debian 中的 QML 依赖项跟踪 - 解密的思维

  • 2024 年 12 月 1 日,提及kdedebian
  • 在 Debian 中,跟踪库依赖工作可从符号使用解析到库并添加到依赖列表,此工作已持续数年。
  • KDE 社区如今创建越来越多基于 QML 的应用,QML 是解释型语言,缺失 QML 依赖仅在运行时出现问题。
  • 为此创建了dh_qmldeps,在构建时搜索 QML 依赖,若无法解析则失败。
  • 工作流程:包正常编译并拆分为二进制包,dh_qmldeps扫描包内容查找 QML 内容,用qmlimportscanner扫描找到的文件,输出依赖的 QML 模块列表,根据标准化文件路径询问 Debian 系统哪些包提供该文件路径,最终得到变量${qml6:Depends},可附加到扫描包的依赖列表,维护者可根据需要降低某些依赖为推荐或建议。
  • 源代码可在on salsa找到,使用文档在https://qt-kde-team.pages.debian.net/dh_qmldeps.html
  • 过去几周为每个创建 QML6 模块包的新包启用了dh_qmldeps,已解决首批 bug 且可用于更多包。
  • 通过qmlimportscanner扫描所有代码,发现几个不存在的 QML 模块:import QtQuick3DPrivate(qt6-multimedia 无私有 QML 模块[QTBUG-131753])、import QtQuickPrivate(qt6-graphs 无私有 QML 模块[QTBUG-131754])、import QtQuickTimeline(qt6-quicktimeline 正确 QML 名称为QtQuick.Timeline[QTBUG-131755])、import QtQuickControls2(qt6-webengine 看起来是移植 bug,QML6 模块名称应为QtQuick.Controls[QTBUG-131756])、import QtGraphicalEffects(kquickimageeditor 正确名称为 qt5compat.graphicaleffects,因是示例无人检查[kquickimageeditor!7])。
  • 已达到首个里程碑,能简单处理 QML 模块,但 QML 应用仍有改进空间,目前dh_qmldeps扫描应用源代码中的所有 QML 文件作为 workaround。
阅读 4
0 条评论