Eventualmente é preciso testar, no arquivo de spec de um RPM, qual a distribuição na qual está sendo gerado o rpm, desta maneira tornando possível modificar, por exemplo, as dependências de um pacote de acordo com a distribuição. A solução não é das mais limpas, uma vez que é preciso criar uma macro para cada distribuição, mas funciona para os casos mais simples.

A solução que encontrei foi a seguinte:


1) Crie as macros para testar as distribuições desejas:

[code]%define is_suse %(test -e /etc/SuSE-release && echo 1 || echo 0)
%define is_fedora %(test -e /etc/fedora-release && echo 1 || echo 0)[/code]
Note que apenas é testada a existência dos arquivos de release das respectivas distribuições.

2) Teste as variáveis e defina os resultados:
[code] %if %is_suse
%define macro valor-01
%endif

%if %is_fedora
%define macro valor-01 valor-02 … valor-n
%endif[/code]

3) Pronto, agora você pode usar %macro aonde os valores forem diferentes, de acordo com %is_suse ou %is_fedora.

Podemos usar como exemplo a seção “Requires” da spec do RPM:

[code]%if %is_suse
%define dist_require /sbin/ldconfig
%endif

%if %is_fedora
%define dist_require /sbin/ldconfig initscripts
%endif

# outra seções

Requires: %{dist_require}
[/code]

A solução é extremamente simples, embora não seja muito prática caso seja necessário suportar diversas distribuições no mesmo spec.

Referência: spec file example.

Deixe uma resposta