Scroll to navigation

DH_ADA_LIBRARY(1) General Commands Manual DH_ADA_LIBRARY(1)

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, celui qui contient les fichiers ALI et les options de l’éditeur de liens. Ensuite, il parcourt debian/control afin de vérifier que trois paquets existent, nommés conformément à la Charte Debian pour Ada et il en déduit le numéro de version 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 dans le paquet, puis exécute dh_strip avec des options plaçant les informations de déboguage dans le paquet -dbg.
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’est plus tard il risque de recouvrir le fichier « override ».

Paquet contenant les symboles de déboguage (-dbg)

dh_ada_library exécute dh_installdocs avec des options remplaçant le répertoire de documentation par un lien symbolique vers celui du paquet fournissant la bibliothèque dynamique. Si jamais il s’avérait nécessaire d’y ajouter des fichiers, vous devriez en écrire la liste dans debian/libLIBRARY_NAME-dbg.docs plutôt que d’exécuter dh_installdocs une seconde fois, il n’est pas conçu pour cela.
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.

Paquet de développement (-dev)

Pour commencer, dh_ada_library install le lien symbolique de développement habituel (*.so -> *.so. soversion), les fichiers ALI et les sources dans le paquet -dev. 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 dans le paquet -dev.
dh_ada_library lit et analyse ensuite le fichier de projet passé en ligne de commande, généralement celui qui a servi à compiler les bibliothèques statiques et dynamiques, et s’en sert de modèle pour générer un autre fichier de projet, qu’il install dans le paquet -dev. Ce second fichier de project est prévu pour aider à compiler des programmes utilisant la bibliothèque. Il hérite des options destinées à l’éditeur de liens -l ou -L mentionnées dans le projet de compilation, mais omet les options de compilations en faveur des attributs Externally_Built et Library_ALI_Dir.
dh_ada_library exécute dh_strip avec des options empêchant que la bibliothèque statique soit dépouillée.
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é, un paquet -dev correspondant est recherché dans debian/control, ou sinon avec dpkg-query, et une dépendance est eventuellement ajoutée.

REMARQUES

Ce programme ne fait pas partie de la suite debhelper. Pour l’activer, veuillez lancer le séquenceur dh avec l’option --with ada-library.
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.
Un lien symbolique pour le répertoire de documentation du paquet -dev, qui ne présente que des avantages, est recommandé, mais ne peut être crée par ce programme. Le mainteneur aura certainement besoin d’exécuter plus tard dh_installdocs dans debian/rules, et cet outil échoue lorsqu’il rencontre un lien symbolique ballant ou s’il a déjà été exécuté. Pour le paquet -dbg, il suffit de mentionner les arguments dans un des fichiers debian/*.docs, mais pour le paquet -dev cette solution nécessiterait un renommage à la main à chaque évolution de l’ALIVERSION.
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. Les fins de ligne sont considérés comme de simples espaces. 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 KIND=dynamic 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, http://wiki.debian.org/Multiarch/Implementation.

AUTEUR

Nicolas Boulenguez <nicolas.boulenguez@free.fr> a écrit dh_ada_library et sa page de manuel à destination du projet Debian et de quiconque les trouvera utiles.
2012-03-19