1

我的目标是提出一个动态定义子包的规范文件。

目前,我在规范文件中定义了一个宏,以便我可以使用不同的参数调用它来生成不同的 %package 部分。例如。

%define create_pkg(n:)\ %package -n subpackage-%1\ 摘要:子包 %1\ ...\ %{nil}

%create_pkg sub1 %create_pkg sub2 %create_pkg sub3

但是,我只能在 specfile 中硬编码 create_pkg 宏的参数(sub1、sub2、sub3)。有没有办法让规范文件读取一个单独的文件,其中包含我想要的子包的名称?例如。subpackages.txt 将具有以下内容:

子 1 子 2 子 3

并且规范文件将读取 subpackages.txt 并使用从 txt 文件中读取的名称调用 %create_pkg 。

4

1 回答 1

3

回答我自己的问题。如果 rpm 内置了 lua 脚本(我认为这是构建时间选项),那么您可以在文件中使用 lua 脚本

1)在单独的文件中定义子包,例如。目标.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 指令。

于 2011-08-18T20:22:52.813 回答