Testando a distribuição na spec de um RPM
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:
-
%define is_suse %(test -e /etc/SuSE-release && echo 1 || echo 0)
-
%define is_fedora %(test -e /etc/fedora-release && echo 1 || echo 0)
Note que apenas é testada a existência dos arquivos de release das respectivas distribuições.
2) Teste as variáveis e defina os resultados:
-
%if %is_suse
-
%define macro valor-01
-
%endif
-
-
%if %is_fedora
-
%define macro valor-01 valor-02 ... valor-n
-
%endif
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:
-
%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}
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.
Comentar