Skip to content

Conversation

@re2zero
Copy link
Contributor

@re2zero re2zero commented Jan 27, 2026

  • Separate debian/control files:
    • control: V25 (Qt6) with explicit qt6-base-dev, libdtk6*-dev deps
    • control.1: V20 (Qt5) with explicit qtbase5-dev, libdtk*-dev deps

This enables seamless building on both V25 (Qt6) and V20 (Qt5) systems without version-specific conditional dependencies.

Log: 分离Qt5/Qt6构建配置,支持V25/V20双版本
PMS: https://pms.uniontech.com/task-view-386321.html

- Separate debian/control files:
  * control: V25 (Qt6) with explicit qt6-base-dev, libdtk6*-dev deps
  * control.1: V20 (Qt5) with explicit qtbase5-dev, libdtk*-dev deps

This enables seamless building on both V25 (Qt6) and V20 (Qt5) systems
without version-specific conditional dependencies.

Log: 分离Qt5/Qt6构建配置,支持V25/V20双版本
PMS: https://pms.uniontech.com/task-view-386321.html
@deepin-ci-robot
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: re2zero

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@deepin-ci-robot
Copy link

deepin pr auto review

这段 git diff 显示了对 deepin-reader 项目打包配置文件的修改,主要是将构建依赖从“Qt5/Qt6 混合支持”策略调整为“仅支持 Qt6”。此外,还引入了一个新的文件 debian/control.1,它似乎保留了旧版本的 Qt5 依赖配置。

以下是对该变更的详细审查意见,涵盖语法逻辑、代码质量、代码性能和代码安全四个方面:

1. 语法逻辑与格式

  • 格式规范
    • debian/control 文件的缩进和空格处理符合 Debian 控制文件的规范。删除了行尾多余的空格(如 pandoc, 后),这是很好的改进。
    • debian/control 中删除了文件开头的空行,符合常见惯例。
  • 依赖逻辑变更
    • 移除架构限制:原配置中使用了 [!mipsel !mips64el] 来排除特定的 MIPS 架构。新配置移除了这些标记。这意味着新版本必须在所有架构上都安装 Qt6 包。如果目标发行版的 MIPS 架构仓库中尚未提供完整的 Qt6 包,或者 Qt6 在 MIPS 上存在未解决的 Bug,这将导致构建失败。
    • 移除备选方案:原配置使用了 | (OR) 逻辑来提供 Qt6 和 Qt5 的备选方案(例如 qt6-base-dev | qtbase5-dev)。新配置删除了 Qt5 选项,强制使用 Qt6。这是一个重大的逻辑变更,意味着软件不再向后兼容旧环境。

2. 代码质量

  • 依赖管理的清晰度
    • 正面:移除复杂的备选依赖(|)和架构限制([])使得依赖列表更加简洁、易读,明确了项目的构建环境要求。
    • 潜在问题:引入了 debian/control.1 文件。这个文件看起来像是旧版本的备份或者是用于特定环境的备选配置文件。
      • 如果这是一个临时备份,不应该提交到 Git 仓库,应该将其加入 .gitignore
      • 如果这是为了保留 Qt5 构建支持,那么文件名 control.1 不符合 Debian 打包规范,且 dpkg-buildpackage 默认不会读取它。如果需要支持多版本,应该使用 debian/control 配合 debian/rules 的逻辑,或者使用不同的源码分支。
  • 依赖完整性
    • debian/control 中,移除了 qt6-5compat-dev。如果项目代码中仍然使用了 Qt5 的某些模块(通过 Qt5Compat 模块在 Qt6 中提供),构建将会失败。需要确认代码是否已完全迁移到纯 Qt6 API。

3. 代码性能

  • 构建环境
    • 虽然这不是运行时代码,但依赖变更影响构建性能。Qt6 通常比 Qt5 引入了更多的元编程和更复杂的构建系统,在某些架构上(尤其是资源受限的架构如 mipsel),编译时间可能会增加,内存消耗也可能变大。移除对 mipsel 的特殊处理意味着开发者确信 Qt6 在这些架构上的性能是可接受的。

4. 代码安全

  • 运行时依赖
    • Depends 字段中,libqt6webenginecore6-bin 被移除了架构限制和备选方案。Qt WebEngine 是基于 Chromium 的,其安全更新至关重要。强制使用 Qt6 版本可以确保获得基于较新 Chromium 内核的安全补丁(前提是发行版的 Qt6 打包是及时更新的),这比旧的 Qt5 WebEngine 更安全。
  • 库版本一致性
    • 强制统一使用 Qt6 库(libdtk6*)避免了系统中同时混用 Qt5 和 Qt6 库可能带来的符号冲突或潜在的安全漏洞。

改进建议

  1. 处理 debian/control.1
    • 建议:如果这个文件不是构建过程必需的,请立即将其删除并添加到 .gitignore 中。保留它会造成混淆,让人不确定到底该用哪个文件来构建。
  2. 确认架构支持
    • 建议:在提交此变更前,请务必确认 Deepin 或目标发行版在所有支持的架构(包括 mipsel, mips64el, arm64, amd64 等)上都提供了完整的 qt6-*libdtk6-* 开发包。如果某些架构尚未就绪,此补丁将导致这些架构无法构建软件。
  3. 检查 Qt5Compat 依赖
    • 建议:审查源代码,确认是否完全移除了对 Qt5Compat (如 QTextCodec 等) 的依赖。如果代码中仍有 #include <QTextCodec> 或使用了 Qt5Compat 模块,需要在 Build-Depends 中加回 qt6-5compat-dev
  4. 更新 Description 或 Maintainer 字段
    • 虽然本次 Diff 未修改 Description,但既然进行了 Qt 版本的大升级,建议检查描述信息是否需要更新(例如注明基于 Qt6 构建)。Maintainer 字段保持不变是正确的。

总结
这是一次旨在现代化构建环境的变更,主要目的是将项目完全迁移到 Qt6。逻辑上是清晰的,格式也是规范的。主要的风险点在于移除了架构限制遗留的 control.1 文件。只要确保目标仓库的 Qt6 支持覆盖所有目标架构,并且源码已完全适配 Qt6,这是一次合理的重构。

@re2zero re2zero marked this pull request as draft January 27, 2026 05:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants