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.