Где хранить версию VCS в RPM?
Мы используем Git в качестве наших VCS и RPM для упаковки. Я хотел бы сохранить хэш Git, из которого был собран пакет, но я не уверен в самом подходящем месте.
Есть несколько тегов, доступных для RPM, однако я не вижу ни одного для версии VCS (может быть, посмотрел на это?).
Я довольно осторожен с добавлением пользовательского тега, просто смотря на уровень 50000 футов.
Одним из решений, которое кажется довольно хакерским, было бы поместить хэш Git в поле описания. На данный момент мы не используем его ни для чего другого, но это просто ужасно.
Итак, что является наиболее подходящим местом для хранения версии VCS в RPM?
1 ответ
Fedora (и очень редко RHEL) размещает эту информацию в теге Release.
Например:
Name: mypackage
Version: 0.0.1
Release: 20140114git0abcdef
RPM на самом деле плохо документирован
VCS
тег.
Похоже, что у него нет никаких рекомендаций по его использованию, но он существует и поддерживается.
cat > test.spec <<'__END__'
Name: foo
Version: 1
Summary: foo
License: None
Release: 1
VCS: git:repo=my-repo:branch=my-branch:sha=1234deadbeef
%description
foo
__END__
$ rpmspec -q test.spec --qf "%{VCS}\n"
git:repo=my-repo:branch=my-branch:sha=1234deadbeef
Похоже, он ограничен одним токеном синтаксического анализа. Все еще полезно. Я не нашел никакой документации по четко определенному формату или структуре для него, и его принятие ограничено. В моей системе Fedora 32 я нашел два пакета, использующих его, с разными форматами:
$ rpm -qa --qf '%{Name} %{VCS}\n' |grep -v '(none)'
bcache-tools https://github.com/g2p/bcache-tools.git
libcue scm:git:https://github.com/lipnitsk/libcue.git
$
Честно говоря, очень жаль, что rpm не дает нам возможности вводить информацию о пользовательских тегах. Я хочу записать идентификатор сборки Jenkins и имя задания, хеш фиксации git и ветку или тег git, но на самом деле не хочу, чтобы они в журнале изменений.
Я могу сделать это в дебюте с
X-BS-foo
теги.
Вы можете увидеть список разрешенных тегов rpm с помощью
rpm --querytags
.
В
DISTURL
Тег, кажется, зарезервирован для другого использования, но может быть кандидатом.
Есть также
URL
; вы можете включить туда информацию SCM и иметь перенаправление, которое приведет URL-адрес в разумное место при посещении браузером.
Вы можете увидеть ссылки на "rpm5", поддерживающий настраиваемые теги. Похоже, это мертвый форк rpm, а не дистрибутив rpm.org, используемый в большинстве основных дистрибутивов.