小智 18
最新版本的rpmbuild确实支持%include:
%include common.inc
Run Code Online (Sandbox Code Playgroud)
不幸的是,他们并不是很聪明 - 例如,没有已知的目录集,它会查找所请求的文件.但它存在并且变量被扩展,例如:
%include %{_topdir}/Common/common.inc
Run Code Online (Sandbox Code Playgroud)
RPM不支持包含.
我用m4宏处理器解决了类似的问题,或者只是连接了规范的部分(当"include"在开头时).
如果您只需要在构建时传递一些变量,而不包含其他文件中的多行,则可以运行
rpmbuild --define 'myvar SOMEVALUE' -bb myspec.spec
Run Code Online (Sandbox Code Playgroud)
你可以在规范中使用%myvar.
我最近遇到了同样的问题.我想定义多个相似的子包,但每个子包稍有不同(它们是特定于语言的RPM).我不想为每个子包重复相同的样板.
这是我所做的通用版本:
%define foo_spec() %{expand:%(cat '%{myloc}/main-foo.spec')}
%{foo_spec bar}
%{foo_spec baz}
%{foo_spec qux}
Run Code Online (Sandbox Code Playgroud)
使用%{expand}
确保%(cat)
仅在定义宏时执行一次.main-foo.spec文件的内容然后是三次,并且每次%1
在main-foo.spec文件中扩展到每个bar
,baz
并且qux
反过来允许我将其视为模板.如果您有需要(我没有),您可以轻松地将其扩展为多个参数.
归档时间: |
|
查看次数: |
11758 次 |
最近记录: |