GLEP 83:EAPI 弃用

作者 Ulrich Müller <ulm@gentoo.org>
类型 信息
状态 活跃
版本 2
创建 2022-06-30
最后修改 2024-09-08
发布历史 2022-07-11, 2022-07-31, 2024-08-30, 2024-09-01
GLEP 源代码 glep-0083.rst

摘要

介绍 EAPI 弃用和禁止的标准化标准。

动机

到目前为止,旧的 EAPI 是由 Gentoo 委员会以临时的方式弃用的。没有使用固定的标准,导致在批准更新的 EAPI 后,弃用时间不可预测。弃用和禁止的标准化标准将使 EAPI 的生命周期更可预测。

规范

弃用的 EAPI 对于用户系统升级路径不再是必需的。不建议使用它,pkgcheck 等工具将对此发出警告 [1].

被禁止的 EAPI 不得再使用,无论是用于新的 ebuild,还是用于更新现有的 ebuild [2].

当一个或多个更新的委员会批准的 EAPI 被 Portage 的稳定版本支持时,Gentoo 委员会将弃用 EAPI,即

  • 两个更新的 EAPI,其中一个至少支持 24 个月,或者
  • 一个更新的 EAPI,至少支持 48 个月。

Gentoo 委员会将在以下情况下禁止一个弃用的 EAPI

  • 距离其弃用已过去 24 个月,并且
  • 它被 Gentoo 存储库中不到 5% 的 ebuild 使用。

配置文件中使用的 EAPI 不在本文档的范围之内。

基本原理

EAPI 弃用的时间安排是不同因素之间权衡的结果。一方面,应该限制活动使用的 EAPI 的总数;这将防止新开发人员和贡献者的学习曲线变得过于陡峭,并将有助于减少代码复杂性,例如在 eclass 中。

另一方面,为一个稳定的系统提供了一年的升级路径,并且对超过一年已过时的系统提供有限的支持 [3]. 因此,在此期间仍然需要以前的 EAPI。在弃用之前选择了 24 个月的时间段,这超过了所需的最低时间,并且将允许项目支持更长的升级路径。

在弃用之前要求两个更新的 EAPI 将允许否则很少更新的 ebuild 立即升级到下一个 EAPI。但是,EAPI 的弃用不应该永远推迟,因此即使在这种情况下只存在一个更新的 EAPI,它也可以在更长的等待期(48 个月)之后生效。

弃用和禁止之间 24 个月的延迟将给 ebuild 作者足够的时间进行更新。这对于覆盖层和下游发行版尤其重要。禁止 EAPI 的另一个要求是,不到 5% 的 ebuild 使用该 EAPI。定义此要求是为了帮助保持 ebuild 更新的数量(以及请求它们的 bug 报告)易于管理,因为禁止的 EAPI 是更新 ebuild 的充分理由。

示例

根据此策略,EAPI 7 将在以下任一情况下被弃用

  • Portage 已经支持 EAPI 8 24 个月,并且支持另一个更晚的 EAPI(例如 EAPI 9),或者
  • Portage 已经支持 EAPI 8 48 个月。

Portage 自 2021-07-05 起开始支持 EAPI 8。第一个条件将在 2023-07-05 之后实现,一旦 EAPI 9 也得到支持。第二个条件将在 2025-07-05 之后实现。

向后兼容性

下表比较了实际的弃用和禁止日期 [4] 与此 GLEP 中提出的标准将产生的日期(“新日期”)。

EAPI Portage Gentoo 存储库 弃用 差异 禁止 差异
稳定 使用率 < 5 % 实际日期 新日期 实际日期 新日期
0 2005-12-26 2017-02-28 2014-02-25 2009-12-11 -50 2016-01-10 2017-02-28 +14
1 2007-12-11 2009-10-25 2013-04-09 2011-01-08 -27 2014-03-11 2013-01-08 -14
2 2009-01-08 2015-03-27 2013-04-09 2012-03-08 -13 2014-03-11 2015-03-27 +12
3 2010-03-08 2015-01-16 2014-02-25 2013-03-17 -11 2016-01-10 2015-03-17 -10
4 2011-03-17 2018-01-11 2015-10-11 2016-01-17 +3 2018-04-08 2018-01-17 -3
5 2012-12-11 2021-06-15 2018-05-13 2018-06-27 +1 2021-08-08 2021-06-15 -2
6 2016-01-17 2022-11-06 [*] 2021-07-11 2021-07-05 0   2023-07-05  
7 2018-06-27              
8 2021-07-05              
[*]外推日期,通过拟合 2021-01-01 到 2022-07-31 之间的数据获得,使用指数函数。

参考资料

[1]"EAPI 弃用",Gentoo 委员会会议摘要 2013-04-09 (https://projects.gentoo.org/council/meeting-logs/20130409-summary.txt)。注意:原始引述中说的是“Repoman”而不是“pkgcheck”。
[2]"禁止 EAPI 1 和 2 应该扩展到更新现有 ebuild 中的 EAPI",Gentoo 委员会会议摘要 2014-03-11 (https://projects.gentoo.org/council/meeting-logs/20140311-summary.txt)
[3]"旧系统的升级路径",Gentoo 委员会会议摘要 2009-11-09 (https://projects.gentoo.org/council/meeting-logs/20091109-summary.txt)
[4]Gentoo 软件包管理器规范项目 (https://wiki.gentoo.org/wiki/Project:Package_Manager_Specification#EAPI_life_cycle)