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 中找到。
以下是一个嵌入式示例,而不是来自实际软件包
<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)
参考资料
[1] | https://bugs.gentoo.org/199788 |
[2] | https://gitweb.gentoo.org/archive/repo/gentoo-2.git/tree/sys-apps/hal/metadata.xml?id=37af07d2465e22f74394aa2ff2fd80698ac2d12b |
[3] | https://gitweb.gentoo.org/archive/repo/gentoo-2.git/tree/media-tv/mythtv/metadata.xml?id=37af07d2465e22f74394aa2ff2fd80698ac2d12b |
[4] | (1、2、3) https://devmanual.gentoolinux.cn/ebuild-writing/misc-files/metadata/index.html |
[5] | https://devmanual.gentoolinux.cn/ebuild-writing/file-format/index.html |
[6] | https://flameeyes.blog/2007/11/19/lets-actually-get-some-metadata/ |
[7] | https://cardoe.wordpress.com/2007/11/19/use-flag-metadata/ |
[8] | https://cardoe.wordpress.com/2007/11/23/metadataxml-updates-examples/ |
[9] | https://technicalpickles.com/posts/pidgin-idle-time |
向后兼容性
对现有的metadata.xml文件不需要进行任何更改。新标签中的信息不是强制性的。当前读取metadata.xml文件的工具如果编写不好可能会出现故障,而编写良好的工具应该忽略这些附加元素。能够处理新标签的工具应该优先使用它们的数据而不是use.desc和use.local.desc.
USE 标志仍然必须在use.desc或use.local.desc中定义。如果 USE 标志在这两者中都找不到use.desc或use.local.desc,则必须忽略metadata.xml中新标签内包含的信息,并且 QA 工具应发出警告,就像它们当前所做的那样。
一旦本 GLEP 获批,Gentoo 基础设施团队将努力从 CVS 中删除use.local.desc文件,它将为 rsync 自动生成。这将确保不会破坏非 CVS 树用户的后向兼容性。此时,QA 工具需要更新以验证metadata.xml的内容,其中包含将出现在use.local.desc.
版权
中的必要标签。这项工作是在 Creative Commons Attribution-ShareAlike 4.0 International License 许可下进行的。要查看此许可证的副本,请访问 https://creativecommons.org/licenses/by-sa/4.0/。