Ada dans Debian : transition vers GCC 4.1 pour Etch

Le mercredi 12 juillet 2006.
Debian est, entre autres, une excellente plate-forme de développement et de déploiement de programmes en Ada. Dans la version stable actuelle, "Sarge", cette plate-forme utilise GNAT 3.15p. Dans la prochaine, "Etch", le compilateur sera GCC 4.1.

Debian 3.1 Sarge est la version stable en cours de Debian, et est recommandée en production. La version en cours de test, Etch, deviendra stable en décembre 2006. Début juillet 2006, sa partie Ada est entrée dans une zone de turbulences, cette version n’est donc pas recommandée en production pour l’instant. Les turbulences sont dues au changement de compilateur que je vais maintenant expliquer.

La décision d’utiliser GCC 4.1 plutôt que la dernière version GNAT GPL 2006 Edition répond à deux soucis :

-  la license de la bibliothèque d’exécution doit permettre de distribuer les programmes compilés sous d’autres licenses que la GPL. Avec GCC, c’est possible, mais pas avec GNAT GPL Edition.

-  l’interopérabilité avec les autres langages doit être optimale. Avec GNAT GPL Edition, on n’a que C et Ada. Avec GCC, on a en outre C++, Fortran 95, Java, Objective C, et Objective C++.

GCC 4.1 prend en charge la plupart des nouvelles fonctionnalités du langage Ada 2005, mais pas toutes ; ce sera pour la prochaine version.

Dans Sarge, GNAT prenait en charge i386, sparc et powerpc. Etch y ajoutera amd64, hppa, ia64, kfreebsd-i386, mips, mipsel et s390. Il n’y aura en revanche pas de prise en charge des architectures duales telles que i386-amd64 ou powerpc-ppc64. Ce sera pour la prochaine version de Debian, en même temps que la prise en charge généralisée des architectures multiples (multilib).

Le paquet gnat-4.1 est arrivé dans Debian Etch en avril 2006. Après une période de stabilisation, il deviendra le compilateur par défaut ce mois-ci (Juillet). Le nouveau paquet gcc-defaults, qui fournit "gnat", est d’ores et déjà dans la distribution instable où il remplace l’ancien "gnat" qui était en version 3.15p. Le paquet "gnat-4.1" est construit à partir du paquet source "gcc-4.1" en même temps que tous les autres langages sauf Java. J’ai rejoint à cet effet l’équipe des responsables de GCC dans Debian.

Les autres versions de GNAT, à savoir la 3.15p et celles contenues dans GCC 3.3, GCC 3.4 et GCC 4.0, seront retirées de Debian : je me concentre sur une seule version afin de fournir un support de qualité.

Tous les autres paquets sont en cours de migration. Comme l’interface binaire du compilateur change, toutes les bibliothèques doivent être recompilées avec un changement de leur soname. La migration devrait prendre entre un et deux mois, suivant les difficultés rencontrées.

-  ASIS : la version 2005 GPL Edition est arrivée dans instable le 2006-07-11, et elle devrait migrer vers Etch sous peu. Elle fonctionne bien avec GCC 4.1, contrairement à la 2006 GPL Edition qui requiert des changements au compilateur. Attention au changement de license ; la GNAT-Modified GPL devient GPL pure. La documentation, qui est non-libre (elle ne permet pas les modifications) a été transférée vers un nouveau paquet, asis-doc.

-  GtkAda : la version 2.8.1 sera prochainement dans instable, avec là aussi un changement de license en GPL pure.

-  GPS va passer de la version 2.1 à la version 4.0, en utilisant GtkAda 2.8.1.

-  Le GDB amélioré pour Ada va passer de la version 5.3 à la 6.3, avec prise en charge du nouveau format utilisé par GCC pour les informations de débogage (DWARF2 au lieu de STABS).

-  Florist, l’interface POSIX, va passer à la 2006 GPL Edition en changeant la license en GPL pure.

-  GLADE (les systèmes distribués) va passer de 3.15p à 2006 GPL Edition avec changement de license en GPL pure.

-  XML/Ada va passer de la 1.0 en 2.2, avec changement de license vers la GPL pure.

-  AWS passera de la version 2.0p en 2.2, avec changement de license vers la GPL pure.

-  Charles sera retiré de Debian : cette bibliothèque de conteneurs génériques est remplacée par les conteneurs normalisés (Ada.Containers) fournis par GCC 4.1.

-  GNADE, l’interface aux bases de données ODBC, PostgreSQL, MySQL et SQLite, passera de la version 1.5.1 à la dernière en date, 1.6.1. Elle restera en GMGPL.

-  AUnit passera de la version 1.01 à 1.05, sans changement de license puiqu’elle a toujours été GPL pure.

-  AdaBrowse a déjà été recompilé avec ASIS 2005 et est dans instable.

-  Le sort des autres bibliothèques, plus rarement utilisées, est en suspens. Il s’agit de libadabindx, libtexttools et libopentoken. Contactez-moi si vous utilisez une ce ces bibliothèques et désirez qu’elle reste dans Debian.

Changement de license

Le changement de license vers la GPL pure, qui affecte plusieurs bibliothèques importantes, est imposé par leur éditeur la société AdaCore. Avec la GPL pure, il n’est plus possible de distribuer des logiciels non-libre qui utilisent ces bibliothèques. Si votre logiciel utilise une bibliothèque en GPL pure, vous avez quatre possibilités :

-  ne distribuez pas votre logiciel du tout (vous pouvez toujours l’utiliser pour vous-même)

-  distribuez votre logiciel sous license GPL, donc avec son texte source et les quatre libertés (inspection, redistribution, modification et redistribution des copies modifiées)

-  distribuez votre texte source seul sous une license de votre choix (par exemple avec des clauses de confidentialité et de non-redistribution), et demandez à vos utilisateurs de le recompiler eux-mêmes

-  contactez AdaCore et achetez une license GMGPL qui vous permettra de distribuer vos logiciels sans dévoiler vos sources.

Il est possible de garder les anciennes versions sous license GPL modifiée GNAT en parallèle avec les nouvelles. Toutefois, cela demande un travail de maintenance supplémentaire que je ne peux pas et ne veux pas fournir seul. Je suis disposé à fournir deux versions (GPL et GMGPL) de certaines bibliothèques en parallèle si et seulement si je reçois des offres de contributions. Ceci est donc un appel à contributions : contactez-moi si vous avez besoin de bibliothèques en GMGPL. Cela vaut en particulier pour GtkAda, AWS et XML/Ada.

Références

-  Debian : http://www.debian.org

-  Debian Ada Policy : http://www.ada-france.org/debian/debian-ada-policy.html

Ludovic Brenta est le principal responsable des paquets Ada dans Debian. Il y travaille bénévolement depuis Juillet 2003 et fournit une plate-forme de développement et de déploiement complète et intégrée. Vous pouvez le contacter à lbrenta@debian.org.


Forum de l'article