Onde armazenar a versão do VCS no RPM?

Onde armazenar a versão do VCS no RPM?

Estamos usando Git como nosso VCS e RPMs para empacotamento. Gostaria de armazenar o hash do Git a partir do qual um pacote foi criado, mas não tenho certeza do local mais apropriado.

Existem váriosTagdisponível para um RPM, no entanto, não vejo nenhum para uma versão VCS (talvez tenha dado uma olhada?).

Estou bastante desconfiadoadicionando uma tag personalizada, apenas olhando para o nível de 50.000 pés.

Uma solução que parece bastante hackeada seria colocar o hash do Git nodescriçãocampo. Não estamos usando isso para mais nada neste momento, mas, uau, isso parece feio.

Então, qual é o local mais apropriado para armazenar uma versão do VCS em um RPM?

Responder1

Fedora (e muito raramente RHEL)coloque essas informações na tag Release.

Por exemplo:

Name:           mypackage
Version:        0.0.1
Release:        20140114git0abcdef

Responder2

Na verdade, o RPM tem uma tag mal documentada VCS.

Não parece ter nenhum tipo de orientação sobre seu uso, mas existe e é suportado.

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

Parece estar limitado a um único token de análise. Ainda útil. Não encontrei nenhuma documentação sobre um formato ou estrutura bem definida para ele, e sua adoção é limitada. No meu sistema Fedora 32 encontrei dois pacotes utilizando-o, com formatos diferentes:

$ 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
$

Francamente, é uma pena que o rpm não nos dê a capacidade de injetar informações de tags personalizadas. Quero registrar o ID de compilação e o nome do trabalho do Jenkins, o hash de commit do git e o branch ou tag do git, mas realmente não os quero no changelog.

Posso fazer isso em debs com X-BS-footags.


Você pode ver uma lista de tags rpm permitidas com rpm --querytags.

A DISTURLetiqueta parece serreservado para outro usomas poderia ser candidato.

Há também URL; você pode optar por incorporar informações do SCM lá e ter um redirecionamento que leve o URL para um local razoável se visitado por um navegador.


Você pode ver referências a "rpm5" com suporte para tags personalizadas. Este parece ser um fork morto do rpm, não a distribuição rpm.org usada na maioria das principais distros.

Responder3

Não creio que nada impeça você de armazenar todas as informações necessárias em um arquivo VERSION no diretório docs. O caminho para esse arquivo pode ser adicionado à tag VCS (embora eu não tenha testado isso).

informação relacionada