Cette partie du cours est destinée aux curieux : comment avoir la toute dernière version de Celestia (oui, celle écrite la veille au soir par un informaticien avec une barbe de trois jours et un paquet de chips à portée de main !

) ? Comment fonctionne Celestia ?
Pour y répondre, nous allons télécharger le
code source de Celestia via le serveur Subversion de ses développeurs !
C'est pas un peu... illégal ton truc là ??
Absolument pas ! Celestia est un logiciel open-source, et n'importe qui peut accéder au code !
Cette partie est plus difficile que les autres : elle implique :
- que vous ayez un niveau d'anglais acceptable car toutes les ressources que nous utiliserons sont en anglais !
- que vous sachiez utiliser Subversion (excellent tuto de Dalshim ici)
- que vous ayez des connaissances assez avancées en C/C++ (voir tutos de M@teo21 ici et là et le tuto de Nanoc ici)
- que vous sachiez compiler sous GNU/Linux
Attends, j'ai bien compris ? Ça n'est possible que sous Linux ??
Pas du tout ! Cependant, la compilation sous Linux est infiniment plus simple (et je ne ferai jamais assez de pub pour cet OS

).
Je n'expliquerai que la compilation sous Linux ici,
cependant, si vous êtes motivés, il est possible de le faire sous Windows et MacOS.
On vous explique
ici (in english, of course) comment compiler les sources de Celestia sous votre OS. La compilation sous Vista/7 n'y est malheureusement pas expliquée...
Enfin, par pure générosité, il existe des versions plus ou moins stables compilées et releasées
ici, dans la section DOWNLOAD.
Bon, vous êtes prêts ? On y va !
Pour commencer
Pré-requis
Vous devez tout d'abord avoir installé Subversion : si ce n'est pas le cas :
Code : Console | sudo apt-get install subversion |
(Bon, apt c'est pour Debian/Ubuntu, vous remplacez par votre gestionnaire de paquets, vous êtes grands !)
Pour la compilation, vous avez besoin de build-essential et automake, donc si vous n'avez jamais compilé sous Linux (hérétiques

!) :
Code : Console | sudo apt-get install build-essential automake |
Et le plus important, les bibliothèques dont a besoin Celestia ! Il y en a un petit paquet, donc pour ne rien oublier,
Code : Console | sudo apt-get build-dep celestia |
(Encore une fois, build-dep c'est pour apt-get. Donc pour votre gestionnaire, RTFM...)
Récupération des sources
Pour récupérer les sources du logiciel, on fait dans un répertoire quelconque un
check-out du dépôt. Il nous faut pour cela l'adresse du dépôt :
https://celestia.svn.sourceforge.net/svnroot/celestia/
Sur ce dépôt on ne téléchargera que la branche principale puisque les autres ne sont que des parties modifiées lors de nouvelles révisions. Cette branche principale est le répertoire trunk/ à la racine du dépôt.
Téléchargeons cette branche sur notre disque dur :
Code : Console | svn co https://celestia.svn.sourceforge.net/svnroot/celestia/trunk <repertoire> |
Donnez un nom au répertoire où vous souhaitez sauvegarder les fichiers (si vous ne précisez rien il sera nommé trunk).
Et c'est parti ! À chaque nouveau fichier téléchargé, vous remarquez que SVN nous indique
A celestia/textures/medres/earthnight.jpg par exemple. Le A signifie "add" et indique l'ajout du fichier au répertoire de votre disque dur.
Une fois les sources téléchargées, je vous invite à aller dans le dossier : détaillons son contenu.
Huit dossiers doivent vous être familiers si vous avez déjà bidouillé Celestia avec les add-ons : data/, extras/, fonts/, locale/, models/, scripts/, shaders/ et textures/. Ceux-ci seront en fait copiés dans le répertoire de Celestia lors de
make install.
Les deux répertoires windows/ et macosx/, vous vous en doutez, contiennent des headers supplémentaires nécessaires à la compilation sous ces OS et pour le premier les .dll nécessaires à l'exécution du logiciel.
Les fichiers dont les noms sont en majuscules seront publiés en même temps que le logiciel lors de la prochaine sortie de version stable.
Enfin, le dossier qui doit attirer votre attention est src/. Il contient tous les fichiers .h et .cpp qui seront compilés pour créer l'exécutable. Le fichier devguide.txt nous sera très utile, pour ne pas dire indispensable, pour savoir quel fichier gère quelles fonctions du logiciel et comment il est codé.
Mais pour l'instant, tentons une petite compilation.
Make time
Alors, par quoi on commence ?
Ben justement, moi, tu m'as soûlé avec tes listes de fichiers et de dossiers, je suis un warrior, donc j'ai tenté de compiler et il m'a insulté quand je lui ai dit gentiment ./configure... Il voulait que je dise s'il te plaît ?
Eh bien regardez donc les fichiers dans votre répertoire... Qui a vu un configure ?
...
Je vous explique.
Le fichier configure est rarement écrit par un programmeur pour un gros projet comme Celestia : on écrit la plupart du temps un simple fichier configure.in, avec une syntaxe assez simple et compréhensible, et avec lequel on génère un configure qui lui-même génèrera un Makefile pour la compilation. Vous êtes perdu ?
Si vous voulez en savoir plus, je vous conseille cette page très bien faite sur configure.in :
cliquez ici
Mais... Comment on génère configure ? Tu as mis des points d'interrogation sur le schéma !
Oui, c'est pour le suspense
Il s'agit d'une commande disponible si vous avez bien installé automake : dans le dossier où se trouve configure.in, lancez
Code : Console
Ce script peut mettre un certain temps à recouper toutes les informations, mais génère au final un joli script configure ! Il ne vous reste plus qu'à faire (Entrée pour chaque saut de ligne)
Code : Console | ./configure --with-interface
make |
--with-interface est à remplacer par le GUI à utiliser (tapez simplement ./configure pour la liste des GUI disponibles).
Pour une compilation-test comme celle-ci, je vous conseille d'utiliser --with-glut qui crée une interface minime et diminue le temps de compilation !
Et au bout d'un temps variable, vous obtenez un joli petit binaire nommé sobrement celestia que vous pouvez installer dans /usr/local/share/ avec tout ce qu'il lui faut d'un simple
Code : Console
Première compilation réussie ! Vous avez maintenant la toute dernière version de Celestia, utilisable !
Il s'agit d'une version pas forcément stable, avec des bugs possibles... Si vous voulez pouvoir utiliser votre Celestia sans qu'il ne vous lâche lors d'une opération plus ou moins délicate, installez la version stable, quitte à attendre quelques mois une nouvelle !
Qu'entends-je ? Vous voulez toucher au code source et compiler un Celestia customisé ? Il suffit de demander !
Mettre les mains dans le cambouis
Personnellement, j'aime beaucoup Celestia tel qu'il est, cependant je comprends parfaitement votre envie de regarder vraiment comment ça fonctionne, et je vous y encourage, c'est une des meilleures façons de progresser (avec la pratique

).
Je ne peux cependant pas vous lâcher ainsi dans la nature...
Pour commencer, je vous conseille
fortement d'imprimer le fichier devguide.txt pour l'avoir toujours à portée de main...
Dans le fichier :
- La section File Overview détaille le rôle de chaque fichier source
- La section Star Database donne quelques informations sur la base de données d'étoiles (112000 étoiles dans data/stars.dat) et son implémentation
- La section Stars détaille la façon dont les développeurs ont implémenté la classe Star
- La section Celestia Overview nous donne le schéma général de l'exécution du logiciel (instanciation des classes, etc...)
- La section Tracking Visible Stars explique que le rôle de la classe VisibleStarSet
- Enfin, la section UNIX nous informe que les développeurs auront besoin d'autoconf, automake et g++ (trop tard
)
Vous pouvez maintenant fouiner dans les répertoires, avec cette aide précieuse qu'est devguide, histoire de vous familiariser avec tout ça... Amusez-vous bien !
Si vous avez une idée révolutionnaire, implémentez-la, testez-la, et n'hésitez pas à en parler sur le forum de Celestia (tiens, une rime !) dont je vous redonne l'adresse :
http://www.shatters.net/forum
Pareil pour toute question, toute remarque, ou simplement la découverte approfondie de Celestia à travers les posts du forum !
Enfin, n'hésitez pas à me faire part de vos idées et bidouillages par commentaire et/ou par MP !