我的目标是提出一个动态定义子包的spec文件。
目前,我在spec文件中定义了一个宏,因此可以用不同的参数调用它来生成不同的%package部分。如。
%定义创建包(n:)\
%包-n子包-%1\
摘要:子包%1\
……\
%{无}
%创建包sub1
%创建包Sub2
%创建包Sub3
但是,我只能在specfile中硬编码create_pkg宏的参数(sub1、sub2、sub3)。有没有办法让specfile读取一个单独的文件,其中包含我想要的子包的名称?subpackages.txt将包含以下内容:
小精灵
第二款
第3款
spec文件将读取subpackages.txt并使用从txt文件读取的名称调用%create_pkg。

最佳答案

回答我自己的问题。如果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指令。

关于linux - 如何动态定义子包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7069511/

10-13 04:54