feat: merge qt5/qt6 dual build packaging - #149
Conversation
Implement Qt5/Qt6 dual-version debian packaging for dtksystemsettings, mirroring the dtkcore approach: - CMakeLists.txt: replace PROJECT_VERSION_MAJOR judgment with option(DTK5) (default ON); introduce DTK_VERSION/DTK_VERSION_MAJOR/ DTK_VERSION_MINOR/DTK_VERSION_PATCH variables. DTK5=ON builds Qt5 (VERSION_SUFFIX empty, DTK_VERSION=5.0.21), DTK5=OFF builds Qt6 (VERSION_SUFFIX=6, DTK_VERSION=6.0.21). - src/CMakeLists.txt: library VERSION/SOVERSION and compile definition use DTK_VERSION/DTK_VERSION_MAJOR instead of CMAKE_PROJECT_VERSION. - docs/CMakeLists.txt: DOXYGEN_PROJECT_NUMBER uses DTK_VERSION. - misc/dtksystemsettings.pc.in: Version: @DTK_VERSION@. - misc/qt_lib_dtksystemsettings.pri.in: use DTK_VERSION* variables. - VERSION: 5.6.20 -> 6.0.21. - debian/control: Build-Depends split by <!nodtk5>/<!nodtk6> build profiles; add 4 binary packages (libdtksystemsettings5, libdtksystemsettings-dev, libdtk6systemsettings, libdtk6systemsettings-dev) with Build-Profiles. - debian/rules: dual build directories (build5/build6) controlled by DEB_BUILD_PROFILES (nodtk5/nodtk6). - debian install files: precise per-version paths; add libdtk6systemsettings.install and libdtk6systemsettings-dev.install. Qt5 cmake config dir is DtkSystemSettings (VERSION_SUFFIX empty), Qt6 is Dtk6SystemSettings. - debian/changelog: add 6.0.21 entry.
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: 18202781743 The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
TAG Bot TAG: 6.6.21 |
|
CLA Assistant Lite bot: Deepin Packages Builder seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account. |
Reviewer's guide (collapsed on small PRs)Reviewer's GuideThe PR consolidates Qt5 and Qt6 packaging into one project by selecting the build variant through DTK5, propagating variant-specific version and installation metadata through CMake, and adding Debian profile-controlled single- or dual-build packaging with separate runtime and development packages. Flow diagram for DTK5-controlled Qt5 and Qt6 buildsflowchart LR
A[DTK5 option] -->|ON| B[Qt5 build]
A -->|OFF| C[Qt6 build]
B --> D[DTK_VERSION 5.0.21]
C --> E[DTK_VERSION 6.0.21]
D --> F[Qt5 library and install metadata]
E --> G[Qt6 library and install metadata]
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
deepin pr auto review🤖 AI 代码审查报告📊 总体评价
🔍 详细分析1. 语法逻辑 ✅评价: 优秀 ✅ 通过 潜在问题: 建议: CMake 构建逻辑正确:option(DTK5) 方案清晰,DTK_VERSION 变量推导正确(DTK5=ON 时 DTK_VERSION=5.6.21,DTK5=OFF 时 DTK_VERSION=6.6.21)。debian/rules 双构建目录逻辑正确,Build-Profile 条件判断准确。debian/changelog 版本格式符合规范。 2. 代码质量 ✅评价: 优秀 ✅ 通过 潜在问题: 建议: 代码结构清晰,遵循 dtkcore 双版本打包模式。debian install 文件从通配符(lib*.so)改为精确路径(libdtksystemsettings.so),提升了打包准确性。debian/control 中修复了 Depends 字段缺少空格的问题。构建依赖按 Build-Profile 正确拆分。 3. 代码性能 ✅评价: 优秀 ✅ 通过 潜在问题: 建议: 构建系统变更,对运行时性能无影响。双构建目录(build5/build6)方案正确,避免构建干扰。CMake 版本变量一次计算多次复用,效率合理。 4. 代码安全 🔒评价: 优秀 ✅ 通过
安全漏洞详情: 建议: 构建打包配置文件无安全风险:无硬编码密钥、无命令注入风险、无用户输入处理、无路径遍历风险。debian/rules 使用标准 debhelper 命令,Makefile 函数安全。 💡 改进建议代码示例# 本次变更为构建打包配置,代码质量优秀,无需修复示例
# CMakeLists.txt 中的 DTK5 option 方案参考:
option(DTK5 "Build DTK5." ON)
if(DTK5)
set(DTK_VERSION_MAJOR "5")
set(QT_VERSION_MAJOR "5")
set(VERSION_SUFFIX "")
else()
set(DTK_VERSION_MAJOR "6")
set(QT_VERSION_MAJOR "6")
set(VERSION_SUFFIX "6")
endif()本报告由 AI 代码审查工具自动生成 |
背景
dtk6systemsettings 仓库已归档,需要在 dtksystemsettings 一个仓库中同时打出 Qt5 和 Qt6 两个版本的包,用 CMake option 控制,参照 dtkcore 仓库的做法。
关联 issue: DDE-191
改动内容(11 个已有文件修改 + 2 个新增文件)
CMake 改造
CMakeLists.txt:将旧的PROJECT_VERSION_MAJOR判断块替换为option(DTK5 "Build DTK5." ON),引入DTK_VERSION/DTK_VERSION_MAJOR/DTK_VERSION_MINOR/DTK_VERSION_PATCH变量体系。DTK5=ON构建 Qt5(VERSION_SUFFIX为空,DTK_VERSION=5.0.21),DTK5=OFF构建 Qt6(VERSION_SUFFIX=6,DTK_VERSION=6.0.21)。src/CMakeLists.txt:库VERSION ${DTK_VERSION}/SOVERSION ${DTK_VERSION_MAJOR},target_compile_definitions改为VERSION=${DTK_VERSION}。docs/CMakeLists.txt:DOXYGEN_PROJECT_NUMBER ${DTK_VERSION}。模板文件
misc/dtksystemsettings.pc.in:Version: @DTK_VERSION@misc/qt_lib_dtksystemsettings.pri.in:@CMAKE_PROJECT_VERSION@→@DTK_VERSION@,@PROJECT_VERSION_MAJOR@→@DTK_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@→@DTK_VERSION_MINOR@,@PROJECT_VERSION_PATCH@→@DTK_VERSION_PATCH@版本文件
VERSION:5.6.20→6.0.21Debian 打包
debian/control:Source 段 Build-Depends 按<!nodtk5>/<!nodtk6>build profile 拆分;新增 4 个二进制包(libdtksystemsettings5、libdtksystemsettings-dev、libdtk6systemsettings、libdtk6systemsettings-dev),均带Build-Profiles。debian/rules:双构建目录build5/build6,通过DEB_BUILD_PROFILES(nodtk5/nodtk6)控制DTK5=ON/OFF。debian/changelog:新增dtksystemsettings (6.0.21) unstable; urgency=medium条目。debian/libdtksystemsettings5.install:usr/lib/*/libdtksystemsettings.so.*debian/libdtksystemsettings-dev.install:精确路径(libdtksystemsettings.so、usr/include/dtk5/*、dtksystemsettings.pc、cmake/DtkSystemSettings/*、qt5/doc/*.qch、qt5/*)debian/libdtk6systemsettings.install(新增):usr/lib/*/libdtk6systemsettings.so.*debian/libdtk6systemsettings-dev.install(新增):精确路径(libdtk6systemsettings.so、usr/include/dtk6/*、dtk6systemsettings.pc、cmake/Dtk6SystemSettings/*、qt6/doc/*.qch、qt6/*)版本号策略
6.0.215.0.21/56.0.21/6libdtksystemsettings5libdtk6systemsettings与 issue 描述的一处差异说明
Qt5 dev 包 install 文件中 cmake 配置目录使用
DtkSystemSettings而非 issue 描述中的Dtk5SystemSettings。原因是DTK5=ON时VERSION_SUFFIX为空,CMake 变量DtkSystemSettings = Dtk${VERSION_SUFFIX}SystemSettings = "DtkSystemSettings",实际安装路径就是cmake/DtkSystemSettings/。若写成Dtk5SystemSettings则无法匹配到任何已安装文件,dev 包会缺失 cmake 配置。此处按实际 CMake 行为修正(Qt6 侧Dtk6SystemSettings与描述一致)。验证场景
改造后需分别验证以下三种构建场景:
nodtk6(仅 Qt5)nodtk5(仅 Qt6)Summary by Sourcery
Enable building and packaging both Qt5 and Qt6 variants of DtkSystemSettings from one repository.
New Features:
Enhancements:
Chores: