如果我将全局定义为:
%{!?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
部分使用时?
答案 0 :(得分:1)
如果定义了测试宏,则条件宏扩展会扩展主体(即跟随冒号到匹配右大括号)(请注意,%{nil}的定义是有效定义)。
遇到时会立即扩展宏;在你的情况下,这是在执行%prep部分之前解析spec文件的时候。
可能令人困惑的是条件扩展定义了正在测试的相同宏名称。