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

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

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

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

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

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

Итак, где лучше всего хранить версию VCS в RPM?

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, используемый в большинстве основных дистрибутивов.