FreeBSD The Power to Serve

涉及端口集合的实现问题

端口树未分支

src树不同,FreeBSD 端口树**未**分支。一直以来人们都认为,志愿者人数太少,无法处理将最新树中的数百次更改合并到各个分支的工作。

实际考虑因素

数千甚至数万个用户安装每天都会跟踪端口树,而不是依赖于随最新 FreeBSD 发行版一起提供的软件包。因此,端口框架中的任何致命错误都会立即影响所有这些站点。这就是为什么仅在获得 portmgr 批准后才允许提交到bsd.port.mk。除特殊情况外,只有在对自动化端口构建集群的专用区域运行回归测试后,才会授予此批准。通常,会同时测试十几个或更多对基础设施的提议更改,并且只有在整个端口树的构建成功后,portmgr 才会提交这些更改。

需要回归测试的更改

bsd.port.mk的更改并非唯一可能对树产生重大影响的提交。我们请求对任何此类更改也在集群上进行测试。以下是一些应在提交前进行测试的更改示例:

  • 对具有许多依赖项的软件包的更改,包括 X11 服务器、GNOME、KDE、gettext、autotools 等

  • 更改端口 Makefile 的“公认最佳实践”的更改,例如公共 make 变量(或Makevar)的定义或用法。(例如,合并各种 USE_*、WITH_* 等的实现)

  • 大型 repocopies(例如,当现有端口类别被划分时)

如果您不确定您提议的更改是否需要回归测试,请发送电子邮件至portmgr@FreeBSD.org

对发布周期的影响

当 FreeBSD 的新版本即将发布时,会要求提交者将重点从引入新的端口和功能转移到修复现有问题。在发布过程中的某个时间点,树会被标记,并且会为每个架构创建每个端口的软件包。由于端口数量众多以及较慢架构的速度,构建过程需要几天时间。

在理想情况下,这些将是发布 CD 上的软件包,并且从创建软件包到实际发布的时间只会足够长以对其进行测试,而不会更长。但是,在实践中,随着 QA 工作的继续,会在端口和源树中发现问题。但为了能够及时发布,只有某些端口更改将被合并回实际(标记的)树中,并且受影响的软件包将被重新构建。只有严重的安全性问题和许可证问题才会以这种方式更改其标记。

由于发布周期可能需要几周时间,因此在此时不允许对端口树进行任何提交是不现实的。在那个时候允许不受限制的提交的问题在于,它变得不可能只分离出关键更改,以便它们(且仅它们)可以更改其受影响的标记。不允许更改的术语是大规模更改

什么是大规模更改?

大规模更改是指会以非平凡的方式影响大量软件包的提交,以至于任何其他更改(例如修复单个安全问题)都意味着我们必须重建整个软件包集,这将延迟即将发布的版本,可能会延迟几周,因为更改集重叠。

这是一个不完整的列表。如果您不确定您提议的更改是否属于此类别,则**必须**在提交前询问 portmgr。

  • bsd.*.mk的任何提交

  • 任何其他通常需要回归测试的内容

  • 共享库版本升级

  • 涉及多个端口的 repocopies

以下内容不属于上述类别

  • 对叶子端口的提交(即没有其他端口依赖的端口)

  • 不会影响软件包的装饰性更改(例如对pkg_descr的更改)

  • 新端口

  • 单个端口的 repocopies

概括地说:基本测试是**此更改是否会影响其他软件包?**。


**上次修改时间:**2021 年 2 月 21 日,作者:Danilo G. Baio