我的目标是提出一个动态定义子包的spec文件。
目前,我在spec文件中定义了一个宏,以便我可以使用不同的参数调用它来生成不同的%package部分。例如
%定义create_pkg(n:)\ %package -n subpackage-%1 \ 摘要:子包%1 \ ... \ %{零}
%create_pkg sub1 %create_pkg sub2 %create_pkg sub3
但是,我只能对specfile中create_pkg宏的参数(sub1,sub2,sub3)进行硬编码。有没有办法让specfile读取一个单独的文件,其中包含我想要的子包的名称?例如。 subpackages.txt将具有以下内容:
SUB1 SUB2 SUB3
并且spec文件将读取subpackages.txt并使用从txt文件中读取的名称调用%create_pkg。
答案 0 :(得分:3)
回答我自己的问题。如果rpm有lua脚本内置(我认为这是一个构建时间选项),那么你可以在文件中使用lua脚本
1)在单独的文件中定义子包,例如。 targets.txt:
%define build_targets sub1 sub2 sub3
2)在spec文件的开头包含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指令。