Alterando o diretório padrão para o debhelper durante o empacotamento (.deb)

4

Estou tentando transformar o Spamdyke 4.3.1 ( link de download ) no pacote Debian ( .deb ). Este é um software muito fácil de construir, sem dependências malucas, apenas libssl-dev assim:

apt-get install build-essential devscripts debhelper dh-make libssl-dev

e depois de descompactar as fontes:

cd spamdyke-4.3.1/spamdyke
./configure --exec_prefix=/usr 
make

e habitual

make install

Como estou disposto a disponibilizar o pacote Debian deste software, criei todos os arquivos necessários na pasta debian/ e modifiquei seu install target em spamdyke/Makefile.in adicionando ${DESTDIR} :

install: spamdyke
        cp spamdyke ${DESTDIR}/usr/local/bin/spamdyke-@PACKAGE_VERSION@
        rm -f ${DESTDIR}/usr/local/bin/spamdyke
        ln -s ${DESTDIR}/usr/local/bin/spamdyke-@PACKAGE_VERSION@ ${DESTDIR}/usr/local/bin/spamdyke

Mas o meu problema atual é que o arquivo de distribuição mantém todas as fontes na pasta spamdyke/ em vez da pasta raiz que não é o que dh_* tools espera fazer todo o trabalho pesado automaticamente:

drwxr-xr-x   4 vagrant vagrant  4096 Feb  3 10:57 debian
drwxr-xr-x   3 vagrant vagrant  4096 Jan 30 19:43 documentation
drwxr-xr-x   2 vagrant vagrant  4096 Feb  5 21:00 spamdyke
drwxr-xr-x 997 vagrant vagrant 77824 Jan 30 19:43 tests
drwxr-xr-x   2 vagrant vagrant  4096 Jan 20  2012 utils

Infelizmente, não é possível criar debian/rules correto para que toda a embalagem funcione. Eu adoraria manter meu debian/rules o mais simples possível e, francamente, eu esperava que apontar para a pasta spamdyke source com a opção --builddirectory seria suficiente, pelo menos, para as etapas de configuração e construção. Meu atual debian/rules agora é assim:

#!/usr/bin/make -f
export DH_VERBOSE = 1

%:
        dh $@  --builddirectory=spamdyke

override_dh_auto_configure:
        dh_auto_configure --builddirectory=spamdyke -- --exec_prefix=/usr

override_dh_auto_build:
        dh_auto_make --builddirectory=spamdyke

no entanto debuild -b -us -uc produz um pacote .deb muito vazio no resultado, com lintian reclamando sobre empty-binary-package :

dpkg-genchanges: binary-only upload (no source code included)
 dpkg-source --after-build spamdyke-4.3.1
dpkg-buildpackage: binary-only upload (no source included)
Now running lintian...
W: spamdyke: new-package-should-close-itp-bug
E: spamdyke: copyright-should-refer-to-common-license-file-for-gpl
W: spamdyke: empty-binary-package
Finished running lintian.

Espero que esteja faltando algo óbvio aqui, mas no momento não consigo descobrir o que procurar. Quaisquer sugestões apreciadas. Agradecemos antecipadamente.

    
por Marcin Orlowski 03.02.2017 / 12:03

1 resposta

4

Você precisa definir --sourcedirectory em vez de --builddirectory on dh $@ call. Isso afetará todos os dh_auto_* . Então você pode remover essas substituições.

BUILD SYSTEM OPTIONS
       The following command line options are supported by all of the 
       dh_auto_* debhelper programs. These programs support a variety 
       of build systems, and normally
       heuristically determine which to use, and how to use them. You
       can use these command line options to override the default 
       behavior.  Typically these are passed to
       dh(1), which then passes them to all the dh_auto_* programs.


   -Ddirectory, --sourcedirectory=directory
       Assume that the original package source tree is at the 
       specified directory rather than the top level directory of 
       the Debian source package tree.

   -B[directory], --builddirectory=[directory]
       Enable out of source building and use the specified directory
       as the build directory. If directory parameter is omitted, a 
       default build directory will be chosen.

Origem: man debhelper

NOTA:

  • Evite usar caminhos codificados

    Exemplo /usr/local , use em vez disso $prefix variable. autotools tem /usr/local como padrão, debhelper redefinido para /usr (não precisa ser definido manualmente)

    Correções sugeridas:

    spamdyke/Makefile.in defina prefix e altere o destino do link simbólico.

    prefix := @prefix@
    ...
    install: spamdyke
            mkdir -p ${DESTDIR}$(prefix)/bin/
            cp spamdyke ${DESTDIR}$(prefix)/bin/spamdyke-@PACKAGE_VERSION@
            rm -f ${DESTDIR}$(prefix)/bin/spamdyke
            ln -s $(prefix)/bin/spamdyke-@PACKAGE_VERSION@ ${DESTDIR}$(prefix)/bin/spamdyke
    

    debian/rules remover a substituição

    #!/usr/bin/make -f
    export DH_VERBOSE=1
    
    %:
            dh $@ --sourcedirectory=spamdyke
    

    Referência: Padrões de codificação do GNU

por user.dz 22.04.2017 / 14:52