runsisi's

technical notes

rpm spec

2019-02-01 runsisi#rpm

宏定义保护

类似 %if 0%{?suse_version} 这样的语法,前面的 0 的用法其实与 shell 中的 if [x$i = x ]; then ... fi 类似,就是为了避免变量 i 没定义时报错。

without

为 rpmbuild 增加 --without tcmalloc 选项:

%bcond_without tcmalloc

如果在 rpmbuild 时不指定,则默认增加 tcmalloc 支持。

with

为 rpmbuild 增加 --with tcmalloc 选项:

%bcond_with tcmalloc

如果在 rpmbuild 时不指定,则默认移除 tcmalloc 支持。

if/else/endif

在 spec 正文中可以以如下的方式使用条件构建:

%if %{with selinux}
...
%else
...
%endif

## 参考资料

Some tips on RPM conditional macros

https://backreference.org/2011/09/17/some-tips-on-rpm-conditional-macros/

Automatic Dependencies

http://ftp.rpm.org/max-rpm/s1-rpm-depend-auto-depend.html

Manual Dependencies

http://ftp.rpm.org/max-rpm/s1-rpm-depend-manual-dependencies.html

RPM Packaging Guide

https://rpm-packaging-guide.github.io/