GLEP 70:添加发行版环境变量

作者 A. Wilcox <awilfox@adelielinux.org>
类型 标准跟踪
状态 已延期
版本 1
创建日期 2016-12-15
最后修改日期 2017-10-13
发布历史
GLEP 源码 glep-0070.rst

状态

超过 60 天没有进展。GLEP 编辑 Michał Górny 于 2017 年 10 月 13 日标记为已延期。

摘要

此 GLEP 概述了向未来的 EAPI 添加环境变量,以指定为其编译 ebuild 的发行版的名称,以及用于针对该发行版提交错误报告的 URL。此外,它还描述了将其更直接地添加到 Gentoo 软件包树中的路径。

动机

背景

Gentoo 软件包仓库不仅被数千用户使用,还被其他发行版和组织使用,例如 Funtoo、CoreOS 和 Google ChromeOS。从 Gentoo 基金会自己的章程来看,它自身描述如下:“Gentoo 是一个元发行版”。这允许用户自己创建自己的 Gentoo 版本。已经存在几个分支,包括 Exherbo、Funtoo、Sabayon、Galapagos、Vida 和 Calculate。Google 还为其 Chromebook 笔记本电脑维护了一个分支 ChromeOS。CoreOS 还使用 Gentoo 的仓库作为其发行版。此外,还有 Pentoo 和 Adélie 等二进制发行版提供了额外的价值,但严格来说,它们不是 Gentoo 的“分支”。

当前状况

目前,Gentoo 的分支和派生版本需要选择两个选项之一。它们可以原样使用树,这会导致软件包识别为针对 Gentoo 构建,并导致大多数基于 autoconf 的软件包(以及 KDE 中的一些 CMake 软件包)的错误报告 URL 指向 bugs.g.o。或者,他们可以分叉 Git 仓库,在发生冲突时需要手动合并,以及在上游发布新软件版本时需要额外的浪费工作。

缺陷

如果 Gentoo 的分支/派生版本没有足够的人力或资源来修改和维护所有提到 Gentoo 名称和错误 URL 的 ebuild(大约 496 个 ebuild 中大约有 1,656 个出现),那么这两个发行版都会受到影响。分支的用户会向 Gentoo 提交错误报告,而这些错误报告并非 Gentoo 中的错误。分支的开发者不会知道这些错误,也无法修复它们。Gentoo 的错误处理人员和开发人员将不得不浪费时间和资源来测试错误,发现它们甚至不是 Gentoo 的错误,并将其关闭为 WONTFIX 或 WORKSFORME。

如果他们选择分叉存储库并更改 ebuild 中的这些参数作为替代方案,那么这将使他们上游改进变得更加困难。Sabayon 在 GitHub 上专门为此创建了一个仓库,而 Adélie 则不断地将补丁应用到树上,因为它在不断发展。

解决方案目标

  • 通过避免任何衍生发行版与 Gentoo 相关的表象,来保护 Gentoo 的名称、商标和声誉。
  • 减少由于分支和派生版本导致的 bugs.g.o 上不适当的错误报告数量。
  • 促进 Gentoo 及其分支/派生版本之间更好的协作和改进共享。
  • 未来对错误报告 URL 的潜在更改虽然极不可能发生,但也更容易实现。

规范

以下变量将添加到 Gentoo 的基本配置文件中

  • ${DISTRO}:发行版的名称。这将在 Gentoo 上设置为“Gentoo”。
  • ${DISTRO_BUG_URL}:用于报告发行版上软件错误的 URL。这将在 Gentoo 上设置为“https://bugs.gentoo.org/”。

基本原理

通过替换传递给 ./configure、make 等的“Gentoo”的引用${DISTRO},像 Sabayon、Calculate 和 Adélie 这样的发行版将能够在软件包上将他们的名称标注为分发者。这将影响 LibreOffice、OpenRC、X.Org 和 KDE 等软件包,它们都在内部使用发行版的名称进行编译。它们使用它来获取错误信息,并且拥有正确发行版的名称将允许更适当的错误处理,并确保不会错误地将责任归咎于 Gentoo。这也确保在联系 Gentoo 之前,会搜索和联系分支或派生版本自己的邮件列表、论坛等。

通过替换传递给 ./configure 的“bugs.gentoo.org”的引用${DISTRO_BUG_URL},据信 Gentoo 项目将显着减少在处理错误提交的错误报告方面浪费的工作量,而这些错误报告是由分支和派生版本进行的更改引起的。

向后兼容性

由于这些变量将添加到基本配置文件中,因此对现有站点和安装应该没有影响。基本配置文件将在任何 ebuild 之前更改,因此不可能有${DISTRO}${DISTRO_BUG_URL}为空。

参考实现

参考实现目前可在 GitHub 上获取 [1]