O que significa “-14” em um despejo de macros de RPM?

4

É possível despejar as macros disponíveis / definidas ao criar um arquivo de especificação do RPM usando:

rpm --showrc ou rpm --eval %dump

ou incluindo a macro %dump incorporada no próprio arquivo de especificações e examinando a saída do processo de compilação do RPM (a saída da compilação contém definições de macro).

Em ambos os casos, algumas das linhas são prefixadas com "-14" ou "-11". As linhas sem parecem ser o corpo das definições de várias linhas.

Qual é o significado do "-14" (ou menos comum "-11") nesta saída? Mais importante, estou interessado em saber onde isso está documentado.

Exemplo de saída:

-14: __autoconf autoconf
-14: __autoheader   autoheader
-14: __automake automake
-11= _target_cpu    x86_64
-11= _target_os linux

Referências:

por Mark Edington 12.03.2017 / 02:36

3 respostas

5

As macros RPM têm um nível associado que é a profundidade de recursão.

Ao retornar de uma expansão recursiva, as macros nesse nível são automaticamente indefinidas.

Macros com um nível < = 0 são sempre definidas (em algum sentido global).

Níveis com valor negativo foram originalmente usados para marcar onde as macros foram definidas: a partir do rpm internamente ou da leitura de um arquivo de configuração.

Na prática, nada no RPM já usou ou precisou do nível macro.

Mas isso é o que significa "-14".

Não é também a mudança de ":" para "=" na saída --showrc, que informa quais macros foram definidas ou usadas.

    
por 18.03.2017 / 18:00
1

A melhor informação que consegui encontrar foi ver o código-fonte aqui , é que% dump está percorrendo todas as macros e as imprime usando rpmDumpMacroTable

A partir de MacroEntry struct, level member está sendo impresso. De acordo com a definição aqui - é 'Nível de Escopo' (provavelmente está relacionado ao aninhamento de macros, mas estou apenas especulando)

Eu esperaria por outros com conhecimento aprofundado para responder / fornecer mais informações, pois não há muita documentação

    
por 12.03.2017 / 04:28
1

Eu perguntei na lista de discussão do rpm-ecosystem. Vejo:    link

In case of "rpm --showrc" such a negative number represents the "source" or "location" of the macro definition:

-14 = -13 - 1: the macro is defined in a macro file (e.g. /etc/rpm/macros.*)

-11: the macro is defined in a rpmrc file (e.g. /usr/lib/rpm/rpmrc)

-8 = -7 - 1: the macro is defined on the cmdline (for instance via rpm -D "zzz 42" --showrc)

etc.

    
por 15.04.2017 / 09:03