Назад | Перейти на главную страницу

Создание файла rpm с добавлением уникального квалификатора

Я создаю RPM в среде непрерывной интеграции, и мне нужно различать последовательные сборки, но очевидно, что файл спецификации не изменяется при каждой проверке.

Заголовок файла спецификации содержит что-то вроде

Version:        1.0beta7
Release:        1.1

Я хотел бы переопределить его, чтобы к версии встроенного RPM было добавлено квалифицированное, например

Version:        1.0.beta7.2913

Предполагая, что квалификатор уже доступен в качестве переменной среды, какой самый простой способ добавить квалификатор к версии?

Довольно просто:

Version: 1.0.beta7.%(echo $ENVVAR)

Вы можете запустить любую команду внутри% (); просто убедитесь, что в выводе нет пробелов.

Лично я считаю, что лучше вставить его в переменную вверху:

%define buildnumber %(whatever command to get the build number)

Version: 1.0.beta7.%{buildnumber}

Или сделать это условным для устанавливаемой переменной:

Version: 1.0.beta7%{?buildnumber:.%{buildnumber}}

Это должно печатать только "." если установлен% buildnumber.

Проблема с этим подходом заключается в том, что такие спецификации требуют внешнего параметра (buildnumber) ... например, повторная сборка файла .src.rpm, скорее всего, даст другой номер версии, чем тот, который изначально использовался вашей системой CI.

Я думаю, что вам действительно нужно встроить исходную версию (например, номер версии подрывной версии) в номер версии RPM. Я генерирую спецификации RPM из шаблонов. Шаблон управляется исходным кодом, и процесс сборки генерирует из него настоящий файл спецификации, поэтому

Version: 1.0.beta7.svn@SVN_REV@ 

становится чем-то вроде

Version: 1.0.beta7.svn1234