En fait, j'ai commencé à m'amuser à faire ce que je fais déjà pour le boulot, des Web services en Ada avec AWS, histoire de voir les performances que l'on pouvait tirer de tout ça.
Ceux qui m'ont déjà lu ici savent aussi que j'ai le privilège de travailler avec le BPEL. Cette horreur fonctionne dans un bus d'entreprise[1] et que toute cette magnifique architecture fonctionne le plus cair du temps en Java.

C'est là que mon esprit malade à commencer à germer. Comment faire un ESB en Ada ?

Pour faire causer des services Web, facile, il suffit d'utiliser AWS mais dans le bus ?[2]
La solution est devenue aussi flagrante, il faut PolyORB.
Petit tour d'horizon des ports de l'OS du Bien, il y a un beau compilateur Ada tout neuf que l'on doit à Mr Marino et son équipe mais point de PolyORB à l'horizon. qu'à cela ne tienne, je suis informaticien quand même !!!

Du coup, zou, je télécharge la dernière version et hop, je compile :

fred@coruscant:~/Dev/Ada/PolyORB/polyorb-gpl-2011-src>./configure \
--with-appli-perso="corba moma dsa" \
--with-proto-perso="giop soap" \
--with-corba-services="event naming ir notification time"
fred@coruscant:~/Dev/Ada/PolyORB/polyorb-gpl-2011-src>gmake

Et là, ça compile pendant quelques minutes avant de crasher lamentablement par un magnifique :

PCS version mismatch: expander 4, PCS (polyorb_dsa) 5
compilation abandoned
PCS version mismatch: expander 4, PCS (polyorb_dsa) 5
s-parint.adb:764:39: run-time configuration error
compilation abandoned
s-parint.adb:764:39: entity "System.Partition_Interface.Ta_I" not defined
gnatmake: "/home/fred/Dev/Ada/PolyORB/polyorb-gpl-2011-src/src/dsa/polyorb-dsa_p-storages-dsm.adb" compilation error
gnatmake: "/home/fred/Dev/Ada/PolyORB/polyorb-gpl-2011-src/src/dsa/s-shasto.adb" compilation error
gnatmake: "/home/fred/Dev/Ada/PolyORB/polyorb-gpl-2011-src/src/dsa/s-parint.adb" compilation error
gmake: *** [polyorb_src_dsa.gpr] Erreur 4

Bon, pour votre info, bande d'ignares, DSA, c'est la distribution vue par Ada. Avantage du truc, c'est dans la norme et ça demande vachement moins de code que du CORBA donc je voulais me garder ça sous le coude.
Bien sûr, en bourrin que je suis, je ne lis pas tout et me dis :

Andouille, t'as qu'à prendre la dernière version !!

Première constatation, je me traite souvent d'andouille. deuxième constation plus intéressante, l'adresse du référentiel Subversion sur la page de PolyORB. C'est parti :

fred@coruscant:~/Dev/Ada/PolyORB/>svn co http://svn.eu.adacore.com/anonsvn/Dev/trunk/polyorb

Quelle ne fut pas ma déception de revoir le message maudit !!!

Après un long moment de lamentations, j'ai relu le message d'erreur quasi limpide[3]

PCS version mismatch: expander 4, PCS (polyorb_dsa) 5

Tiens, y a des trucs qui causent pas ? PolyORB est en version 5 et l'autre en 4.
J'ai donc trouvé qu'il s'agit du compilateur qui est trop ancien par rapport au middleware. Qu'à cela ne tienne, j'ai accès au subversion. Oui mais quoi récupérer ? La version de PolyORB de la même époque[4] que mon compilateur.

fred@coruscant:~/Dev/Ada/PolyORB/>svn co -r \{15042011\} http://svn.eu.adacore.com/anonsvn/Dev/trunk/polyorb

Et là, miracle, ça compile et ça s'installe.

Vous vous dites forcément

Et après ?


Ben après, pour l'instant, j'ai juste fait joujou avec les exemples CORBA et DSA.
Ce billet ne sert donc qu'à savoir compiler PolyORB sur FreeBSD avec la version courante[5] de gnat-aux... Désolé pour le dérangement

Comme disent les Anglais, more to come later[6]

Notes

[1] Attention, ça devient hype à mort

[2] Et oui, déjà en quatrième, on se rend plein de services dans le bus... Bon, passons.

[3] Après une bonne recherche du Google quand même et surtout la lecture du fichier README.DSA :D

[4] Ou presque, j'ai pas retrouvé exactement la date :)

[5] A la date d'aujourd'hui

[6] Si ça se trouve, ils disent même pas ça ;-)