Skip to content

Conversation

@18202781743
Copy link
Contributor

  1. Removed DTK5_VERSION and DTK6_VERSION calculation logic that
    transformed upstream version to DTK-specific versions
  2. Removed DTK5_MAJOR_MINOR extraction for DTK5 version
  3. Removed override_dh_makeshlibs target that set specific version
    dependencies for DTK5 and DTK6 shared libraries
  4. The change simplifies the build process by eliminating version
    transformation logic

Influence:

  1. Verify that DTK5 and DTK6 packages build successfully without version
    calculation
  2. Test that shared library dependencies are handled correctly by
    default dh_makeshlibs
  3. Ensure DTK5 and DTK6 packages maintain proper version compatibility
  4. Check that the build process works with both nodtk5 and nodtk6
    profiles
  5. Validate that libdtkgui.so symlinks are still created correctly in
    override_dh_link

chore: 移除DTK版本计算和makeshlibs覆盖

  1. 移除了将上游版本转换为DTK特定版本的DTK5_VERSION和DTK6_VERSION计算逻辑
  2. 移除了用于提取DTK5版本的DTK5_MAJOR_MINOR变量
  3. 移除了为DTK5和DTK6共享库设置特定版本依赖的override_dh_makeshlibs目标
  4. 该变更通过消除版本转换逻辑简化了构建过程

Influence:

  1. 验证DTK5和DTK6包在没有版本计算的情况下能成功构建
  2. 测试共享库依赖是否由默认的dh_makeshlibs正确处理
  3. 确保DTK5和DTK6包保持正确的版本兼容性
  4. 检查构建过程在使用nodtk5和nodtk6配置文件时是否正常工作
  5. 验证libdtkgui.so符号链接是否仍在override_dh_link中正确创建

1. Removed DTK5_VERSION and DTK6_VERSION calculation logic that
transformed upstream version to DTK-specific versions
2. Removed DTK5_MAJOR_MINOR extraction for DTK5 version
3. Removed override_dh_makeshlibs target that set specific version
dependencies for DTK5 and DTK6 shared libraries
4. The change simplifies the build process by eliminating version
transformation logic

Influence:
1. Verify that DTK5 and DTK6 packages build successfully without version
calculation
2. Test that shared library dependencies are handled correctly by
default dh_makeshlibs
3. Ensure DTK5 and DTK6 packages maintain proper version compatibility
4. Check that the build process works with both nodtk5 and nodtk6
profiles
5. Validate that libdtkgui.so symlinks are still created correctly in
override_dh_link

chore: 移除DTK版本计算和makeshlibs覆盖

1. 移除了将上游版本转换为DTK特定版本的DTK5_VERSION和DTK6_VERSION计算逻辑
2. 移除了用于提取DTK5版本的DTK5_MAJOR_MINOR变量
3. 移除了为DTK5和DTK6共享库设置特定版本依赖的override_dh_makeshlibs目标
4. 该变更通过消除版本转换逻辑简化了构建过程

Influence:
1. 验证DTK5和DTK6包在没有版本计算的情况下能成功构建
2. 测试共享库依赖是否由默认的dh_makeshlibs正确处理
3. 确保DTK5和DTK6包保持正确的版本兼容性
4. 检查构建过程在使用nodtk5和nodtk6配置文件时是否正常工作
5. 验证libdtkgui.so符号链接是否仍在override_dh_link中正确创建
@github-actions
Copy link
Contributor

  • 检测到debian目录文件有变更: debian/rules

@deepin-ci-robot
Copy link
Contributor

deepin pr auto review

这段代码是对 Debian 打包规则文件(debian/rules)的修改,主要删除了关于 DTK 版本号计算和 dh_makeshlibs 的自定义逻辑。以下是对这段 diff 的详细审查和改进建议:

1. 语法逻辑审查

  • 修改内容分析
    • 删除部分
      • 删除了使用 sedcut 计算 DTK5_VERSIONDTK6_VERSIONDTK5_MAJOR_MINOR 的逻辑。
      • 删除了 override_dh_makeshlibs 目标,该目标原本用于在生成共享库的 shlibs 文件时,手动指定依赖版本号(-V 参数)。
    • 保留部分
      • 保留了 override_dh_link,用于处理开发包中的符号链接。
  • 逻辑影响
    • 版本号计算:删除这些变量意味着后续代码不再使用它们。如果 debian/control 文件或其他文件(如 *.install*.links)没有引用这些变量,那么删除是安全的。
    • 依赖关系:删除 override_dh_makeshlibs 是最关键的变更。原本的逻辑是强制依赖包(如依赖 libdtkgui5 的程序)必须安装特定版本(>= 5.y.z)的库。删除后,dh_makeshlibs 将使用默认行为,通常生成的依赖关系较弱(例如仅依赖包名,或依赖当前 ABI 版本号)。
    • 潜在风险:如果 DTK 库在同一个次版本号(Minor Version)内不保证 ABI 兼容性,删除 -V 参数可能会导致依赖该库的程序在升级 DTK 库后运行崩溃或行为异常。

2. 代码质量审查

  • 代码风格:符合 debian/rules 的通用 Makefile 风格。
  • 可读性:删除了复杂的 shell 命令替换,使得 rules 文件头部更简洁,但这牺牲了显式的依赖版本控制逻辑。
  • 可维护性
    • 正面:减少了 rules 文件中的硬编码逻辑,将版本控制交给更底层的工具或符号文件管理。
    • 负面:如果原本是为了解决特定的 ABI 兼容性问题,删除这段代码后,维护者需要通过其他方式(如 debian/*.symbols 文件)来维护兼容性,这可能会增加维护 symbols 文件的负担。

3. 代码性能审查

  • 构建性能
    • 删除了 shell 命令调用(sed, cut, dpkg-architecture),这在理论上会极微小地减少 dpkg-buildpackage 初始化阶段的时间,但实际影响可以忽略不计。
    • dh_makeshlibs 的运行速度不受影响。

4. 代码安全审查

  • 安全性:此修改主要涉及打包元数据,不直接影响编译出的二进制代码的安全性。
  • 稳定性:如前所述,最大的安全风险在于 ABI 兼容性。如果库发生了不兼容的更改,而 shlibs 文件没有强制更新依赖,依赖旧库的程序可能会链接到新库上运行,导致段错误或数据损坏。

5. 综合改进意见

核心建议:确认 ABI 兼容性策略

这段 diff 的核心意图似乎是将版本依赖控制从 rules 文件中移除。这通常意味着项目转向使用 符号文件 来管理版本依赖,这是 Debian 打包中更推荐的做法。

建议如下:

  1. 确认是否使用符号文件

    • 请检查 debian/ 目录下是否存在 libdtkgui5.symbolslibdtk6gui6.symbols 文件。
    • 如果存在:删除 override_dh_makeshlibs 是正确的做法。dh_makeshlibs 会自动读取这些符号文件,并根据符号的变化生成准确的依赖关系(通常格式为 libdtkgui5 (= ${binary:Version}) 或类似)。这比手动指定 5.y.z 更精确。
    • 如果不存在强烈建议不要直接删除 override_dh_makeshlibs,或者立即创建对应的符号文件。否则,生成的依赖关系可能仅为 libdtkgui5,没有任何版本限制,这在库发生更新时极易导致运行时错误。
  2. 关于版本号变量的清理

    • 如果确认不再需要 DTK5_VERSION 等变量,删除它们是合理的清理工作,可以避免变量定义的冗余。
  3. 替代方案(如果必须保留手动控制)

    • 如果项目尚未准备好维护 symbols 文件,但确实需要删除这段逻辑(例如为了简化构建),建议在 debian/control 文件中,针对二进制包(如 libdtkgui5)的 Pre-DependsShlibs 字段中手动配置依赖关系,或者确保库的 SONAME 变化能正确反映版本变化。

总结:
这段代码修改在语法上是正确的,性能上无影响。其合理性完全取决于项目是否采用了 Debian 符号文件 机制来替代手动指定依赖版本。

  • 最佳实践:使用 dh_makeshlibs 配合 debian/*.symbols 文件。
  • 风险点:若删除了 override_dh_makeshlibs 且没有 symbols 文件,将导致包依赖关系过于宽松,存在运行时兼容性风险。

改进后的建议操作:
确保在 debian/rules 中保留默认的 dh_makeshlibs 调用(即删除 override),并在源码包中包含准确维护的 debian/libdtkgui5.symbols 文件。如果符号文件不存在,请运行 dpkg-gensymbols 生成初始版本并加入版本控制。

@deepin-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: 18202781743, asterwyx

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

@18202781743 18202781743 merged commit 5470724 into linuxdeepin:master Jan 21, 2026
20 of 22 checks passed
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.

3 participants