GLEP 46:在 metadata.xml 中允许上游标签
作者 | Marcelo Goes <[email protected]>,Ciaran McCreesh <[email protected]>,Tiziano Müller <[email protected]> |
---|---|
类型 | 标准跟踪 |
状态 | 已替换 |
版本 | 1 |
创建日期 | 2005-12-26 |
最后修改日期 | 2023-09-15 |
发布历史 | 2005-12-26, 2006-03-05, 2008-01-21, 2008-03-25 |
被替换为 | 68 |
GLEP 源代码 | glep-0046.rst |
摘要
树metadata.xml文件目前用于指定软件包的维护者和描述信息。本 GLEP 提议对metadata.xml进行扩展,以允许存储有关上游的信息。
动机
开发人员和工具作者目前可以获得的上游相关数据的范围有限,仅限于DESCRIPTION和HOMEPAGE在 ebuild 中。
已经进行了几次尝试,试图创建工具来检查软件包的版本是否与 Freshmeat 相匹配,以确定是否需要对 ebuild 版本进行升级。目前,识别软件包的 Freshmeat 条目是一个猜测问题,无法可靠地实现自动化。
类似地,各种脚本可以检查软件包在专门的外部数据源中的状态。例如,其中一位作者有一个 shell 脚本 hack,它尝试确定是否需要通过检查关联的app-vim软件包进行升级,方法是检查相关的vim.org脚本页面。同样,将软件包与外部数据源条目关联起来并非特别直接。
使更多上游相关数据易于获取将带来其他好处
- 它将允许诸如软件包网站之类的系统为最终用户提供更多有用的信息。
- 它将减少开发人员尝试寻找如何联系上游所花费的时间。
- 它将为树清理者提供更多信息,以决定是否可以从树中删除软件包。
规范
metadata.dtd应允许在metadata.xml中使用 upstream 标签。在 upstream 标签中,开发人员应该能够添加与上游相关的信息。
本 GLEP 为upstream: maintainer, changelog, bugs-to, remote-id和doc定义了以下五个标签,这些标签都不是必需的。未来的 GLEP 可能扩展此功能 - 处理 metadata.xml 的工具应忽略无法识别的元素。
maintainer可以包含标签name和email,用于指示负责软件包上游维护的人员或组织。该标签可以出现多次。
该maintainer元素具有status属性,该属性的值可以是active或inactive。此属性不是必需的。如果缺少此属性,应解释为unknown.
该maintainer元素可以与顶层maintainer元素相同,在开发人员决定除了/代替原始上游之外还维护软件包的情况下。在这种情况下,应存在原始上游的maintainer条目。
name应包含一段文本,其中包含上游的名称,是必需的,并且只能出现一次。
email应包含一个电子邮件地址,格式为[email protected].
changelog应包含一个 URL,该 URL 指向可以找到上游变更日志的位置。该 URL 必须与版本无关,并且必须指向仅在相应软件包的新版本发布时更新的变更日志。(这也意味着在仅使用 VCS 快照的情况下,可以链接到自动更新的变更日志。)
doc应包含一个 URL,该 URL 指向可以找到上游文档的位置。该链接不得指向任何第三方文档,并且必须与版本无关。如果文档有多种语言版本,则可以使用lang属性,其遵循与longdescription.
bugs-to相同的规则应包含可以提交错误的地址,一个 URL 或一个以.
remote-idmailtoremote-id为前缀的电子邮件地址
该remote-id元素具有应指定一种软件包标识跟踪器类型,以及与该软件包相对应的标识。应使索引诸如其 Freshmeat ID 或其 CPAN 名称等信息变得更加容易。type属性,它是一个字符串,用于标识上游源的类型。例如,freshmeat,在这种情况下,元素内容应为 Freshmeat ID,或者vim.orgvim应指定一种软件包标识跟踪器类型,以及与该软件包相对应的标识。,在这种情况下,元素内容应为脚本标识符。本 GLEP 未指定的完整合法值列表 - 开发人员在使用新应指定一种软件包标识跟踪器类型,以及与该软件包相对应的标识。值之前,应向gentoo-dev或邮件列表发送电子邮件。有效标签列表应保存在.
metadata/dtd/remote-id-tags.dtdmetadata.xmlmetadata/dtd/metadata.dtd
<upstream> <maintainer status="inactive"> <name>Foo Bar</name> <email>[email protected]</email> </maintainer> <maintainer status="active"> <name>Foo Gentoo</name> <email>[email protected]</email> </maintainer> <changelog>http://foo.bar/changelog.txt</changelog> <doc lang="en">http://foo.bar/doc/index.html</doc> <doc lang="de">http://foo.bar/doc/index.de.html</doc> <bugs-to>https://bugs.foo.bar</bugs-to> <remote-id type="freshmeat">foobar</remote-id> <remote-id type="sourceforge">foobar</remote-id> </upstream>
向后兼容性
例如,metadata.xmlupstream 代码段可能如下所示metadata.xml现有
备注
文件无需进行任何更改。新标签中的信息不是必需的。目前读取
版权
文件的工具如果编写不当可能会出现故障;编写良好的工具应忽略这些额外的元素。