Provided by: dh-ada-library_6.19_amd64 bug

NAME

       dh_ada_library - aide à empaqueter des bibliothèques Ada pour Debian

SYNOPSIS

       dh_ada_library [options debhelper] [[variable=valeur ...] projet.gpr] ...

DESCRIPTION

       dh_ada_library  est  un  programme de la suite debhelper prenant en charge quelques tâches
       courantes dans l’empaquetage de bibliothèques écrites dans le langage Ada.

       Chaque argument projet.gpr indique un fichier de projet GNAT servant à  compiler  une  des
       bibliothèques   partagées   fournies   par   le   paquet   source.  L’usage  de  variables
       d’environnement dans de tels projets étant monnaie courante, il est  possible  de  fournir
       une liste d’affectations avant chaque projet.

       dh_ada_library  lit chaque fichier de projet et en extrait les informations suivantes : le
       nom de la bibliothèque, les projets importés, les répertoires contenant  les  sources,  le
       répertoire  contenant la bibliothèque partagée (Library_Dir), celui contenant les fichiers
       ALI (Object_Dir), et  les  options  de  l’éditeur  de  liens  (Leading_Library_Options  et
       Library_Options).  Ensuite,  il parcourt debian/control afin de vérifier que trois paquets
       existent, nommés conformément à la Charte Debian pour Ada sous l’intitulé Coexistence  Not
       Allowed  et  il  en  déduit  le  numéro  de version des fichiers ALI (aliversion) et de la
       bibliothèque partagée (soversion). Puis, dh_ada_library traite chacun des trois paquets de
       la façon suivante.

   Paquet fournissant la bibliothèque dynamique
       dh_ada_library installe la bibliothèque partagée (mode 644) dans le paquet.

       Si  debian/control  mentionne  un  paquet  -dbg  (voir  plus loin), dh_ada_library exécute
       dh_strip avec des options plaçant les informations de déboguage dans le paquet -dbg.

       Ceci devrait être inutile depuis gnat-7, mais si la bibliothèque partagée déclare sa  pile
       exécutable,  dh_ada_library génère un « override » lintian expliquant que GNAT utilise des
       trampolines pour traiter les exceptions. Avant cela,  dh_lintian  est  exécuté,  car  s’il
       l’était plus tard il risquerait de recouvrir le fichier « override ».

   Paquet contenant les symboles de déboguage (-dbg)
       Depuis  que  les paquets automatiques -dbgsym sont préférés, l’absence de paquets -dbg est
       parfaitement normale. Les versions >= 6.7 sont compatibles avec cette nouvelle méthode.

       Néanmoins, si debian/control mentionne un  paquet  -dbg,  les  variables  de  substitution
       ada:Depends,  ada:Recommends,  ada:Suggests  reçoivent des valeurs indiquant que le paquet
       -dbg dépend du paquet de bibliothèque, recommande le paquet  -dev  et  suggère  le  paquet
       gnat.

       Les version <= 5.3 remplaçaient le répertoire de documentation par un lien symbolique vers
       celui du paquet de bibliothèque, mais cela s’est avéré à l’usage cause de  problèmes  lors
       des  mises à jours. Si un paquet binaire construit avec une telle version a été distribué,
       le paquet source devrait ajouter des scripts  de  maintenance  comme  décrit  à  l’adresse
       https://wiki.debian.org/MissingCopyrightFile.

   Paquet de développement (-dev)
       Pour commencer, dh_ada_library installe le lien symbolique de développement habituel (*.so
       -> *.so.soversion), les fichiers ALI (mode 444) et les sources (mode 644) dans  le  paquet
       -dev.  Les  langages  autres  qu’Ada mentionnés dans le projet sont pris en compte, qu’ils
       aient été pris en compte auparavant par gprbuild, ou  ignorés  par  gnatmake  et  compilés
       séparément.  Ensuite,  il  recherche  un  fichier nommé libLIBRARY_NAME.a (la bibliothèque
       statique) dans le répertoire courant ou un de ses sous-répertoires,  et  l’installe  (mode
       644) dans le paquet -dev.

       Un  second  fichier de projet, conçu pour faciliter la compilation de programmes utilisant
       la bibliothèque, est généré et installé dans le paquet -dev. Le paquet Linker  du  nouveau
       projet  hérite  des  options  destinées à l’éditeur de liens -l ou -L mentionnées dans les
       attributs Leading_Library_Options ou Library_Options du projet de compilation.

       Chaque renommage est transmis au projet généré.

       dh_ada_library exécute dh_strip  avant  d’installer  la  bibliothèque  statique  afin  que
       celle-ci conserve ses informations de déboguage.

       La  variable  de substitution ada:Depends reçoit une valeur indiquant que le paquet dépend
       de gnat, de gnat-X.Y et du paquet de bibliothèque.  Pour  chaque  projet  de  bibliothèque
       importé  et  reconnu,  soit  comme  déjà  parcouru, soit comme installé dans le système de
       construction par dpkg-query, une dépendance est ajoutée  dans  ada:Depends  et  le  projet
       généré se voit ajouter une ligne with. Dans le cas d’un projet déjà parcouru dans le cadre
       du même paquet source, la dépendance exige exactement  la  même  binary:Version,  afin  de
       garantir que toutes les archives statiques sont compilées avec des options compatibles.

INTÉGRATION DANS DEBHELPER

       La   plupart   des   paquets   n’ont   besoin   que  d’ajouter  dh-sequence-ada-library  à
       Build-Depends-Arch dans debian/control. Debhelper  (>=  12)  détectera  la  dépendance  et
       exécutera dh_ada_library après dh_lintian lors des séquences binary-arch et binary.

       Certains  paquets  ne  distinguent  pas  Build-Depends-Arch,  par  exemple parce qu’ils ne
       construisent que des paquets dépendant de l’architecture.  En  ce  cas,  il  est  pratique
       d’ajouter  plutôt  la  dépendance  à  Build-Depends. La commande sera alors exécutée aussi
       pendant la séquence binary-indep, quoique probablement sans effet.

       Les  paquets  compatibles  avec  debhelper  (<<  12)  doivent  ajouter  dh-ada-library   à
       Build-Depends-Arch, ainsi qu’un paragraphe comme
       override_dh_lintian-arch:
               dh_lintian -a
               dh_ada_library
       dans debian/rules.

       Les  paquets compatibles avec debhelper (<< 12) mais ne distinguant pas Build-Depends-Arch
       peuvent  simplement  ajouter   dh-ada-library   à   Build-Depends   et   passer   l’option
       --with=ada-library au séquenceur dh dans debian/rules.

REMARQUES

       L’attribut  Library_Version  du  projet est délibérément ignoré, et le nom d’objet partagé
       (soname) est plutôt déduit à  partir  du  nom  du  paquet  de  bibliothèque.  Les  projets
       réclamant  une  définition de variable externe pour définir cet attribut pourront recevoir
       une valeur arbitraire. Ceci permettra souvent au mainteneur l’usage  d’un  simple  fichier
       debian/ada_libraries  au  lieu  de  surcharger  une  commande  debhelper ou d’exporter une
       variable d’environnement.

       Les    deux    bibliothèques    et    les    fichiers    ALI    sont    installés     dans
       /usr/lib/DEB_HOST_MULTIARCH, le projet et les sources dans /usr/share/ada/adainclude. Ceci
       signifie que le paquet -dev ne peut pas être déclaré Multi-Arch: same puisque  le  contenu
       du projet (et le cas échéant de sources générées) sera différent selon l’architecture.

FICHIERS

       debian/ada_libraries
              Projets  et  variables à traiter en plus de ceux mentionnés en ligne de commande en
              cas d’appel directement depuis debian/rules. Les  fins  de  ligne  sont  considérés
              comme  de  simples  espaces.  Ceci  peut  être  amené à changer, et il est vivement
              recommandé de mettre exactement une affectation ou un projet par ligne. Toute ligne
              débutant par un dièse est ignorée.

OPTIONS

       Les  options  en  ligne  de  commande  et  variables  d’environnement  communes aux outils
       debhelper sont reconnues.

EXEMPLES

       dh_ada_library 'DIRS=src gen' SOVERSION=sans_effet toto.gpr --verbose --no-act

VOIR AUSSI

       debhelper(7), dh_installdocs(1), dh_lintian(1), dh_strip(1), deb-substvars(5),  la  Charte
       Debian       pour       Ada       disponible       (en      anglais)      à      l’adresse
       http://people.debian.org/~lbrenta/debian-ada-policy.html.

AUTEUR

       Nicolas Boulenguez <nicolas@debian.org> a écrit dh_ada_library et  sa  page  de  manuel  à
       destination du projet Debian et de quiconque les trouvera utiles.

                                            2019-12-16                          DH_ADA_LIBRARY(1)