mardi 5 février 2013

Gérer les différentes versions de ses librairies sous Windows

For an english version of this article, follow this link : http://antoine-agthe.blogspot.com/2013/02/deal-with-different-libraries-versions.html

Comme beaucoup de développeurs, il se peut que j'intervienne sur plusieurs projets en même temps, chacun d'eux exploitant différentes librairies.
La plupart des développeurs travaillent sur plusieurs plateformes, utilisant haXe/NME, Actionscript pour Flash/AIR, Cocos2D, Starling Framework, Apache Ant … ce qui brasse un nombreux important de répertoires de SDK, de frameworks, ou de librairies.

En parallèle, je dois tester de nouvelles versions de librairies sur des projets existants, ou sur de petits prototypes, donc je dois rendre disponible chaque version de chaque librairie afin de ne pas casser tous les projets en cours.

Les développeurs sous Linux ont pour habitude de tirer partie d'une gestion commune des librairies et de leurs versions.
Les programmes partagent naturellement leurs librairies dans des dossiers communs nommés liblib32 et lib64.
Pourtant tous les programmes n'utilisent la même version d'un lib.
Pour s'y retrouver facilement, ils utilisent une ligne commande ln qui crée un lien symbolique sur un fichier ou un dossier..

Un lien symbolique est comme un raccourci sous Windows, mais en plus puissant !

Pour bien comprendre la nuance entre un lien symbolique et un raccourci, il faut suivre les étapes suivante sous Windows.


  • Créez un dossier nommé my_real_folder
  • Un clic droit, et créez un raccourci que l'on nommera  my_shortcut
  • Double cliquez sur my_shortcut.
  • Vérifiez la barre d'adresse. Vous êtes dans my_real_folder.
Windows ouvre automatiquement le dossier spécifié dans le raccourci. Si vous prêtez attention à ces dossier et raccourci en ligne de commande, vous verrez qu'un raccourci est un simple fichier LNK.
Si vous tentez d'ouvrir my_shortcut comme un dossier, vous aurez une erreur ("Nom de répertoire non valide")

CECI est la grande différence entre les raccourcis et les liens symboliques.

Les liens symboliques sont gérés par le système de fichier. Ce n'est pas un fichier produit par le système d'exploitation. Le lien symbolique se comporte tout à fait comme le fichier ou le dossier auquel il fait référence.

Comment créer des liens symboliques sous Windows ?
Vous devez utiliser le mode shell (cmd) en mode administrateur, et appeler la commande mklink.

mklink permet de créer des "raccourcis" au niveau système de fichier, vers un fichier ou un dossier comme le fait ln sous Linux.
La grande différence avec ln, est qu'il faut spécifier /D si on veut référencer un dossier :

mklink /D <link> <target>

Retournons sur notre exemple précédent pour créer un lien symbolique au dossier my_real_folder, que l'on nommera my_ref_folder.
Il suffit de faire :

mklink /D my_reference_folder my_real_folder

Utilisez dir pour lister les fichiers.

Vous pouvez voir que le lien n'est pas un simple fichier, mais une entité différente du système de fichier.
Utilisez maintenant cd pour entrer dans le lien.
Dans le prompt, vous pouvez voir que le système de fichier entre vraiment dans la référence, au lieu de faire une redirection.

Ça fonctionne aussi dans l'interface graphique, où on peut voir deux différences :
  • La dossier dans la barre d'adresse est bien le lien symbolique
  • Le dossier référence est visible dans le volet de gauche, alors que le raccourci ne l'est pas.

Grâce à mklink, vous donc pouvez créer un dossier lib à la manière de Linux, sous Windows.

Par exemple :
Vous avez développé des projets avec Adobe Flex 3.2.0, Adobe Flex 3.4.0 et Adobe Flex 3.4.1.
Vous développez à présent des projets avec Adobe Flex 4.6.0.
Enfin, vous souhaitez tester Apache Flex 4.9.0.

Vous pouvez créer différents liens symboliques pointant sur chaque version majeure et mineure de vos librairies, comme je l'ai fait.

Sur ce screenshot, vous pouvez voir :

  • flex-4.9.0 est référencé par flex-4.9
  • flex-4.9 est référencé par flex-4
  • et flex-4 est référencé par flex
Grâce à cette technique, si je veux créer un projet Flex 4, je peux utiliser la référence flex-4 dans ma configuration de projet.
Quand Apache Flex 4.10 sortira, je n'aurais qu'à recréer les liens symboliques et tous mes projets utilisant flex-4 en bénéficieront.



Si vous voulez utiliser une version plus précise de la librairie, il reste possible d'utiliser les dossiers réels.

Cette façon de gérer les SDKs et les librairies n'est pas la seule. Vous pouvez regrouper les différentes librairies dans un dossier spécifique à chaque langage, à chaque technologie. La technique que je décris est celle que j'utilise, et ça fonctionne plutôt bien.

Aucun commentaire:

Enregistrer un commentaire