Указание параметров для макросов

В настоящее время пишется файл *.spec для RPM. Как я могу динамически определять переменные, чтобы они использовали параметризованный макрос?

В соответствии с документацией по rpm я придумал следующее:

1     %define postgresql_macro() (?%1?%2?%3?%4?%5)
2     %define postgresql_ver %postgresql_macro 9 . 4 . 15
3     %define postgresql_ver_short %postgresql_macro 9 . 4 .
4     %define postgresql_ver_major 9 4

Строка 1 - это макрос, который принимает параметры.

Строка 2 должна определить postgresql_ver как 9.4.15,

Линия 3 должна определить postgresql_ver_short как 9.4,

Строка 4 должна определить postgresql_ver_major как 94,

Как я могу проверить это? Это правильно?

1 ответ

Решение

Во-первых, вы ошибаетесь. так должно быть:

%define postgresql_macro() %1%2%3%4%5                                                                                              
%define postgresql_ver %postgresql_macro 9 . 4 . 15
%define postgresql_ver_short %postgresql_macro 9 . 4 .
%define postgresql_ver_major 9 4

Вы можете проверить этот способ. Поместите в свой файл SPEC:

%prep
%define postgresql_macro() %1%2%3%4%5                                                                                              
%define postgresql_ver %postgresql_macro 9 . 4 . 15
%define postgresql_ver_short %postgresql_macro 9 . 4 .
%define postgresql_ver_major 9 4
echo %{postgresql_ver}

А теперь беги rpmbuild -bp your.spec, Это должно напечатать: 9.4.15

Другие вопросы по тегам