Provided by: debhelper_13.11.6ubuntu1_all
NOM
debhelper-compat-upgrade-checklist - Upgrade checklist for supported debhelper compat levels
SYNOPSIS
This document is an upgrade checklist of all the supported debhelper compat levels. It also lists all the support debhelper compat levels. Information about how to declare the compat level is in "COMPATIBILITY LEVELS" in debhelper(7). If you are upgrading from a (now) obsolete compat level, then please refer to debhelper-obsolete-compat(7).
DESCRIPTION
Upgrade checklist for supported compatibility levels Les niveaux de compatibilité sont les suivants : v15 Ce niveau de compatibilité est encore en développement ; à utiliser avec précaution. Changes from v14 are: - The dh_auto_install tool no longer defaults to --destdir=debian/package for source packages only producing a single binary. If this behaviour is wanted, the package should explicitly activate the single-binary dh addon (e.g., by adding dh-sequence-single-binary to Build-Depends) or pass --destdir to dh_auto_install. The rationale for this change is to avoid "surprises" when adding a second binary package later. Previously, debhelper would silently change behaviour often resulting in empty binary packages being uploaded to the archive by mistake. With the new behaviour, the single-binary addon will detect the mismatch and warn the maintainer of what is about to happen. v14 Ce niveau de compatibilité est encore en développement ; à utiliser avec précaution. Les changements par rapport à la version 13 sont : - The cmake buildsystem now passes -DCMAKE_BUILD_RPATH_USE_ORIGIN=ON to cmake(1) to avoid some reproducibility issues. - The tool dh_installsysusers is now included in the default sequence. This helper tool will process systemd sysusers files. - Use of the dh_gconf command in override and hook targets now causes an error. The dh_gconf command has been a no-op for years and was removed in debhelper 13.4. - The dh sequencer will warn if the single-binary addon is implicitly activated to warn maintainers of the pending compat 15 change in dh_auto_install. Maintainers are urged to either explicitly activate the single-binary addon to preserve the existing behaviour (e.g., by adding dh-sequence-single-binary to Build-Depends), or explicitly passing --destdir to dh_auto_install if used and then passing --without single-binary to dh (the latter to silence the warning). The rationale for this change is to avoid "surprises" when adding a second binary package later. Previously, debhelper would silently change behaviour often resulting in empty binary packages being uploaded to the archive by mistake. With the new behaviour, the single-binary addon will detect the mismatch and warn the maintainer of what is about to happen. - The dh_installalternatives tool will now be run after dh_link rather than after dh_installinitramfs in the default dh sequence. - The dh_installpam tool will now install PAM configuration files under /usr/lib/pam.d/package instead of /etc/pam.d/package. Please consider using the "rm_conffile" feature from dh_installdeb(1) to ensure the proper removal of previous PAM files. - The meson+ninja and cmake build systems now use meson install and cmake --install, respectively, instead of ninja install and make install in the dh_auto_install(1) call. Any override of dh_auto_install that passes extra parameters to the upstream build system should be reviewed. - The cmake build system passes -DBUILD_TESTING:BOOL=OFF to cmake if DEB_BUILD_OPTIONS contains nocheck thus disabling CTest. v13 C'est la version dont l'usage est recommandé. Les changements par rapport à la version 12 sont : - Le système de construction meson+ninja utilise maintenant meson test à la place de ninja test pour la suite de tests. Chaque réécriture de dh_auto_test qui passe des paramètres supplémentaires aux tests amont devrait être vérifiée, car meson test n'est pas compatible avec ninja test. - Tous les outils dans le style de debhelper basés sur la bibliothèque debhelper officielle (y compris dh et les outils officiels dh_*) n'acceptent plus les paramètres de commande abrégés. En même temps, dh optimise maintenant les appels aux outils redondants dh_* même quand ils passent de longues options de ligne de commande. - Les outils de debhelper liés à ELF (dh_dwz, dh_strip, dh_makeshlibs, dh_shlibdeps) sont désormais seulement exécutés pour les paquets dépendant de l'architecture par défaut (c'est-à-dire qu'ils sont exclus des cibles *-indep et sont passés avec l'option -a par défaut). Si vous avez besoin d'eux pour des cibles *-indep, vous pouvez ajouter un Build-Depends explicite à dh- sequence-elf-tools. - Le système de construction tiers gradle (issu du paquet gradle-debian-helper) exécute maintenant la suite de tests fournie par l'amont automatiquement. Pour supprimer ce type de comportement, surchargez dh_auto_test. - L'outil dh_installman s'interrompt maintenant s'il voit des définitions contradictoires d'une page de manuel. Cela se produit habituellement si le système de construction amont installe une version compressée et que le paquet liste une version non compressée de la page de manuel dans debian/paquet.manpages. La correction la plus simple est de supprimer la page de manuel de debian/paquet.manpages (en considérant que les deux versions sont identiques). - Les outils dh_auto_* réinitialisent désormais les variables d'environnement HOME et la variable commune XDG_*. Veuillez consulter la description des variables d'environnement dans "ENVIRONMENT" pour voir comment elles sont gérées. Cette fonctionnalité a changé entre debhelper 13 et debhelper 13.2. - La commande dh produira maintenant une erreur si une cible de réécriture ou d'accroche pour une commande obsolète est présente dans debian/rules (par exemple, override_dh_systemd_enable:). - La commande dh_missing aura l'option --fail-missing par défaut. Il est possible de revenir à un avertissement non fatal en passant explicitement l'option --list-missing comme dans le niveau de compatibilité 12. Si vous ne voulez pas non plus de l'avertissement, veuillez omettre l'appel à dh_missing. Si l'automate de commandes dh est utilisé, vous pouvez faire cela en insérant une cible de réécriture vide dans le fichier debian/rules du paquet correspondant. Comme dans l’exemple : # Désactive dh_missing override_dh_missing: - L'automate de commandes dh exécute maintenant dh_installtmpfiles dans la séquence par défaut. dh_installtmpfiles se charge de la gestion des fichiers de configuration de tmpfiles.d. La fonctionnalité apparentée dans dh_installsystemd est désormais désactivée. Notez que dh_installtmpfiles répond à debian/paquet.tmpfiles là où dh_installsystemd utilisait un nom sans le « s » final. - Beaucoup d'outils dh_* prennent en charge un développement de variables limité au moyen de la syntaxe ${toto}. Dans de nombreux cas, cela peut être utilisé pour référencer des chemins qui contiennent soit des espaces, soit des valeurs dpkg-architecture(1). Bien que cela puisse réduire le besoin de dh-exec(1) dans certains cas, ce n'est pas une alternative à dh-exec(1) en général. Si un filtrage, un renommage, etc. est nécessaire, le paquet aura encore besoin de dh-exec(1). Veuillez consulter "Substitutions dans les fichiers de configuration de debhelper" pour la syntaxe et les variables de substitution disponibles. Pour ceux qui écrivent des outils dh_*, le développement de substitution intervient comme élément des fonctions filearray et filedoublearray. - L'automate de commandes dh omettra toutes les cibles d'accroche et de substitution pour dh_auto_test, dh_dwz et dh_strip quand DEB_BUILD_OPTIONS liste les options nocheck ou nostrip correspondantes. Tout paquet comptant sur ces cibles pour être toujours exécuté devrait plutôt déplacer la logique correspondante de ces cibles. Par exemple, le code d’empaquetage non lié aux tests provenant de override_dh_auto_test devrait avoir été déplacé dans execute_after_dh_auto_build ou execute_before_dh_auto_install. - Le système de construction cmake passe désormais l'option -DCMAKE_SKIP_INSTALL_ALL_DEPENDENCY=ON à cmake(1) pour accélérer le processus d'installation automatique. Si pour une raison quelconque vous avez besoin de revenir au comportement antérieur, réécrivez le paramètre : dh_auto_configure -- -DCMAKE_SKIP_INSTALL_ALL_DEPENDENCY=OFF ... v12 Les changements par rapport à la version 11 sont : - dh_makeshlibs génère maintenant des fichiers shlibs avec des dépendances versionnées par défaut. Cela veut dire que -VUpstream-Version (ou -V) est maintenant le comportement par défaut. Si une dépendance non versionnée est requise, cela peut être obtenu en passant -VNone à la place. Veuillez tout de même consulter dh_makeshlibs(1) pour l'utilisation des dépendances non versionnées. - L'option -s (--same-arch) est supprimée. Veuillez utiliser -a (--arch) à la place. - Appeler dh_clean -k provoque maintenant une erreur à la place de l'avertissement d'obsolescence. - L'option --no-restart-on-upgrade de dh_installinit a été supprimée. Veuillez utiliser le nouveau nom --no-stop-on-upgrade. - Il y avait un bogue dans les fonctions doit (et équivalent) de Debian::Debhelper::Dh_Lib qui créait un shell dans une circonstance particulière. Ce bogue est maintenant supprimé et provoquera une erreur de type « commande non trouvée » dans les outils qui l'utilisaient. - Les options --list-missing et --fail-missing de dh_install ont été supprimées. Veuillez utiliser dh_missing et ses options correspondantes, qui peuvent aussi voir les fichiers installés par les autres outils. - L'outil dh_installinit n'installe plus de configuration pour upstart. À la place, il abandonnera la construction s'il trouve un ancien fichier de configuration upstart. Cela pour rappeler au mainteneur de s'assurer de correctement supprimer les anciens fichiers de configuration livrés dans les anciennes versions du paquet. - L'outil dh_installdeb valide basiquement quelques commandes dpkg-maintscript-helper(1) et renvoie une erreur si la commande semble incorrecte. - Le comportement par défaut de dh_missing est maintenant --list-missing. - dh_makeshlibs passera maintenant les bibliothèques à dpkg-gensymbols(1) si le binaire ELF a un SONAME (contenant « .so »). - dh_compress ne compresse plus les exemples (c'est-à-dire tout ce qui est installé dans </usr/share/doc/paquet/examples>). - La séquence standard de dh comprend maintenant dh_dwz et dh_installinitramfs par défaut. Cela rend les séquences dwz et installinitramfs obsolètes et elles échoueront avec une erreur. Si vous souhaitez sauter ces commandes, veuillez insérer des cibles de réécriture vides pour elles dans debian/rules (par exemple override_dh_dwz:). - Les systèmes de construction meson et autoconf ne positionnent plus explicitement la variable --libexecdir, et s'appuient donc sur le système de construction par défaut – qui devrait être /usr/libexec (selon la FHS 3.0, adoptée dans la Charte Debian 4.1.5). Si un paquet amont particulier n'utilise pas la bonne valeur par défaut, le paramètre peut souvent être passé manuellement avec dh_auto_configure(1). Par exemple : override_dh_auto_configure: dh_auto_configure -- --libexecdir=/usr/libexec Remarquez le -- avant le paramètre --libexecdir. - Retroactively removed in debhelper/13.5: The dh_installdeb tool would no longer installs the maintainer provided conffiles file as it was deemed unnecessary. However, the remove-on-upgrade from dpkg/1.20 made the file relevant again and dh_installdeb now installs it again in compat levels 12+. - dh_installsystemd ne s'appuie plus sur dh_installinit pour s'occuper des services systemd qui ont une alternative pour sysvinit. Les deux outils doivent maintenant être utilisés dans ce cas pour s'assurer que le service est démarré correctement, à la fois avec systemd et sysvinit. Si vous avez une réécriture pour dh_installinit (par exemple pour l'appeler avec --no-start), vous en aurez sûrement besoin d'une pour dh_installsystemd aussi. Ce changement amène dh_installinit à injecter un champ misc:Pre-Depends sur init-system-helpers (>= 1.54~). Veuillez vous assurer que le paquet utilise ${misc:Pre-Depends} dans son champ Pre-Depends avant de mettre à niveau vers la compat 12. - L'outil tiers dh_golang (du paquet dh-golang) utilise maintenant la variable DH_GOLANG_EXCLUDE pour l'installation des sources dans les paquets -dev, et plus uniquement lors de la construction. Veuillez positionner DH_GOLANG_EXCLUDES_ALL à faux pour obtenir le comportement précédent. Consultez Debian::Debhelper::Buildsystem::golang(3pm) pour plus de détails et des exemples. - dh_installsystemduser est maintenant inclus par défaut dans la séquence dh standard. - Le système de construction python-distutils est supprimé. Veuillez utiliser le système tiers pybuild à la place. v11 Ce mode est déconseillé. Le niveau de compatibilité 11 est déconseillé pour les nouveaux paquets parce qu'il souffre d'une interaction de fonctionnalités entre dh_installinit et dh_installsystemd faisant que les services ne fonctionnent pas correctement dans certains cas. Vous devriez envisager l'utilisation à la place des modes de compatibilité 10 ou 12. Plus de détails sur ce problème sont disponibles dans le bogue Debian n° 887904 et dans le message <https://lists.debian.org/debian-release/2019/04/msg01442.html>. Les changements par rapport à la version 10 sont : - dh_installinit n'installe plus de fichiers service ou tmpfile, ni ne crée de scripts de maintenance pour ces fichiers. Veuillez utiliser le nouvel assistant dh_installsystemd à la place. - Les outils dh_systemd_enable et dh_systemd_start ont été remplacés par un nouvel assistant dh_installsystemd. Pour la même raison, la séquence systemd de dh a aussi été retirée. Si vous avez besoin de désactiver dh_installsystemd, veuillez utiliser une cible de réécriture vide. Veuillez noter que dh_installsystemd a un comportement légèrement différent dans certains cas (par exemple lors de l'utilisation du paramètre --name). - dh_installdirs ne crée plus les répertoires debian/paquet sans qu'on le lui demande explicitement (ou il doit créer un sous-répertoire à l'intérieur). La grande majorité des paquets ne seront pas affectés par ce changement. - Le système de construction makefile passe maintenant les options INSTALL="install --strip-program=true" à make(1). Les systèmes dérivés (comme configure ou cmake) ne sont pas affectés par ce changement. - Le système de construction autoconf passe maintenant l'option --runstatedir=/run à ./configure. - Le système de construction cmake passe maintenant l'option -DCMAKE_INSTALL_RUNSTATEDIR=/run à cmake(1). - dh_installman préfère maintenant détecter le langage à partir du chemin plutôt que de l'extension. - dh_auto_install crée maintenant uniquement le répertoire de destination nécessaire. Auparavant, le répertoire de construction de chaque paquet était créé. Cela n'affectera pas les paquets qui se construisent uniquement avec debhelper, mais pourrait faire apparaître des bogues dans les commandes qui ne sont pas incluses avec debhelper. - Les outils dh_installdocs, dh_installexamples, dh_installinfo et dh_installman renvoient maintenant une erreur si leur configuration contient un motif qui ne correspond à rien ou qui référence un chemin qui n'existe pas. Les exceptions connues incluent la construction avec le profil nodoc, où les outils ci-dessus permettront un échec silencieux de la correspondance lorsque le motif est utilisé pour spécifier la documentation. - Les outils dh_installdocs, dh_installexamples, dh_installinfo et dh_installman acceptent maintenant le paramètre --sourcedir avec la même signification que dans dh_install. De plus, ils se rabattent sur debian/tmp comme dh_install. Note de migration : un bogue dans debhelper 11 jusqu'à 11.1.5 faisait que dh_installinfo ignorait --sourcedir de manière incorrecte. - Les systèmes de construction perl-makemaker et perl-build ne passent plus l'option -I. à Perl. Les paquets qui ont encore besoin de ce comportement peuvent l'émuler en utilisant la variable d'environnement PERL5LIB. Par exemple en ajoutant export PERL5LIB=. dans leur fichier debian/rules (ou équivalent). - La variable d'environnement PERL_USE_UNSAFE_INC n'est plus définie par dh, ni aucun des outils dh_auto_*. Cela avait été ajouté comme contournement temporaire, pour éviter les échecs de construction d’un grand nombre de paquets en même temps. De plus, cette fonction deviendra peut-être obsolète car l'amont a l'intention de retirer la prise en charge de la variable d'environnement PERL_USE_UNSAFE_INC. Lorsque ce sera le cas, cette variable sera aussi supprimée rétroactivement des niveaux de compatibilité existants. - L'assistant dh_makeshlibs termine maintenant sur une erreur si objdump renvoie une valeur de sortie différente de zéro lors de l'analyse d'un fichier. - Les outils dh_installdocs et dh_installexamples pourraient maintenant installer la plupart de la documentation dans un répertoire différent, pour satisfaire les recommandations de la Charte Debian §12.3 (depuis la version 3.9.7). Si un paquet source contient un seul paquet binaire dans debian/control, ou si aucun des paquets n'est un paquet -doc, alors ce changement n'a pas d'effet pour ce paquet source, et vous pouvez aller au changement suivant. Par défaut, ces outils essaient maintenant de déterminer un « paquet principal pour la documentation » (que l'on appellera doc-main-package) pour chaque paquet -doc. S'ils trouvent un tel doc-main-package, ils installeront la documentation sous /usr/share/doc/doc-main-package pour le paquet considéré. C'est-à-dire que le chemin peut changer, mais la documentation est toujours fournie par le paquet -doc. L'option --doc-main-package peut être utilisée si la détection automatique est insuffisante, ou pour réinitialiser le chemin à sa valeur précédente s'il y a une raison de diverger des recommandations de la Charte Debian. Quelques documents ne sont pas affectés par ce changement. En particulier le fichier copyright, les fichiers changelog, README.Debian, etc. Ces fichiers seront toujours installés sous /usr/share/doc/package. - Les outils dh_strip et dh_shlibdeps n'utilisent plus les motifs de noms de fichiers pour déterminer les fichiers à traiter. À la place, ils ouvrent le fichier et cherchent un en-tête ELF pour déterminer si ce fichier est un objet partagé ou un exécutable ELF. Ce changement peut forcer les outils à traiter plus de fichiers qu'avant. v10 Les changements par rapport à la version 9 sont : - dh_installinit n'installe plus de fichier nommé debian/<paquet> comme script d'initialisation. - dh_installdocs renverra une erreur s'il détecte des liens créés avec --link-doc entre des paquets de l'architecture « all » et non-« all » car cela casse les binNMUs (envois de binaires par quelqu'un d'autre que le responsable). - dh_installdeb n'installe plus de fichier debian/<paquet>.shlibs fourni par le responsable du paquet. Cela est maintenant effectué par dh_makeshlibs. - dh_installwm refuse de créer un paquet cassé si aucune page de manuel ne peut être trouvée (requis pour l'inscription de l'alternative x-window-manager). - Debhelper active par défaut la parallélisation pour tous les systèmes de construction qui le gèrent. Cela peut être désactivé en utilisant l'option --no-parallel ou en passant la valeur 1 à l'option --max-parallel. - La commande dh n'acceptera aucun des paramètres obsolètes de « manual sequence control » (--before, --after, etc.). Veuillez utiliser les cibles de réécritures à la place. Application rétroactive aux niveaux de compatibilité antérieurs : dh n'accepte plus aucun de ces paramètres depuis debhelper 12.4. - La commande dh n'utilisera plus les fichiers journaux pour enregistrer quelles commandes ont été exécutées. La commande dh se souvient toujours si la séquence « build » a été effectuée et l'omet si c'est le cas. Les principales conséquences de cela sont : - Il est maintenant plus facile de déboguer les séquences install et binary parce qu'elles peuvent maintenant être facilement re-exécutées (sans avoir à refaire un cycle complet de « clean & rebuild ») - La principale précaution est que dh_* enregistre uniquement ce qui s'est passé dans une unique cible de réécriture. Lorsque tous les appels à une commande dh_cmd donnée arrivent dans la même cible de réécriture, tout fonctionnera comme avant. Exemple de ce qui pourrait mal se passer : override_dh_toto: dh_toto -pmon_paquet override_dh_titi: dh_titi dh_toto --remaining Dans ce cas, l'appel à dh_foo --remaining inclura aussi mon_paquet, car dh_foo -pmon_paquet a été exécuté dans une cible de réécriture différente. Ce problème n'est pas limité à --remaining et concerne aussi -a, -i, etc. - À présent, la commande dh_installdeb échappe les caractères du shell dans les lignes du fichier de config maintscript. C'était l'intention originale mais cela n'a jamais fonctionné correctement et les paquets ont commencé à compter sur l'échappement incomplet (p. ex. en encadrant les noms de fichiers de guillemets). - La commande dh_installinit utilise maintenant --restart-after-upgrade par défaut. Les paquets nécessitant le comportement précédent devraient utiliser l'option --no-restart-after-upgrade. - La séquence autoreconf est maintenant activée par défaut. Veuillez passer l'option --without autoreconf à dh si cela n'est pas voulu pour certains paquets. - La séquence systemd est maintenant activée par défaut. Veuillez passer l'option --without systemd à dh si cela n'est pas voulu pour certains paquets. - Supprimé rétroactivement : dh ne crée plus le répertoire de construction du paquet lors de l'omission des commandes de debhelper en cours. Cela n'affectera pas les paquets qui se construisent uniquement avec debhelper, mais pourrait faire apparaître des bogues dans les commandes qui ne sont pas incluses avec debhelper. Cette fonctionnalité de compatibilité avait un bogue depuis sa création dans debhelper/9.20130516, qui la faisait échouer en compat 9 et précédent. Comme il n'y a eu aucun rapport de problème causé par ce bogue en 5 ans, cela a été supprimé plutôt que corrigé. v9 Les changements par rapport à la version 8 sont : - Prise en charge multiarchitecture. En particulier, dh_auto_configure passe les répertoires multiarchitectures à autoconf dans --libdir et --libexecdir. - dh connaît les dépendances classiques entre les cibles de debian/rules. Donc « dh binary » exécutera toutes les cibles build, build-arch, build-indep, install, etc., présentes dans le fichier rules. Il n'est pas nécessaire de définir une cible binary avec des dépendances explicites sur les autres cibles. - dh_strip compresse les fichiers de symboles de mise au point pour réduire la taille d'installation des paquets -dbg. - dh_auto_configure n'inclut pas le nom du paquet source dans --libexecdir en utilisant autoconf. - dh n'active pas --with=python-support par défaut. (Obsolète puisque l'outil dh_pysupport a été retiré de Debian Stretch. Depuis debhelper 10.3, dh n'active plus cette séquence quel que soit le niveau de compatibilité) - Tous les programmes debhelper dh_auto_* et dh configurent les variables d'environnement renvoyées par dpkg-buildflags, sauf si elles sont déjà configurées. - dh_auto_configure passe les CFLAGS, CPPFLAGS et LDFLAGS de dpkg-buildflags à Makefile.PL et Build.PL de Perl. - dh_strip place les symboles de mise au point séparés à un endroit en fonction de leur identifiant de construction (build-id). - Les fichiers de configuration exécutables de debhelper sont exécutés et leur sortie est utilisée comme configuration. Ce mode est déconseillé. v8 Les changements par rapport à la version 7 sont : - Les commandes échoueront plutôt que de produire une alerte lorsqu'elles recevront des options inconnues. - dh_makeshlibs va exécuter le programme dpkg-gensymbols sur toutes les bibliothèques partagées qu'il génère pour les fichiers shlibs. -X peut alors être utilisé pour exclure certaines bibliothèques. En outre, les bibliothèques rangées à des emplacements inhabituels que pkg-gensymbols n'aurait pas traitées avant qu'elles ne lui soient transmises, induisent un changement de comportement qui peut causer l'échec de la construction de certains paquets. - dh exige que la séquence à exécuter soit indiquée en tant que premier paramètre. Tous les commutateurs doivent venir après. C'est-à-dire qu'il faut écrire « dh $@ --toto », et non « dh --toto $@ » - dh_auto_* utilise préférentiellement Module::Build de Perl au lieu de Makefile.PL. Ce mode est déconseillé. v7 Ce mode est déconseillé. C'est le niveau de compatibilité le plus bas pris en charge. Si vous mettez à jour depuis un niveau de compatibilité antérieur, veuillez consulter debhelper-obsolete-compat(7).
VOIR AUSSI
debhelper-obsolete-compat(7) Upgrading from a (now) obsolete compatibility level? This document covers the upgrade checklist up to the earliest supported level. debhelper(7) General information about the debhelper framework. This document also covers how to declare your chosen debhelper compat level.
AUTEURS
Niels Thykier <niels@thykier.net> Joey Hess
TRADUCTION
Cette traduction est maintenue à l'aide de l'outil po4a <URL:http://po4a.alioth.debian.org/> par l'équipe francophone de traduction de Debian. Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le paquet debhelper. Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C <section> <page_de_man> ».