Где хранить версию VCS в RPM?

Где хранить версию VCS в RPM?

Мы используем Git в качестве VCS и RPM для упаковки. Я бы хотел сохранить хэш Git, из которого был собран пакет, но не уверен, что это самое подходящее место.

Есть несколькотегидоступно для RPM, однако я не вижу ничего для версии VCS (может быть, проглядел ее?).

Я отношусь к этому с подозрениемдобавление пользовательского тега, просто глядя на уровень 50 000 футов.

Одним из решений, которое кажется довольно хакерским, было бы поместить хэш Git вописаниеполе. Мы не используем его ни для чего другого на данный момент, но, ух ты, это просто ужасно.

Так какое же место является наиболее подходящим для хранения версии VCS в RPM?

решение1

Fedora (и очень редко RHEL)поместите эту информацию в тег Release.

Например:

Name:           mypackage
Version:        0.0.1
Release:        20140114git0abcdef

решение2

На самом деле у 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, но на самом деле не хочу, чтобы они были в журнале изменений.

Я могу сделать это в Deb с X-BS-fooтегами.


Список разрешенных тегов RPM можно просмотреть с помощью rpm --querytags.

Тег DISTURL, похоже,зарезервировано для другого использованияно мог бы быть кандидатом.

Также URLвы можете встроить туда информацию SCM и настроить перенаправление, которое перенаправит URL-адрес в разумное место при посещении его браузером.


Вы можете увидеть ссылки на "rpm5", поддерживающий пользовательские теги. Это, похоже, мертвая ветка rpm, а не дистрибутив rpm.org, используемый в большинстве основных дистрибутивов.

решение3

Я не думаю, что что-то помешает вам хранить всю необходимую информацию в файле VERSION в каталоге docs. Путь к этому файлу можно добавить в тег VCS (хотя я это не проверял).

Связанный контент