construindo o pacote Debian com opções não padrão

7

Eu gostaria de construir o pacote Debian a partir do código-fonte, usando dpkg-buildpackage . Eu fiz o download da fonte do pacote:

apt-get -t wheezy-backports source gnucash

Dentro do arquivo gnucash-2.6.9/configure , vejo que existem opções que podem ser selecionadas / deselecionadas ao compilar o pacote.

O mantenedor Debian já tomou a decisão por mim. Mas se eu quiser desativar algumas opções, como devo fazer isso?

Digamos que eu queira compilar o pacote sem --enable-aqbanking . Esta opção aparece em vários arquivos de configuração:

$ grep -rl enable-aqbanking gnucash-2.6.9/
gnucash-2.6.9/packaging/gnucash.spec
gnucash-2.6.9/packaging/gnucash.spec.in
gnucash-2.6.9/configure.ac
gnucash-2.6.9/configure

Qual desses eu devo editar?

Qual é a maneira correta de fazer isso?

    
por Martin Vegter 11.10.2015 / 23:12

2 respostas

5

OK, dê uma olhada em gnucash-2.6.x/debian/rules .

Encontre a linha que diz override_dh_auto_configure: (linha 23 no meu caso) e adicione suas sobreposições abaixo dela.

No seu caso --enable-aqbanking já está lá (pelo menos para wheezy-backports), então simplesmente exclua-o.

Mais informações podem ser encontradas no página de manual .

Atualização: Além disso, às vezes, há uma variável no arquivo rules responsável pela transmissão de material personalizado para configure . Geralmente está no topo do arquivo e é chamado DEB_CONFIGURE_EXTRA_FLAGS .

    
por 11.10.2015 / 23:57
5

gnucash-2.6.9/packaging/gnucash.spec e gnucash-2.6.9/packaging/gnucash.spec.in não fazem parte da embalagem Debian. Eles são os próprios arquivos de especificação do projeto (o segundo é um modelo) para empacotar o gnucash no formato RPM.

gnucash-2.6.9/configure.ac também faz parte do upstream. Este é um arquivo Autoconf que é usado para gerar o gnucash-2.6.9/configure . Este arquivo autoconf.ac é usado pelo pacote Debian, mas não faz parte dele.

Todo o pacote do Debian está dentro do subdiretório debian/ .

O script de compilação atual (que é realmente apenas um Makefile) é debian/rules , então é só isso que você precisa se preocupar aqui. A maioria dos pacotes Debian usa o programa debhelper . Este pacote usa a variante dh mais recente e moderna, que faz parte de debhelper .

Resumidamente, a maneira como o "tradicional" debhelper funciona é oferecer um conjunto de comandos padrão que podem ser usados para construir o pacote, em vez de ter que fazer tudo do zero. dh é uma variante mais recente que possui padrões para cada stahdard debhelper step, que pode ser substituído, se necessário. Que liga até o que A.P. está dizendo. Nesse caso, o arquivo de regras está sobrescrevendo a etapa de configuração padrão. Conseqüentemente. você precisa modificar esse override_dh_auto_configure target para alterar o que a etapa de configuração faz. Aqui está o override_dh_auto_configure target:

override_dh_auto_configure:
        dh_auto_configure -- \
                --libdir=/usr/lib/$(DEB_HOST_MULTIARCH)/gnucash \
                --infodir=/noinst \
                --mandir=/noinst \
                --docdir=/noinst \
                --disable-static \
                --enable-dbi \
                --enable-ofx \
                --enable-aqbanking \
                --enable-locale-specific-tax \
                --enable-python

Portanto, isso está substituindo a meta dh_auto_configure debhelper . Confira man dh_auto_configure para mais informações sobre esse alvo.

Nesse caso, o padrão dh_auto_configure apenas executaria configure sem argumentos, ou seja, ./configure . A substituição apenas executa configure com os argumentos / opções fornecidos. Então, você precisa remover o argumento --enable-aqbanking / opção aqui.

Aqui estão alguns slides sobre o dh: O Debhelper do seu avô . Há outras informações na rede.

    
por 12.10.2015 / 00:24