RPM 宏转储中的“-14”是什么意思

RPM 宏转储中的“-14”是什么意思

在创作 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。

答案3

我可以通过查看源代码找到最好的信息这里,就是说, %dump 正在遍历所有宏并使用打印它们rpmDumpMacroTable

正在从MacroEntry结构中打印成员。level根据定义这里- 它是“范围级别”(它可能与宏的嵌套有关,但我只是推测)

我会等待其他有深入知识的人来回答/提供更多信息,因为没有太多文档

相关内容