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
    从左到右解析时,第一个差异是scm1. cat/pkg-scm获胜。
  • cat/pkg-1-scm > cat/pkg-1.0-scm
    从左到右解析时,第一个差异是scm0. 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 版本或更高版本。