GLEP 54:scm 包版本后缀
作者 | Piotr Jaroszyński <peper@gentoo.org> |
---|---|
类型 | 标准跟踪 |
状态 | 延迟 |
版本 | 1 |
创建时间 | 2007-12-09 |
上次修改时间 | 2014-01-23 |
发布历史 | 2007-12-09 |
GLEP 源代码 | glep-0054.rst |
状态
由 GLEP 编辑 creffett 标记为延迟,因为没有活动
摘要
这个 GLEP 提案添加一个新的特殊包版本后缀 -scm- 用于从源代码管理系统直接检出源代码的 ebuild。
动机
目前没有标准方法来识别 SCM ebuild。使用 9999 作为版本很常见,但它像其他任何 ebuild 一样被处理,因此 Portage 无法为具有此类版本的包提供任何额外的功能。另一种方法是在名称中添加一个带有 -cvs 后缀的单独包,但这迫使作者使用|| ( cat/pkg cat/pkg-cvs )依赖项。最接近此 GLEP 中提议的是cvs版本部分,但它的实现用途非常有限。它具有奇怪的比较规则,没有文档,很少使用(如果有的话),并且名称具有误导性。
包管理器识别 SCM ebuild 的可能性将使它们能够添加专门针对这些 ebuild 的功能。其中一项功能可以是每天或每周自动重新安装 SCM 包。此类功能的任何规范超出了此 GLEP 的范围。
规范
scm是一个特殊的后缀。它可以单独使用,也可以在任何其他有效的版本规范中使用,就在修订版出现的地方之前。就像修订版一样,它只能在版本规范中使用一次,例如
- cat/pkg-1.0_alpha0-scm
- cat/pkg-1.0_alpha-scm
- cat/pkg-1.0-scm-r3
- cat/pkg-1-scm
- cat/pkg-1-scm-r2
- cat/pkg-scm
这些包原子按升序排序(参见 版本比较)。
版本比较
添加 scm 后缀会导致版本比较发生变化
- 从左到右比较版本组件时,scm 组件比其他版本组件具有更高的优先级。因此pkg-1_alpha-r3 < pkg-1-scm,'scm' 大于 'alpha-r3'。
- 当前没有数字部分的后缀不再默认设置为零,如果它们后面跟着 scm 后缀。如果是这种情况,则数字部分被认为具有最大值。因此1_alpha2-scm < 1_alpha-scm,但仍然1_alpha == 1_alpha0。这种选择背后的原因是允许使用多个分支。例如,想象一个具有 alpha 分支和多个 scm 版本的包,如下所示alpha-scm, alpha2-scm, alpha3-scm等等。期望的结果是alpha-scm大于同一树的所有其他分支。
解析示例
- cat/pkg-scm > cat/pkg-1
- 从左到右解析时,第一个差异是scm和1. cat/pkg-scm获胜。
- cat/pkg-1-scm > cat/pkg-1.0-scm
- 从左到右解析时,第一个差异是scm和0. cat/pkg-1-scm获胜。
- cat/pkg-1_alpha-scm > cat/pkg-1_alpha1-scm
- 在第一个包版本中alpha没有数字部分,并且后面跟着一个scm后缀,因此它被认为具有最大值作为数字部分。从左到右解析时,第一个差异是alpha后缀的数字部分。以下产生的最大值scm后缀以1.
版本规范列表(按升序排列)
- 1
- 1.1-scm
- 1.2_alpha-scm
- 1.2_beta_p
- 1.2_beta_p0-scm
- 1.2_beta_p1-scm
- 1.2_beta_p-scm
- 1.2_beta1_p-scm
- 1.2_beta10
- 1.2_beta10_p1-scm
- 1.2_beta10-scm
- 1.2_beta-scm
- 1.2
- 1.2-scm
- 1.2-scm-r1
- 1-scm
- 10
- scm
- scm-r3
向后兼容性
2.1.2.12 之前的 Portage 版本(包含在 2007.0 中)不处理任意版本后缀,并且会在各种任务期间崩溃,使得 Portage 难以或无法使用。较新的版本会忽略它们,并显示警告。因此,在 gentoo-x86 树中使用scm后缀可能要等到 2008.0 版本或更高版本。
版权
本作品根据知识共享署名-相同方式共享 3.0 未本地化版本许可协议授权。要查看此许可协议的副本,请访问 https://creativecommons.org/licenses/by-sa/3.0/。