RPM: возвращение значений из включенного макроса RPM

Это дополнительный вопрос кRPM: загрузка скрипта bash в скрипт% pre.

Я пытаюсь определить некоторые служебные функции как макросы, поэтому позже я могу%include их при сборке других пакетов RPM тоже. Допустим, я хочу иметь функциюtestfunc() который я хочу использовать, чтобы проверить, присутствует ли что-то в целевой системе. Если условие не выполнено, я хочу прервать выполнение моего RPM%pre скриптлет.

Вещи, которые я пробовал:

Определение функции bash в макросе

common.spec

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

package.spec

%include SPECS/common.spec

...

%pre
%importfunction

testfunc

RPM установить вывод

testfunc: команда не найдена

Выход прямо из макроса

common.spec

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

package.spec

%include SPECS/common.spec

...

%pre
%testfunc

echo "Installation still running :("

RPM установить вывод

Отмена установки!

Установка еще работает :(

Проблема в том, что%pre скриптлет не выходит в этом случае.

Вопросы

Как я могу нарушить исполнение%pre из моего макроса?Можно ли вернуть значение из макроса и сохранить его в переменной во время%pre?

Ответы на вопрос(1)

Ваш ответ на вопрос