我的目标是提出一个动态定义子包的规范文件。
目前,我在 spec 文件中定义了一个宏,这样我就可以用不同的参数调用它来生成不同的 %package 部分。例如。
%define create_pkg(n:)\ %package -n 子包-%1\ 摘要:子包 %1\ ...\ %{nil}
%create_pkg sub1 %create_pkg sub2 %create_pkg sub3
但是,我只能在 specfile 中硬编码 create_pkg 宏的参数(sub1、sub2、sub3)。有没有办法让 specfile 读取一个单独的文件,其中包含我想要的子包的名称?例如。 subpackages.txt 将具有以下内容:
子1 子2 子3
spec 文件将读取 subpackages.txt 并使用从 txt 文件中读取的名称调用 %create_pkg。
最佳答案
回答我自己的问题。如果 rpm 有 lua 脚本内置(我认为这是一个构建时间选项),那么你可以在文件中使用 lua 脚本
1) 在单独的文件中定义子包,例如。目标.txt:
%define build_targets sub1 sub2 sub3
2) 在规范文件的开头包含 targets.txt:
%include targets.txt
3) 使用 lua 脚本遍历序言部分中的目标:
%{lua:
for target in string.gmatch(rpm.expand("%{build_targets}"), "[%w_-]+")
do
print("%package "..target.."\n")
print("Summary: subpackage "..target.."\n")
...
print("%description "..target.."\n")
end
然后将动态生成子包的 %package 指令。
关于linux - 如何动态定义子包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7069511/