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を介して)。

など。

答え3

私が見つけることができる最良の情報は、ソースコードを見ることです。ここつまり、%dumpはすべてのマクロを繰り返し、次のように印刷します。rpmDumpMacroTable

MacroEntry構造体からメンバーを印刷します。level定義によるとここ- 「範囲レベル」です(マクロの入れ子に関連があるかもしれませんが、推測だけです)。

文書があまりないので、深い知識を持つ他の人がより多くの情報に回答/提供するのを待ちます。

関連情報