在创作 RPM 规范文件时,可以使用以下命令转储可用/定义的宏:
rpm --showrc
或者rpm --eval %dump
或者%dump
在规范文件本身中包含内置宏并检查 RPM 构建过程的输出(构建输出包含宏定义)。
无论哪种情况,某些行都以“-14”或“-11”为前缀。没有任何一个的行看起来是多行定义的主体。
此输出中的“-14”(或不太常见的“-11”)有何意义?更重要的是,我有兴趣知道这是在哪里记录的。
示例输出:
-14: __autoconf autoconf
-14: __autoheader autoheader
-14: __automake automake
-11= _target_cpu x86_64
-11= _target_os linux
参考:
答案1
RPM 宏有一个关联的级别,即递归深度。
当从递归扩展返回时,该级别的宏将自动取消定义。
级别 <= 0 的宏总是被定义的(在某种意义上是全局的)。
负值级别最初用于标记定义宏的位置:从 rpm 内部,或从读取配置文件。
实际上,RPM 中没有任何内容曾经使用或需要宏观级别。
但这就是“-14”的含义。
也不包括 --showrc 输出中从“:”到“=”的更改,它告诉定义或使用了哪些宏。
答案2
我在 rpm-ecosystem 邮件列表上询问。看: http://lists.rpm.org/pipermail/rpm-ecosystem/2017-March/000476.html
在“rpm --showrc”的情况下,这样的负数表示宏定义的“源”或“位置”:
-14 = -13 - 1:宏在宏文件中定义(例如/etc/rpm/macros.*)
-11:宏定义在rpmrc文件中(例如/usr/lib/rpm/rpmrc)
-8 = -7 - 1:宏在命令行上定义(例如通过 rpm -D "zzz 42" --showrc)
ETC。