Construire le même package source pour différentes dissortingbutions basées sur Debian

Je voudrais build plusieurs packages .deb de la même source pour différentes versions et dissortingbutions. Même si le code source est exactement le même, certains files du dossier debian ne peuvent pas être partagés en raison d'une dépendance et d'un nom de dissortingbution différents.

Donc, je veux faire plusieurs directorys 'debian' pour chaque version / dissortingbution et spécifier où chercher quand build le package. C'est possible?

Pour votre information, j'utilise la command debuild pour build le package .deb.

Utiliser différentes twigs est une approche, et je peux suggérer des modifications pour la réponse de @ mestia si cela semble approprié (mais lisez la suite …).

Une autre approche consiste à conserver différents files côte à côte; voir Solaar pour un exemple de cela.

Mais ces deux approches présentent un inconvénient important: elles ne conviennent pas aux packages Debian ou Ubuntu (ou probablement à d'autres dérivés). Si vous avez l'intention d'get votre package dans une dissortingbution un jour, vous devez l'empackageer de telle sorte que le même set de files produise le résultat correct dans les différentes dissortingbutions.

Pour un exemple de cela, jetez un oeil à l'emballage Debian pour Solaar (divulgation complète: j'ai fait l'emballage).

L'idée générale est de requestr à dpkg-vendor quelle est la dissortingbution; donc pour Solaar, qui a des dependencies différentes dans Debian et Ubuntu, debian/rules a

 derives_from_ubuntu := $(shell (dpkg-vendor --derives-from Ubuntu && echo "yes") || echo "no") 

et plus bas un rlocation pour dh_gencontrol pour remplir "substvars" selon le cas:

 override_dh_gencontrol: ifeq ($(derives_from_ubuntu),yes) dh_gencontrol -- '-Vsolaar:Desktop-Icon-Theme=gnome-icon-theme-full | oxygen-icon-theme-complete' -Vsolaar:Gnome-Icon-Theme=gnome-icon-theme-full else dh_gencontrol -- '-Vsolaar:Desktop-Icon-Theme=gnome-icon-theme | oxygen-icon-theme' -Vsolaar:Gnome-Icon-Theme=gnome-icon-theme endif 

Cela remplit les variables appropriées dans debian/control :

 Package: solaar Architecture: all Depends: ${misc:Depends}, ${debconf:Depends}, udev (>= 175), passwd | adduser, ${python:Depends}, python-pyudev (>= 0.13), python-gi (>= 3.2), gir1.2-gtk-3.0 (>= 3.4), ${solaar:Desktop-Icon-Theme} 

et

 Package: solaar-gnome3 Architecture: all Section: gnome Depends: ${misc:Depends}, solaar (= ${source:Version}), gir1.2-appindicator3-0.1, gnome-shell (>= 3.4) | unity (>= 5.10), ${solaar:Gnome-Icon-Theme} 

Vous pouvez utiliser le test dans debian/rules pour contrôler n'importe quelle action que vous pouvez faire dans un makefile, ce qui signifie que vous pouvez combiner cela avec des files alternatifs et, par exemple, lier les files appropriés juste avant leur utilisation dans la compilation du package.

Vous pouvez probablement utiliser git-buildpackage et conserver les différents directorys debian dans différentes twigs.