Debian看门人:60k林田问题自动修复

2020-08-22 18:09:17

Debian看门人是一个自动系统,它提交对Debian包中的(小)问题的修复,这些问题可以通过软件修复。它在12月初逐渐开始提出合并建议。发出的第一组更改对Git中维护的sid包运行了lintian-brush。这篇帖子是关于看门人进步的系列文章的一部分。

为了确定要处理哪些包,看门人查看UDD[1]中可用的归档中的lintian输出的导入。它将优先处理那些有修复程序的最严重问题的包。

一旦选择了包,它将克隆包存储库并对其运行lintian-brushon。林田笔刷提供了一个框架,用于将一组“修复器”应用于书包。它将在库的原始版本中运行一组“修复程序”中的每一个,并处理大部分繁重的工作。

每个修复程序只是一个可执行文件,它在包的干净签出中运行,并且可以在那里进行更改。大多数修复程序都是用Python或Shell编写的,但它们可以是任何语言。

如果修复程序以非零值退出,则会恢复更改,并认为修复程序已失败。

如果以零退出并进行了更改,则它应该将其更改的摘要写入标准输出。

如果修复程序不确定它所做的更改,它应该使用伪头报告标准输出。默认情况下,lintian-brush将丢弃任何不确定的更改,但是如果您在本地运行它,您仍然可以通过指定--uncerned来应用它们。

如果包不使用GBP DCH,则标准输出上的摘要消息将用于提交消息和(可能)ChangeLog消息。

让我们看一个例子。自从Debian Policy 4.0.1(于017年8月发布)以来,包优先级“Extra”已被弃用-请参阅Policy 2.5";Priority";。取而代之的是,大多数包应该使用“可选”优先级。

当软件包使用不推荐的“Extra”值作为“Priority”时,Lintian会发出警告--相关的标记是priority-extra-is-replaced-by-priority-optional.Lintian-brush有一个修复程序脚本,可以自动将“Extra”替换为“Optional”。

在安装了林田笔刷的系统上,修复程序的源代码位于/usr/share/lintian-brush/fixers/priority-extra-is-replaced-by-priority-optional.py,中,但下面是它的副本以供参考:

#!/usr/bin/python3 from debmuate.control从lintian_brush.fixer导入ControlEditor导入report_result,fix_lintian_tag使用ControlEditor()作为更新程序:用于更新程序中的para。段落:如果第。GET(";优先级";)==";额外";:para[";优先级";]=";可选";FIXED_LINTIAN_TAG(para,';priority-extra-is-replaced-by-priority-optional';)REPORT_RESULT(";将额外优先级更改为可选优先级。";)。

这个修复程序是用Python编写的,它使用demuate库在保留格式的同时轻松修改控制文件-如果无法保留格式,则退出。

所有当前的修复程序都带有测试,例如,对于这个特定的修复程序,测试可以在这里找到:https://salsa.debian.org/jelmer/lintian-brush/-/tree/master/tests/priority-extra-is-replaced-by-priority-optional.。

以下是当前可用的修复程序列表,以及每个修复程序成功合并/推送的数量: