gpt4 book ai didi

linux - 如何动态定义子包

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:00:17 26 4
gpt4 key购买 nike

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

目前,我在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com