【问题标题】:when does a macro defined by a conditional rpm macro get expanded?由条件 rpm 宏定义的宏何时扩展?
【发布时间】:2016-11-10 19:23:35
【问题描述】:

如果我有一个全局定义的宏:

%{!?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 部分首次使用时?

【问题讨论】:

    标签: rpm rpmbuild rpm-spec rhel5


    【解决方案1】:

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

    宏在遇到时立即展开;在您的情况下,这是在执行 %prep 部分之前解析规范文件的时间。

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

    【讨论】:

      猜你喜欢
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 2013-11-20
      • 2017-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多