From Fedora Project Wiki

审核目的

为了向 Fedora 项目添加一个新的软件包,该软件包必须接受来自官方的审核。审核的目的在于确保这个软件包符合 Fedora 项目的基本质量要求。审核通过并不意味着这个软件包非常好,但是能保证它本身符合我们对它的最低质量要求。

审核适用于提交的新软件包,和软件包更名,以及曾经被废弃的旧软件包想要重新回归软件仓库,和从早期 Fedora Core 软件源合并的软件包。

注意,一些新软件包可能不需要进行审核。有关条件列表,请参阅Packaging:ReviewGuidelines#Package_Review_Process。如果软件包已豁免,则贡献者可以直接跳至步骤 8:在软件包数据库中提交 请求。但是请注意,为了完成审核过程,仍然需要提交一个 bugzilla 票据;为此,请使用这个 bug,并按照其中的说明操作。

审核流程

审核过程有两种角色,贡献人员 和 审核者。本文档将会详细说明这两者。

贡献人员

贡献人员就是想要提交新软件包的人,又可以称之为提交者。如果想要成为一名贡献人员,您必须按照 成为 Fedora 软件包仓库维护人员 的步骤来做。

作为一名贡献人员,您需要做好一个符合 软件包命名规定打包规定 的软件包。有许多软件无法进入 Fedora,因此您需要检查软件包,确保其不包含 禁止的项目

如果您对您的 spec 文件很满意,那么可以开始审核流程,步骤如下:

  1. 上传您的 spec 文件和 SRPM 包,确保其可以被直接下载(建议为 HTTP(s),请不要使用需注册下载的网盘或指定下载方法的页面)。如果您没有地方上传您的 spec 和 SRPM,请使用 Copr: [1]
  2. 填写并提交一个 审核请求支持单截图见右
    File:PackageReviewProcess review.png
  3. 如果您尚未在 Fedora 中维护任何软件包,您需要标记您的审核请求的 Blocks 为 FE-NEEDSPONSOR(177841)并由您的保证人提供保证。详情请阅读 How to get sponsored into the packager group
  4. 等待某人审核您的软件包。在此过程中,fedora-review flag 标志是空白的,这意味着未分配审阅者。
    Review Swaps
    如果没有人对您的审核请求发表评论,您可能需要向 maillist 发送一个(例如devel)要求 “审核互换” 的提议。这个提议,以审查别人的包,换取他们审查你的包。这通常是一对一的,或者在私下沟通安排,这取决于软件的打包难度。
  5. 可能有来自非正式审查人的意见,他们可以将 NotReady 添加到 Whiteboard 字段,来指示审查请求尚未准备好。解决报告的问题后,请发布更新的 SPEC 和 SRPM 文件 URL,并将 NotReady 从白板中删除。您需要对评论做出回应,包括更新您的提交内容以解决问题;如果您没有,您的审查请求将被关闭。
  6. 审核者负责审核您的包。他们会将 fedora-review flag 设为 ?
  7. 审核人员将会审查您的包。您应该修复审核人标出的任何不规范的部分。一旦审核者对包满意,fedora-review 标志将被设为 +,表示包已通过审核。
  8. 此时,您需要为新批准的包创建 SCM admin request。如果您没有获得保证,将无法完成此步骤。
  9. 当此过程完毕时,您可以 导入您的包 至 SCM。
  10. 使用 "fedpkg clone <package-name>" 命令签出打包脚本,进行最终检查。
  11. 使用 "fedpkg build" 命令请求构建。
  12. 为其它分支重复之前的操作。
  13. 请求为所有分支的更新,如果需要,请使用 "fedpkg update" 或其它 Bodhi 允许的方式。
  14. 如果可能,添加您的软件包至 Upstream Release Monitoring
  15. 您还要保证审核支持单最终被关闭。在为请求的分支构建成功后,您可以自行关闭审核;或者如果您为某个 Fedora 版本构建了一个包,您可以要求 Bodhi 在完成构建后最终来关闭支持单。如果您自己关闭支持单,请使用 NEXTRELEASE 作为理由。

后期的软件包变动不再需要执行该审核流程,并且不应在 Bodhi 中创建的后续更新中引用审核凭证。

审核者

审核者就是审核软件包的人。

fedora-review 工具
fedora-review 是一个十分有用的自动化审核工具。只需要 dnf install fedora-review 然后阅读 man 手册了解用法即可。注意,这并不意味着全部,您仍然需要透彻了解打包规定
其他人的意见
软件包审核请求也鼓励其他人发表评论或其它内容。特别是有已经熟知 打包规定 的人正在寻求审核帮助的时候会留下相关请求的建议。

审核者应该是 packager 组 的成员。(如果贡献者还没有被担保,审查仍然可以继续完成,但他们需要找到担保人为其进行担保。)唯一例外是如果这个审核请求是某人的第一个软件包的话,那么审核者必须是该人的 担保人。了解某位贡献人员是否是担保人,请查阅 packager 组

  1. 搜索一个需要审核者的审核请求:http://fedoraproject.org/PackageReviewStatus/ (fedora-review 标识 为空,或 bug 被分配给 nobody@fedoraproject.org)
  2. 如果您在开始正式审核之前发现有问题需要解决,请留下问题的评论并设置 Whiteboard 为 NotReady 状态。这会提醒其他审核者,该审核正处于未准备好的状态。
  3. 如果您想要开始正式审核,请设置 fedora-review 标识为 ? 并分配该请求为您本人。
    退出审核
    如果您因为某些原因需要退出审核,请重置 fedora-review 标识为空 并且 重新分配 bug 的默认属主,即 nobody@fedoraproject.org
  4. 审核过程 ...
    • 检查 审核规定 中列出的 MUST 条目。
    • 检查 审核规定 中列出的 SHOULD 条目。
    • FedoraReview 工具 (即 fedora-review 软件包) 可以帮助您自动完成该过程。
  5. 请在每个审核中包含您的意见,为更好阅读,请您留下文字最好不要带附件。
  6. 审核结果:
    • ACCEPT - 如果您认为该软件包很好,请设置 fedora-review 标识为 +
      Time to sponsor?
      如果审核者想要成为贡献者的赞助者,则可以在 账户系统 中赞助贡献者
    • FAIL, LEGAL - 如果该软件包存在法律风险 (已知的内容或版权问题,侵害,商标纠纷),请关闭该审核请求并设置为 WONTFIX,并留下您的意见 (比如我们不发行 mp3 组件等等)。您还需要设置 fedora-review 标识为 -,并设置审核 block FE-Legal。
    • FAIL, OTHER - 如果该软件包存在其它问题,且此时并无简单的解决方案,则请您关闭该审核为 WONTFIX 并留下适当的意见 (比如我们不发行涉黄内容,或者是,嗨,这不是一个 spec 文件。更生动一点,嗨,这不是麦当劳的菜单么之类的内容)。设置 fedora-review 标识为 -
    • NEEDSWORK - 该审核请求需要进一步的完善,提交者和审核者需要协同工作以解决任何潜在的问题。将错误标记为 NEEDINFO,同时等待审核者对问题发表改进建议。
  7. 一旦一个软件包被标记为 fedora-review + (或 -),那么审核者的工作就已完成。您可以继续帮助新手完成 import/build/update 过程,直到他们的软件包成功进入 Fedora,并确保贡献者关闭包审查请求。

fedora-review 标识定义

fedora-review (BLANK) 需要审核
fedora-review ? 正在审核
fedora-review - 由于法律或其它问题,审核失败
fedora-review + 审核通过

特殊的 blocker 支持单

少量支持单会设置 "Blocks" 字段,以表明特殊的状态:

FE-NEEDSPONSOR 审核提交人需要保证人。注意审核过程只能有一位担保人。
FE-DEADREVIEW 由于提交者自行离开本次审核被关闭。用户可以在这里面找到一些有用的信息。
FE-Legal 该软件包被社区法律团队认定存在法律风险。

白板 (Whiteboard)

为了节省审核者的时间,http://fedoraproject.org/PackageReviewStatus/NEW.html 将自动隐藏不适合审核的请求。Whiteboard 字段被用于标记请求的各种状态,并根据状态显示或隐藏请求。

NotReady 软件包尚未开始审核。您可以新建一个审核支持单标记其为 NotReady,并继续协助直到可以被审核者审核。
BuildFails 软件包无法被构建。
AwaitingSubmitter 审核停止,需要提交人提供更多信息。
Trivial 软件包比较容易审查。请见下文。

"Trivial" 状态表明包不复杂,容易审查。包审查请求不应被标记为 trivial,除非符合以下情况:

  • 该软件包可以正常构建,并包括一个临时构建的链接。
  • 包请求没有任何 rpmlint 错误输出。
  • Spec 不包含现代 Fedora 中不必要的内容(例如 BuildRoot:,%clean,或 %defattr)。
  • Spec 未使用过多或复杂的宏。
  • Spec 仅使用直接从 Packaging:Scriptlets 页面获取的简单脚本。
  • 软件包不包含守护程序。
  • 软件包对安全的影响不是特别大。
  • 代码已经对许可问题进行了彻底检查。应解释许可证检查发现的异常问题。

简而言之,这种状态应该只用于标记那些非常容易审查的软件包请求,以使第一次审查包的审查者快速熟悉审查流程。

跟踪进度

软件包审核进度查询工具 提供多个与审核相关的报告和简单的审核搜索功能,比如软件包名,维护人,提交人等等。

著作权

该文档最初由 [TomCallaway|Tom 'spot' Callaway]] 于 2007 年创作,并已被许多其他贡献者修改。