有条件地包含RPM中的文件

0xC*_*22L 3 rpmbuild rpm-spec

如何.rpm根据_foobar设置的定义有条件地包含文件?define _foobar将包含构建根目录中的绝对路径.文件在那里.

根据文档,我希望以下工作(注意:这里有更多的文件 %files节中,但这是要点):

%files
%if %{_foobar}
%{_foobar}
%endif
Run Code Online (Sandbox Code Playgroud)

然而,这给了我错误:

error: parse error in expression
error: /path/to/specfile:LINENO: parseExpressionBoolean returns -1
Run Code Online (Sandbox Code Playgroud)

其中/path/to/specfile:LINENO.spec文件的路径和行的行号%if.

0xC*_*22L 6

感谢这篇博文,我发现了一个适合我的版本:

%files
%if %{?_foobar:1}%{!?_foobar:0}
%{_foobar}
%endif
Run Code Online (Sandbox Code Playgroud)

这样做是为了扩展到%if 1如果设置了define,%if 0否则.

如果其他人有更好的解决方案,请回答.我当然更愿意接受别人对自己的回答.