跳转到: 导航, 搜索

Rpm-packaging/ReviewGuidelines

目的

使用模板而非 SPEC 的主要目标是灵活性和统一性。模板采用 Jinja2 格式创建。
这意味着使用一种方式创建的模板,经过 renderspec 工具处理后,将适用于所有支持的 Linux 发行版(SUSE、Fedora、CentOS)。

工具集

openstack-macros - 子项目,允许添加或替换 SPEC 模板中使用的必需 RPM 宏。
pymod2pkg - 用于将 Python 源代码名称(即 PyPI 名称)转换为 Linux 包名称的项目。
renderspec - 主要工具,用于将 SPEC 模板转换为 SPEC 文件。 文档

分支工作流程

  • 当前工作

所有工作必须在特定项目的 master 分支中完成。

  • 回溯/Cherry-pick

在必要时,先前提议到 master 分支的更改可以 cherry-pick 到 stable 分支。

  • 回溯/cherry-pick 的情况
    • 引入一个新包,如果其元数据对于 master 和 stable 都是有效的
    • 运行时和构建时依赖项的数量没有差异
    • masterstable 之间的版本没有差异
    • 存在更改,这些更改正在修复特定包的 %install 或 %files 部分

其他情况下,应该将更新提议到需要更新的特定分支!

通用规则

Head

  • :

设置包的正确组是必需的。

  • Source0:

Source0 必须指向现有的 tarball 位置,即使 URL 是使用宏构造的。
示例

Group:      Development/Libraries
Source0:    https://pypi.python.org/packages/source/o/%{sname}/%{sname}-%{version}.tar.gz

文档

对于 *-doc 包,应指定一个额外的部分,其中描述了 doc 包的所有元数据。
BuildRequires: - 仅填充文档构建所需的项目。
在必要时,请使用 %bcond_with docs
示例

%if %{with docs}
%package doc
....
%endif

%if %{with docs}
%files doc
...
%endif

测试

有用但非强制性。所有单元测试指令必须设置在 %check 部分下。
所有测试所需的项目应在模板的顶部指定为 BuildRequires:
在必要时,请使用 %bcond_with test
示例

%if %{with test}
BuildRequires: required for test projects
....
%endif

%if %{with test}
%check
...
%endif

版本更新

在更新现有包的版本时,请始终在提交消息中添加以下行

Depends-On: <change ID>

其中 <change ID> 是 openstack/requirements 仓库中更新包版本的评审的更改 ID。通过这样做,我们可以确保在成为 upper-constraints.txt 文件的一部分之前,不会更新任何版本。

请参阅 https://review.openstack.org/393121 以获取示例。

其他重要事项!

在 SPEC 模板中,每个包的 %files 部分下

  • %doc 部分不应包含:HACKING*CONTRIBUTING*AUTHORS
  • 如果源代码中存在 LICENCE 文件,则应指定 %license 部分