Fr/Script de compilation sous Linux Debian/Ubuntu

From FlightGear wiki
Jump to: navigation, search

Le script décrit ici prend en charge le téléchargement des sources et la compilation de FlightGear à partir des dépôts git en exécutant une commande unique pour les systèmes de type Debian 32-bit et 64-bit (Debian, Ubuntu). L'installation pré-existante de FlightGear (si elle existe) ne sera pas modifiée, le script construit et installe tout ce qu'il faut dans le répertoire dans lequel il sera téléchargé. Vous pouvez choisir entre la construction de l'ensemble ou seulement l'un des outils spécifiques de l'application.

Les paquetages nécessaires seront installés via le système apt-get. Les bibliothèques qui ne sont pas incluses dans les dépôts seront téléchargés et compilées "à la volée" (par exemple Plib, Simgear et OSG).

Pour les systèmes de type Redhat (Fedora, CentOS) reportez vous à la page dédiée à CentOS.

Voir aussi Superbuild.

Le script

Vous pouvez télécharger le script de la manière suivante:

wget -O download_and_compile.sh http://sourceforge.net/p/flightgear/fgmeta/ci/next/tree/download_and_compile.sh?format=raw


Pour les impatients

cd  <your working directory for building flightgear>
wget -O download_and_compile.sh  http://sourceforge.net/p/flightgear/fgmeta/ci/next/tree/download_and_compile.sh?format=raw
chmod +x download_and_compile.sh
mkdir -p stable
mkdir -p next
cd stable
../download_and_compile.sh -s
cd ../next
../download_and_compile.sh -p n

Espace disque nécessaire

Pour la version 3.4.0, en juin 2015, le script requiert entre 2 et 3 Go d'espace disque. Ceci inclus le fichiers à télécharger, les fichiers de construction lors de la compilation, ainsi que le fgdata.

Liste des programmes à compiler

Le script permet de télécharger et compiler:

Note: openRTI est une autre dépendance optionnelle pour le support HLA: http://wiki.flightgear.org/FlightGear_HLA_support_(High_Level_Architecture)

Pour l'instant, vous pouvez faire abstraction du support HLA. Finalement, l'idée de remplacer le système MP existant par HLA est surtout destiné à une architecture FlightGear qui intégre un grand nombre de composants dans des process séparés, ou même des machines distinctes. Cette technologie est donc plutôt destinée à un contexte professionnel utilisant plusieurs ordinateurs et écrans pour créer un environnement complet de simulation "immersif".

Pour l'instant, il est probablement plus sécurisant de considérer que HLA est réservé aux développeurs et aux personnes qui veulent expérimenter ces fonctionnalités.

Vous pouvez utiliser le paramètre -i pour compiler OpenRTI, ou la re-configuration SimGear et FlightGear avec l'option -D ENABLE_RTI=ON (experimental)

Erreurs lors de la compilation de la version Next

Gardez à l'esprit que ce script se compile avec les dernières versions des logiciels, en utilisant les dernières distributions Debian. Il peut arriver que le programme qui a été compilé avec succès la semaine dernière, aujourd'hui, ne fonctionne plus. Construire la version stable devrait toujours fonctionner, sauf s'il y a un problème avec le script.

Téléchargement

Vous pouvez télécharger le script ici:

Le script est maintenu dans le dépôt FlightGear principal. Rappelez-vous de mettre à jour ce script dans le cas d'une nouvelle version de FlightGear, vous pourrez ainsi télécharger la dernière version stable.

Pièges connus

Dans les versions FlightGear antérieures ou égales à 3.0 le système de construction cmake est connu pour ne pas reconfigurer automatiquement les sources SG/FG apèrs mise à jour dans $SG_SRC et $FG_SRC, en principe que vous devez utiliser un "git pull" pour mettre à jour les sources (via le script d&c) qui créera les derniers binaires, mais ça ne concernera pas le paquet de base des data. En effet, les sources continueront à utiliser les anciennes versions des fichiers qui se trouvent dans le cache de cmake. Cette anomalie a été rencontrée par plusieurs contributeurs, y compris pour le développement du noyau de base.

Pour contourner ce problème, allez dans les répertoire de construction SG/FG et reconfigurez chaque arborescence en exécutant la commande "cmake ." - pour plus d'informations voyez [1][2].

Ceci devrait être résolu dans les versions stables postérieures à la 3.0.

Procédure

Pour lancer l'exécution de download_and_compile.sh, enregistrez le script dans un répertoire de travail, comme, par exemple: ~/fgfs puis exécutez le (il n'est pas nécessaire d'être root).

Voici un exemple de la séquence des commandes pour récupérer le cript depuis la branch "master". Vous pouvez remplacer "master" par next pour récupérer la dernière version de développement du script, s'il y en a une:

mkdir ~/fgfs
cd ~/fgfs
wget http://www.gitorious.org/fg/fgmeta/raw/download_and_compile.sh
chmod 755 download_and_compile.sh


Vous disposez de deux options: construire la dernière version stable de FlightGear, ou construire la version courante de développement (bleeding edge). Après construction, si vous avez besoin de construire une version différente, essayez la procédure Avoiding Multiple Downloads of fgdata.

Construction de la dernière version stable de FlightGear

À l'exécution du script utilisez l'option "-s" pour travailler sur la dernière version stable:

./download_and_compile.sh -s

Construction de la version de développement de FlightGear

À l'exécution du script sans aucune option, la dernière version de développement sera constuite.

Attention: La version de développementde Flightgear évolue tous les jours. Elle fournit les dernières fonctions disponibles, mais sans aucune garantie de fonctionnement correcte. Si vous n'êtes pas un habitué des tests de logiciels vous devriez vous en tenir à la version stable.

./download_and_compile.sh


Une fois l'exécution du script correctement terminée, vous disposerez de FlightGear et Fgrun installés dans le répertoire ~/fgfs.

Lancement de FlightGear

L'utilisation du script n'installe rien dans votre système, comme le ferait un paquetage traditionnel. Il se borne à construire dans votre répertoire de travail tout ce qui est nécessaire. Ceci permet de disposer de plusieurs versions simultanément (pour des tests, de la mise au point, de l'optimisation, etc...). Il est donc indispensable de paramétrer correctement votre LD_LIBRARY_PATH, ou tout simplement d'utiliser le script Brisa qui fera ça pour vous (run_fgfs.sh qui a été créé automatiquement dans votre répertoire de travail).

Pour démarrer FlightGear depuis une nouvelle installation git, lancez la commande run_fgfs.sh depuis ce répertoire, par exemple:

cd ~/fgfs
sh run_fgfs.sh

Lanceur Fgrun

Fgrun-page2.jpg

Beaucoup d'utilisateurs sont plus à l'aise avec une interface graphique qu'avec la ligne de commande. FlightGear dispose de l'utilitaire de lancement Fgrun qui a été installé dans votre répertoire de travail. Vous devz simplement exécuter la commande run_fgrun.sh, par exemple:

cd ~/fgfs
sh run_fgrun.sh

fgrun sauvegardera tous ses paramètres dans un fichier ~/.fltk/flightgear.org/fgrun.prefs vous pouvez enregristrer des copies de ce fichier de préférences ajusté pour chaque version stable et/ou next.

Lanceur Fgo!

Fgo01.jpg

C'est un autre utilitaire de lancement écrit en python, Vous devez le lancer avec la commende run_fgo.sh, par exemple:

cd ~/fgfs
sh run_fgo.sh

Souvenez vous que lors de la première exécution de Fgo il faut aller dans les préférences pour paramétrer les chemin d'accès pour binary et fgdata (vous n'avez pas besoin de renseigner le working directory).

Programmes additionnels

Si vous voulez obtenir tous les autres programmes, vous devez lancer le script en ajoutant le paramètre "ALL":

./download_and_compile.sh ALL

Ceci installera aussi FGCOM, FGComGui et Atlas

Lanceur FGCOM

FGCOM est le système utilisé par FlightGear pour simuler les communications radio entre les utilisateurs. L'exécution se fait avec la commande run_fgcom.sh:

cd ~/fgfs
sh run_fgcom.sh


Lanceur Terrasync

Votre compilation de FlightGear vous procure aussi le programme Terrasync program, si vous voulez l'utiliser:

cd ~/fgfs
sh run_terrasync.sh -S -p 5500 -d /folder/with/sceneries

Où: /folder/with/sceneries est le répertoire contenant les données des scènes.

Ensuite, lancez fgfs avec l'option --fg-scenery=/folder/with/sceneries --atlas=socket,out,5,localhost,5500,udp

Dépannage

Erreurs de compilation

Nous y voici, n'ayez pas peur, si vous souhaitez utiliser le programme depuis les dépôts cvs/svn/git, vous aurez à faire face à des erreurs de compilation. Qu'est-ce qui peut bien se produire? Bien souvent cela résulte de:

  1. Les développeurs ont introduit une nouvelle fonctionnalité et le code correspondant n'est pas cohérent avec votre architecture, ça peut se produire surtout avec la version de développement.
  2. Le programme refuse de se compiler en raison d'une divergence entre les bibliothèque sur lesquelles il s'appuie. Par exemple FlightGear ne peut pas se compiler si OSG a été modifié, tant que OSG lui-même n'a pas été compilé correctement.
  3. L'un, ou plusieurs, des dépôts et indisponible et empêche de récupérer la bibliothèque nécessaire. (que ce soit avec cvs/svn/git ou avec apt-get)

Il y a une solution simple pour résoudre ces problèmes: patientez et relancez le script après avoir attendu un peu (quelques heures, voir quelques jours). Si les développeurs réparent et synchronisent leur code avec une bibliothèque remise à niveau (ce qui se produit habituellement, heureusement), vous pourrez alors compiler sans erreur, à moins qu'une autre anomalie ait été introduite.

Parfois il arrive que le script refuse la compilation de fgrun, fgcom ou alas. Si vous obtenez quand même le run_fgfs.sh cela signifie que l'installation de FlightGear s'est quand même terminée correctement, vous pouvez l'utiliser sans soucis.

Référence non définie dans OpenRTI

De temps en temps, en raison de la manière dont d&c procède à son nettoyage, certaines erreurs de lien peuvent se produire. C'est le cas avec l'erreur "libRTI-NG.so: undefined reference to xxx", malheureusement à ce stade vous serez obligé de modifier le script avec les commandes rm -f CMakeCache.txt && rm -rf CMakeFiles/, ou simplement recommencer avec un nouvel environnement. En vous assurant que vous êtes bien dans le répertoire parent du projet, vous aurez besoin de lancer cette commande pour tout nettoyer (sauf le FGDATA):

rm -rf build/* install/simgear/ install/openrti/ install/flightgear/share/ install/flightgear/bin/

voir ce fil de discussion pour plus d'informations (http://forum.flightgear.org/viewtopic.php?f=45&t=26244)

Options

Le script par défaut (sans aucune option) compilera seulement FlightGear et Fgrun. Pour compiler tous les éléments vous devez lancer l'exécution du script avec l'option ALL. Comme ceci:

./download_and_compile.sh ALL

Compilation d'un seul programme

Si vous voulez compiler un seul des programmes, vous pouvez lancer l'exécution du script avec l'une des options suivantes:

  • PLIB (pour compiler et installer plib)
  • OSG (pour compiler et installer OpenSceneGraph)
  • SIMGEAR (pour compiler et installer Simgear)
  • FGFS (pour compiler et installer FlightGear)
  • DATA (pour télécharger/mettre à jour les fichiers data pour FlightGear)
  • FGRUN (pour compiler et installer Fgrun)
  • TERRAGEAR (pour compiler et installer terragear!)
  • TERRAGEARGUI (pour compiler et installer terrageargui!)
  • OPENRADAR (pour compiler et installer OpenRadar!)
  • FGO (pour compiler et installer Fgo!)

Mise à jour rapide

Il y a un second paramètre UPDATE qui permet de se limiter à la seule mise à jour de votre installation. Par exemple:

./download_and_compile.sh FGFS UPDATE

Ceci provoquera la seule mise à jour de FGFS

Compilation des dernières versions stable (Expérimental)

Même si le script récupère les données et les sources des développeurs de pointe sur les dépôts (qui parfois ne compilent pas), vous pouvez toujours forcer le script à télécharger les dernières versions connues du logiciel qui ont été compilées avec succès en ajoutant l'option -s.

./download_and_compile.sh -s

Comment cela fonctionne t-il? Dans le script il y a une petite liste avec les versions les plus récentes connues compilées avec succès, ce sont ces versions spécifiques qui sont téléchargées à partir du svn/git.
Attention: Si vous exécutez cette option dans un dossier où fgfs a déjà été compilé, la compilation échouera probablement, il vaut mieux exécuter le script avec cette option l'intérieur d'un dossier vide ou dans un dossier avec la même version de fgfs compilé précédemment.

Options avancées

  • Ignorer le téléchargement des paquets de la distribution en utilisant l'option -p n
  • Ignorer la compilation des programmes en utilisant l'option -c n
  • Ignorer la récupération des mises à jour du logiciel en utilisant l'option -d n
  • Ne pas faire la reconfiguration (make clean) en utilisant l'option -r n

Par exemple, si vous êtes un développeur et que vous voulez rapidement recompiler et réinstaller seulement vos propres modifications de FlightGear, faire:

./download_and_compile.sh -p n -d n -r n  FGFS

Ceci ne recompilera que les modification de FGS et les installera.

Acceleration pour processeur multicœur

En utilisant l'option -j x (où x est le nombre de cœurs de votre processeur que vous voulez réserver au traitement) vous accélérerez considérablement toute la procédure de compilation.

Espace disque

Pour avoir à la fois le programme compilé, le code source, les données (FGDATA), à partir du dépôt git vous devrez disposer d'un espace disque assez conséquent. Ça pourrait vous prendre jusqu'à 13 Go.
Si vous ne disposez pas d'une machine rapide, la compilation pourrait prendre plusieurs heures.

Technologie Optimus

Si votre ordinateur dispose d'un processeur graphique avec la technologie Optimus, vous devrez fabriquer un script de lancement dédié pour que FG utilise pleinement votre GPU.

Après installation des outils nécessaires (Bumblebee) vous n'aurez qu'à lancer la ligne de commande suivante à partir de votre répertoire d'installation (là où vous lancez l'excution du ./download_and_compile.sh) :

sed  's|\./fgfs|optirun ./fgfs|' run_fgfs.sh > run_fgfs_optirun.sh && chmod +x run_fgfs_optirun.sh

Maintenant vous pouvez utiliser FG avec la commande ./run_fgfs_optirun.sh


Vous disposez de la même possibilité avec le lanceur FGRUN:

sed  's|\./fgrun|optirun ./fgrun|' run_fgrun.sh > run_fgrun_optirun.sh && chmod +x run_fgrun_optirun.sh

Supprimer les messages d'anomalie (warning) pour les fichiers DDS

Vous pouvez supprimer les messages d'anomalie (warning) affichés lorsque les fichiers DDS sont parcourus par SimGear en ajoutant la ligne suivante juste après la la ligne cd "simgear":

	sed -i s/SG_ALERT,\ \"Image/SG_WARN,\ \"Image/g simgear/scene/model/ModelRegistry.cxx