涉及端口集合的实现问题
端口树未分支
与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