GLEP 56:在元数据中使用 USE 标志描述

作者 Doug Goldstein <[email protected]>
类型 标准跟踪
状态 已替换
版本 1
创建 2008-06-03
最后修改 2023-02-21
发布历史 2008-06-05, 2008-06-13
替换为 68
GLEP 源代码 glep-0056.rst

摘要

本 GLEP 建议为每个软件包的元数据添加每个软件包的 USE 标志描述。

动机

让 Gentoo 用户能够更好地识别 USE 标志如何影响他们对特定软件包的安装。例如,许多全局 USE 标志具有非常通用的描述,但没有关于它如何影响特定软件包的详细信息。具体来说,一个例子是 net-print/cups 和 'jpeg' USE 标志。这个标志是否意味着你不能打印 jpeg 文件?你可以直接打印它们?它的界面不会使用 jpeg 文件。

规范

本 GLEP 建议添加<use>XML 标签,它只允许出现在<pkgmetadata>XML 标签内。

  • <use>XML 标签内,<flag>XML 标签允许为每个 USE 标志出现一次,如'name'属性指定的,以下情况除外

    • The'restrict'atttribute 可以限制为软件包的特定版本,其中属性值必须是 Gentoo 开发者手册 [4] 中定义的有效 CPV。这遵循当前'restrict'属性在 metadata.xml 中的行为。
      • 例如,USE 标志可能对软件包版本 0.1 具有一个行为,而版本 0.2,USE 标志可能略有不同。
  • 每个<flag>XML 标签需要一个 'name' 属性,它是完整的 USE 标志名称,如它在 ebuild 的 IUSE 部分中显示的那样。

    • 例如:“video_cards_i810” 或 “alsa”
  • 每个<flag>XML 标签允许 0 个或多个嵌套的<pkg>XML 标签,其字符数据是 Gentoo 开发手册 - Ebuild 文件格式 [5] 中定义的有效 CP 或 CPV。

  • 每个<flag>XML 标签允许 0 个或多个嵌套的<cat>XML 标签,其字符数据是有效的类别。

  • The<use>XML 标签可以多次出现在<pkgmetadata>XML 标签内,当且仅当它包含不同的'lang'属性值。

    • Thelang属性遵循文档中lang属性在 Gentoo 开发者手册 [4] 中。

Gentoo 开发者手册 [4] 和 metadata.dtd 的文档可以在 Gentoo 的 Bugzilla [1] 错误 #199788 中找到。

以下是树中两个具体的例子,[2][3]

以下是一个嵌入式示例,而不是来自实际软件包

<use>
        <flag name='acpi'>Enables HAL to attempt to read from
        /proc/acpi/event, if unavailable, HAL will read events from
        <pkg>sys-power/acpid</pkg>. If you need multiple acpi readers,
        ensure acpid is in your default runlevel
        (rc-update add acpid default) along with HAL. This will also
        enable HAL to read Toshiba and IBM acpi events which do not
        get sent via /proc/acpi/event</flag>
        <flag name='spell'>Enables spell checking capability using
        dictionaries found in <cat>app-dict</cat></flag>
</use>

致谢

感谢以下人员对本 GLEP 的输入或与本 GLEP 相关的内容(即使他们可能不知道):Diego Pettenò (flameeyes)、Alec Warner (antarus)、Joshua Nichols (nichoj)、Steve Dibb (beandog) 和 Tiziano Müller (dev-zero)

向后兼容性

对现有的metadata.xml文件不需要进行任何更改。新标签中的信息不是强制性的。当前读取metadata.xml文件的工具如果编写不好可能会出现故障,而编写良好的工具应该忽略这些附加元素。能够处理新标签的工具应该优先使用它们的数据而不是use.descuse.local.desc.

USE 标志仍然必须在use.descuse.local.desc中定义。如果 USE 标志在这两者中都找不到use.descuse.local.desc,则必须忽略metadata.xml中新标签内包含的信息,并且 QA 工具应发出警告,就像它们当前所做的那样。

一旦本 GLEP 获批,Gentoo 基础设施团队将努力从 CVS 中删除use.local.desc文件,它将为 rsync 自动生成。这将确保不会破坏非 CVS 树用户的后向兼容性。此时,QA 工具需要更新以验证metadata.xml的内容,其中包含将出现在use.local.desc.