由条件rpm宏定义的宏何时扩展?

时间:2016-11-10 19:23:35

标签: rpm rpmbuild rpm-spec rhel5

如果我将全局定义为:

%{!?patch_file_list: %global patch_file_list %(pfl=$(mktemp -t); ls %{_topdir}/SOURCES/*.patch | sort > $pfl; echo $pfl)}

并在%prep部分使用它,是否确保%{patch_file_list}将包含mktemp -t返回的文件的名称,该文件将包含补丁文件列表?< / p>

%global patch_file_list ...定义的宏何时会扩展? 全局定义或第一次在%prep部分使用时?

1 个答案:

答案 0 :(得分:1)

如果定义了测试宏,则条件宏扩展会扩展主体(即跟随冒号到匹配右大括号)(请注意,%{nil}的定义是有效定义)。

遇到时会立即扩展宏;在你的情况下,这是在执行%prep部分之前解析spec文件的时候。

可能令人困惑的是条件扩展定义了正在测试的相同宏名称。