web-dev-qa-db-fra.com

Changer le répertoire par défaut de debhelper lors du packaging (.deb)

J'essaie de transformer Spamdyke 4.3.1 ( lien de téléchargement ) en paquet Debian (.deb). C'est un logiciel assez facile à construire, pas de dépendances folles, juste libssl-dev donc:

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

et puis une fois que vous décompressez les sources:

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

et d'habitude

make install

Comme je suis prêt à créer le paquet Debian avec ce logiciel, j'ai créé tous les fichiers nécessaires dans le dossier debian/ et modifié sa cible install dans spamdyke/Makefile.in en ajoutant ${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

Mais mon problème actuel est que l’archive de distribution conserve toutes les sources dans le dossier spamdyke/ au lieu du dossier racine, ce qui n’est pas ce que les outils dh_* s’attendent à résoudre automatiquement.

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

Malheureusement, je ne parviens pas à créer debian/rules correct pour que tous les emballages fonctionnent. J'aimerais garder mon debian/rules aussi simple que possible et, franchement, j'espérais que le pointer vers le dossier source spamdyke avec l'option --builddirectory serait suffisant au moins pour les étapes de configuration et de construction. Mon debian/rules actuel se présente comme suit:

#!/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

cependant debuild -b -us -uc produit un paquet .deb assez vide dans le résultat, Lintian se plaignant de 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.

J'espère qu'il manque quelque chose d'évident ici, mais pour le moment, je suis incapable de trouver quoi rechercher. Toute allusion appréciée. Merci d'avance.

4
Marcin Orlowski

Vous devez définir --sourcedirectory au lieu de _--builddirectory_ sur _dh $@_ appel, cela affectera tous les _dh_auto_*_. Vous pouvez donc supprimer ces substitutions.

_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.
_

Source: _man debhelper_

NOTE:

  • Évitez d'utiliser des chemins codés en dur

    Exemple _/usr/local_, utilisez à la place la variable _$prefix_. Les outils automatiques ont par défaut _/usr/local_, Debhelper réinitialisé à _/usr_ (il n'est pas nécessaire de le définir manuellement)

    Corrections suggérées:

    spamdyke/Makefile.in définit prefix et modifie la cible du lien symbolique.

    _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 supprimer le remplacement

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

    Référence: Normes de codage GN

3
user.dz