RPM: retornando valores da macro RPM incluída

Esta é uma pergunta de acompanhamento paraRPM: carregando o script bash no% pre scriptlet.

Estou tentando definir algumas funções utilitárias como macros, para que mais tarde eu possa%include eles ao criar outros pacotes RPM também. Digamos que eu quero ter uma funçãotestfunc() que eu quero usar para verificar se algo está presente no sistema de destino. Se a condição não for atendida, desejo interromper a execução do meu RPM%pre scriptlet.

Coisas que tentei:

Definindo uma função bash na macro

common.spec

%define importfunction() (testfunc() { echo "Cancelling installation!" ; exit 1 ; })

package.spec

%include SPECS/common.spec

...

%pre
%importfunction

testfunc

Saída de instalação do RPM

testfunc: comando não encontrado

Saindo diretamente da macro

common.spec

%define testfunc() (echo "Cancelling installation!" ; exit 1)

package.spec

%include SPECS/common.spec

...

%pre
%testfunc

echo "Installation still running :("

Saída de instalação do RPM

Cancelando a instalação!

Instalação ainda em execução :(

O problema é que o%pre O scriptlet não está saindo neste caso.

Questões

Como posso interromper a execução de%pre da minha macro?É possível retornar um valor da macro e armazená-los em uma variável durante%pre?

questionAnswers(1)

yourAnswerToTheQuestion