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 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, 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’était plus tard il
risquerait de recouvrir le fichier « override ».
Paquet contenant les symboles de déboguage (-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.
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.
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.