2016-11-10 50 views
1

如果我已經在全球範圍定義爲宏:何時由條件rpm宏定義的宏得到擴展?

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

,並在%prep部分使用它,是它保證%{patch_file_list}將包含由mktemp -t返回的文件名和文件將包含補丁列表檔案?

%global patch_file_list ...定義的宏何時會擴展? 全球定義或在%prep部分中第一次使用?

回答

1

如果定義了測試宏(注意到%{nil}的定義是有效定義),則條件宏擴展擴展主體(即,在冒號後面匹配右大括號)。

遇到時會立即擴展宏;在你的情況下,這是在執行%prep部分之前解析spec文件的時候。

可能令人困惑的是,條件擴展定義了被測試的相同宏名稱。