Faire le Projet GL sur une machine personnelle : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(outils de base)
(Installation de l'arborescence globale du projet)
 
(35 révisions intermédiaires par 7 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{Attention|cette page est en chantier}}
+
Cette page a pour but de vous aider à installer un environnement de développement, sous Linux, pour le [[Projet GL]] de l'Ensimag, 2ème année. Le projet devrait marcher sans trop d'effort sous Mac OS X (n'hésitez pas à remonter les problèmes que vous rencontrez à vos enseignants et/ou à mettre à jour cette page). Faire marcher le projet sous Windows serait bien plus compliqué en revanche (le projet utilise des scripts shell en plus de Java, ils marcheraient peut-être avec Mingw), il est sans doute plus simple d'installer Linux que de faire le portage.
  
À faire pour 2014 :
+
Pour le projet « Projet GL Apprentissage », les instructions s'appliquent en adaptant l'arborescence globale : /matieres/4MMPGL/GL/global en 2A étudiant, /matieres/3MM1PGL/global en 1A apprentissage.
  
* Installation de netbeans (version packagée Ubuntu cassée => installation manuelle recommandée, 7.3 exactement nécessaire pour ANTLR : https://netbeans.org/downloads/7.3/index.html )
+
= Installation des outils (Java, Git, ...) =
* Installation de ima (recompilation ou utilisation d'une version pré-compilée)
+
* Installation des outils
+
 
+
Cette page a pour but de vous aider à installer un environnement de développement, sous Linux, pour le projet GL de l'Ensimag, 2ème année.
+
 
+
Pour le projet « Projet GL Apprentissage », les instructions s'appliquent en adaptant :
+
 
+
* L'arborescence globale : /usr/local/PCas/Global
+
* Le nom du responsable
+
* Le nom de la machine : ensisun ou telesun à la place d'ensibm
+
* Le nom du répertoire de travail : Cas au lieu de Projet_GL
+
* Le nom de la variable d'environnement : <code>$CAS_GLOBAL</code> au lieu de <code>$GL_GLOBAL</code>
+
 
+
= Installation des outils (Ada, Git, ...) =
+
  
 
Nous allons tout d'abord installer les outils nécessaires au projet. Si ces outils sont déjà installés sur votre machine, vous n'avez rien à faire.
 
Nous allons tout d'abord installer les outils nécessaires au projet. Si ces outils sont déjà installés sur votre machine, vous n'avez rien à faire.
Ligne 23 : Ligne 9 :
 
== Sous Mac OS X : Outils pour développeurs Apple ==
 
== Sous Mac OS X : Outils pour développeurs Apple ==
 
Si vous travaillez sous Mac pensez à installer les outils pour développeur Apple, soit en les téléchargeant soit à partir du DVD d'installation de Mac OS X.
 
Si vous travaillez sous Mac pensez à installer les outils pour développeur Apple, soit en les téléchargeant soit à partir du DVD d'installation de Mac OS X.
 +
 +
Il faut notamment modifier le fichier pom.xml comme indiqué sur cette page [[Questions fréquentes avec Maven pour le projet GL#tools-jar]], afin de faire pointer correctement maven vers le fichier tools.jar.
 +
 +
Quelques conseils spécifiques pour OS X sont disponibles sur la page [[Projet GL sous Mac OS X]] .
  
 
== Installation de Java ==
 
== Installation de Java ==
  
Une installation de Java quelconque fera l'affaire. Il vous faudra au minimum Java 1.6, et il est fortement recommandé d'utiliser Java 1.7. Selon la distribution, un <code>apt-get install openjdk-7-jdk</code> ou un <code>yum install java-1.7.0-openjdk</code> devrait installer tout cela. Sinon, on peut télécharger Java sur [http://www.oracle.com/technetwork/java/javase/downloads/index.html le site d'Oracle] ou bien sur celui [http://openjdk.java.net/install/ d'OpenJDK].
+
Une installation de Java quelconque fera l'affaire. Il vous faudra au minimum Java 1.8. Selon la distribution, un <code>apt-get install openjdk-8-jdk</code> ou un <code>yum install java-1.8.0-openjdk</code> devrait installer tout cela. Sinon, on peut télécharger Java sur [http://www.oracle.com/technetwork/java/javase/downloads/index.html le site d'Oracle] ou bien sur celui [http://openjdk.java.net/install/ d'OpenJDK].
 +
Pour vérifier la version java utilisé actuellement sur la machine: <code> javac -version </code>. Après installation, il peut être nécessaire de faire <code> sudo update-alternatives --config javac </code> pour choisir la bonne version de java.
  
 
== Installation de Netbeans ==
 
== Installation de Netbeans ==
  
Les versions packagées pour Ubuntu et Debian sont en général cassées (le gestionnaire de plugins ne marche pas). Il est fortement recommandé de faire une installation manuelle. Pour pouvoir utiliser le plugin ANTLRWorks, il faut une version 7.3 exactement (ni 7.3.1 ni 7.4 ne marchent avec ANTLRWorks 2, seule version disponible en novembre 2013). Suivre les instructions depuis cette page : https://netbeans.org/downloads/7.3/index.html
+
Les versions packagées pour Ubuntu et Debian sont en général cassées (le gestionnaire de plugins ne marche pas). Il est fortement recommandé de faire une installation manuelle. Pour pouvoir utiliser le plugin ANTLRWorks, il faut la version '''8.0.1''', ni au-dessus, ni en-dessous.  
 +
En effet, une version 8.0.2 (la plus récente à ce jour) vous donnera une erreur à l'installation du plugin ANTLRWorks (http://plugins.netbeans.org/plugin/53652/antlrworks-2).
 +
 
 +
Suivre les instructions de téléchargement et d'installation depuis cette page : https://netbeans.org/downloads/8.0.1/
 +
 
 +
Pour plus de confort, sous Linux, n'hésitez pas à ajouter le chemin vers les binaires netbeans à votre PATH. Il suffit d'ajouter <code> export export PATH="/chemin/vers/dossier/netbeans-8.0.1/bin:$PATH"</code>
 +
 
 +
== Installation du plugin ANTLRWorks pour Netbeans ==
 +
 
 +
Pour avoir la coloration syntaxique dans les fichiers .g4 (grammaires ANTLRv4), installez le plugin ANTLRWorks disponible dans les plugins officiels de Netbeans :
 +
 
 +
* Lancer netbeans
 +
 
 +
* Dans le « Tools », choisir « Plugins »
 +
 
 +
* Onglet « available plugins », choisir « ANTLRWorks editor », puis bouton « install » et se laisser guider.
  
 
== Installation de Maven ==
 
== Installation de Maven ==
Ligne 37 : Ligne 43 :
  
 
Installer Maven manuellement est très facile : il suffit de télécharger une archive « Binary » depuis cette page http://maven.apache.org/download.cgi, d'extraire l'archive et de placer le répertoire <code>bin/</code> au début de votre $PATH. Pour plus de détails, voir par exemple [http://johnathanmarksmith.com/linux/java/maven/programming/project%20management/2013/04/18/how-to-install-maven-on-fedora-centos-red-hat-and-scientific-linux/ cette page] si nécessaire.
 
Installer Maven manuellement est très facile : il suffit de télécharger une archive « Binary » depuis cette page http://maven.apache.org/download.cgi, d'extraire l'archive et de placer le répertoire <code>bin/</code> au début de votre $PATH. Pour plus de détails, voir par exemple [http://johnathanmarksmith.com/linux/java/maven/programming/project%20management/2013/04/18/how-to-install-maven-on-fedora-centos-red-hat-and-scientific-linux/ cette page] si nécessaire.
 +
 +
Une autre option est d'utiliser le Maven distribué avec Netbeans (netbeans/java/maven/bin/mvn).
  
 
== Installation de Git ==
 
== Installation de Git ==
Ligne 42 : Ligne 50 :
 
Votre distribution contient probablement [[Git]], et il suffira probablement d'un <code>apt-get install git-core gitk</code>, <code>yum install git</code>, ...
 
Votre distribution contient probablement [[Git]], et il suffira probablement d'un <code>apt-get install git-core gitk</code>, <code>yum install git</code>, ...
  
Sous Mac téléchargez la dernière version de Git depuis http://code.google.com/p/git-osx-installer/ puis ouvrez <code>git-*-intel-leopard.dmg</code> et suivez les indications de l'utilitaire.
+
Sous Mac téléchargez la dernière version de Git depuis https://git-scm.com/download/mac puis suivez les indications de l'utilitaire.
  
 
= Installation de l'environnement du projet =
 
= Installation de l'environnement du projet =
Ligne 49 : Ligne 57 :
 
== Clés SSH ==
 
== Clés SSH ==
  
Vous devez dans un premier temps récupérer la clé privée qui vous permettra d'accéder au dépôt sur ensibm :
+
Vous devez dans un premier temps récupérer la clé privée qui vous permettra d'accéder au dépôt :
  
  laptop> rsync --chmod=go-rwx monlogin@ensibm.imag.fr:/usr/local/GL/Keys/'$LOGNAME' ~/.ssh/id_projet_gl
+
  rsync --chmod=go-rwx monlogin@pcserveur.ensimag.fr:/matieres/4MMPGL/GL/keys/'$LOGNAME' ~/.ssh/id_projet_gl
  
(en remplaçant bien entendu <code>monlogin</code> par votre login sur ensibm)
+
(en remplaçant bien entendu <code>monlogin</code> par votre login Ensimag)
  
 
Il faut ensuite dire à SSH d'utiliser cette clé. Cela peut se faire en créant un fichier <code>~/.ssh/config</code> sur la machine depuis laquelle vous vous connectez, avec le contenu suivant :
 
Il faut ensuite dire à SSH d'utiliser cette clé. Cela peut se faire en créant un fichier <code>~/.ssh/config</code> sur la machine depuis laquelle vous vous connectez, avec le contenu suivant :
  
  Host ensibm.imag.fr
+
  Host depots.ensimag.fr
 
  IdentityFile ~/.ssh/id_projet_gl
 
  IdentityFile ~/.ssh/id_projet_gl
  
Si vous utilisiez déjà une clé pour vous connecter à votre propre compte ensibm, vous pouvez au choix :
+
Si vous utilisiez déjà une clé pour vous connecter à votre propre compte Ensimag, vous pouvez au choix :
 
* utiliser <code>ssh-agent</code> et <code>ssh-add</code> sur cette clé. SSH va essayer toutes les clés actives dans l'agent avant d'essayer id_projet_gl.
 
* utiliser <code>ssh-agent</code> et <code>ssh-add</code> sur cette clé. SSH va essayer toutes les clés actives dans l'agent avant d'essayer id_projet_gl.
* Ajouter plusieurs lignes <code>IdentityFile</code> derrière <code>Host ensibm.imag.fr</code>, ssh va les essayer en séquence. Par exemple, si votre clé habituelle est <code>id_rsa</code> :
+
* Ajouter plusieurs lignes <code>IdentityFile</code> derrière <code>Host depots.ensimag.fr</code>, ssh va les essayer en séquence. Par exemple, si votre clé habituelle est <code>id_rsa</code> :
  
  Host ensibm.imag.fr
+
  Host depots.ensimag.fr
 
  IdentityFile ~/.ssh/id_projet_gl
 
  IdentityFile ~/.ssh/id_projet_gl
 
  IdentityFile ~/.ssh/id_rsa
 
  IdentityFile ~/.ssh/id_rsa
  
En dernier recours (en principe, ce n'est ''jamais'' nécessaire), transmettre la clé publique à Matthieu.Moy@imag.fr, avec un sujet de message explicite du genre « clé publique supplémentaire, équipe glxx ».
+
En dernier recours, demander de l'aide à votre enseignant.
  
 
Pour plus d'information, lire l'article du wiki sur les [[Clés SSH]].
 
Pour plus d'information, lire l'article du wiki sur les [[Clés SSH]].
Ligne 74 : Ligne 82 :
 
== Installation de l'arborescence globale du projet ==
 
== Installation de l'arborescence globale du projet ==
  
Récupérez l'arborescence /usr/local/GL/Global/ sur ensibm. Dans l'exemple, on installe l'arborescence dans ~/ensimag, mais vous pouvez bien sûr adapter :
+
Récupérez l'arborescence GL/global/ de l'Ensimag sur votre machine. Dans l'exemple, on installe l'arborescence dans ~/ensimag, mais vous pouvez bien sûr adapter :
  
  laptop:~$ mkdir ensimag; cd ensimag; mkdir GL; cd GL
+
  laptop:~$ mkdir -p ensimag/GL; cd ensimag/GL
laptop:~/ensimag/GL$ export GL_GLOBAL=$HOME/ensimag/GL/Global
+
  laptop:~/ensimag/GL$ git clone ssh://votrelogin@pcserveur.ensimag.fr/matieres/4MMPGL/GL/global/ global
  laptop:~/ensimag/GL$ git clone login@ensibm.imag.fr:/usr/local/GL/Global/ Global/
+
Vérifiez que la commande <code>ima</code> fonctionne :
laptop:~/ensimag/GL$ cd Global/Sources
+
laptop:~/ensimag/GL/Global/Sources$ make
+
  
La dernière commande devrait compiler aflex, ayacc, et ima sur votre machine.
+
laptop:~/ensimag/GL$ ./global/bin/ima -v
 +
 
 +
Si ce n'est pas le cas, vous pouvez recompiler ima sur votre machine comme ceci (la version fournie devrait fonctionner sur architecture Intel 32 ou 64 bits, sous Linux ou Mac OS X) :
 +
 
 +
laptop:~/ensimag/GL$ cd global/sources
 +
laptop:~/ensimag/GL/global/sources$ make
 +
 
 +
Si après avoir exéctuer make, la commande "gnatmake" n'est pas reconnue, c'est que vous devez récupérer la package ADA pour GCC (gcc-ada).
 +
 
 +
La dernière commande devrait compiler aflex, ayacc (qui sont nécessaires pour compiler ima), et ima sur votre machine.
  
 
Si des bugs sont trouvés et corrigés dans l'arborescence globale en cours de projet, il faudra simplement faire :
 
Si des bugs sont trouvés et corrigés dans l'arborescence globale en cours de projet, il faudra simplement faire :
  
  laptop:~$ cd ~/ensimag/GL/Global
+
  laptop:~$ cd ~/ensimag/GL/global
  laptop:~/ensimag/GL/Global$ git pull
+
  laptop:~/ensimag/GL/global$ git pull
laptop:~/ensimag/GL/Global$ cd Sources
+
laptop:~/ensimag/GL/Global/Sources$ make
+
  
pour récupérer ces corrections.
+
pour récupérer ces corrections (et si vous aviez eu besoin de recompiler ima, vous devrez recompiler à nouveau)
  
 
== Configuration de votre compte ==
 
== Configuration de votre compte ==
Ligne 99 : Ligne 112 :
 
* sous Mac il s'agit de ~/.bash_profile
 
* sous Mac il s'agit de ~/.bash_profile
  
* Positionnez la variable GL_GLOBAL sur le répertoire ~/ensimag/GL/Global
 
 
  export GL_GLOBAL="$HOME/ensimag/GL/Global"
 
  
 
* Modifier la variable PATH (à la FIN du fichier .bashrc) :
 
* Modifier la variable PATH (à la FIN du fichier .bashrc) :
 
+
<pre>
  export PATH="$GL_GLOBAL/Bin:$HOME/Projet_GL/Exec:$PATH"
+
export PATH=$HOME/ensimag/GL/global/bin:$PATH
 +
</pre>
 +
Vous aurez bien sûr besoin d'appliquer les autre consignes données dans <code>[SeanceMachine]</code> pour avoir les répertoires de votre projet dans le $PATH. <code>$HOME/ensimag/GL/global/bin</code> remplace simplement <code>~moy/GL/global/bin/</code>.
  
 
Une fois ces opérations effectuées, il faut demander à votre shell de relire le fichier .bashrc (sinon, les modifications ne seront effectives qu'au prochain démarrage du shell) :
 
Une fois ces opérations effectuées, il faut demander à votre shell de relire le fichier .bashrc (sinon, les modifications ne seront effectives qu'au prochain démarrage du shell) :
Ligne 111 : Ligne 123 :
 
   $ . ~/.bashrc
 
   $ . ~/.bashrc
  
* Récupérer le <code>~/.gitconfig</code> créé pendant la séance machine. Par exemple :
+
* Récupérer le <code>~/.gitconfig</code> créé pendant la séance machine si vous n'en avez pas déjà un sur votre machine. Par exemple :
  
   rsync -v ensibm.imag.fr:.gitconfig ~/.gitconfig
+
   rsync -v pcserveur.ensimag.fr:.gitconfig ~/.gitconfig
  
Il est recommandé de refaire les vérifications indiquées dans <code>$GL_GLOBAL/Doc/Seance_Machine.ps</code>
+
Il est recommandé de refaire les vérifications indiquées dans <code>[SeanceMachine]</code>
  
Les résultats peuvent être légèrement différents : sur Debian (de même sous Cygwin), on obtient, par exemple :
+
Les résultats peuvent être légèrement différents : sur Debian, on obtient, par exemple :
  
  $ which make
+
$ which mvn
  /usr/bin/make
+
/usr/bin/mvn
  $ which adabody
+
$ which java
  /home/moy/ensimag/GL/Global/Bin/adabody
+
/usr/bin/java
  $ which gnatmake
+
 
  /usr/bin/gnatmake
+
La commande <code>which ima</code> doit renvoyer quelque chose comme <code>$HOME/ensimag/GL/global/bin/ima</code> selon l'endroit où vous avez installé <code>ima</code>.
  
 
== Création du répertoire Projet_GL par rapatriement depuis l'archive ==
 
== Création du répertoire Projet_GL par rapatriement depuis l'archive ==
  
Il faut évidemment que la clé de connexion SSH soit admise sur le compte glxx de l'équipe (cf. section [[#clessh]]). On fait (comme dans <code>Seance_Machine</code>) :
+
Il faut évidemment que la clé de connexion SSH soit admise sur le compte depotglXX de l'équipe (cf. section [[#clessh]]). On fait (comme dans <code>[SeanceMachine]</code>) :
  
 
   $ cd
 
   $ cd
   $ git clone ssh://glXX@ensibm.imag.fr/~/git/ Projet_GL
+
   $ git clone ssh://depotglXX@depots.ensimag.fr/~/git/ Projet_GL
 
+
=== Spécificités Cygwin ===
+
 
+
'''Cette section n'a pas été mise à jour depuis longtemps, il est probable que les infos ne soient plus d'actualité.'''
+
 
+
Sous Cygwin : le make risque de vous montrer beaucoup de message de log pour les supprimer, il suffit de le lancer en mode -s
+
 
+
make -s
+
 
+
Par ailleurs, gcov (cf. Gcov.txt) n'a pas l'air de marcher avec GNAT sous Cygwin (erreur au link, probablement un bug de certaines versions de gnatlink quand on l'appelle avec des noms de fichiers longs).
+
  
 
<div id="debug">
 
<div id="debug">
 
== Débugger de l'Ada ==
 
Les commandes pour débugger de l'ada sont disponible sur [[Debugger_un_programme_Ada_(gdb,_ddd,_Emacs)]]. Cependant, il se peut que sous certaines machines cela ne marche pas. Si vous obtenez un message d'erreur de type "Unable to insert catchpoint. Try to start the program first." quand vous faites "catch exception", ce paragraphe vous concerne.
 
 
Le problème est dans le gcc des distributions récentes. Si vous savez pourquoi et ce qu'il faut faire pour le corriger, n'hésitez pas à éditer cette page. En attendant, un workaround est de réinstaller gcc. Pour cela, récupérez les sources de la dernière version sur http://gcc.gnu.org/ (pas besoin de tout gcc, seul gcc-core et gcc-ada suffisent), extrayez les dans le même dossier, puis faites :
 
 
  ./configure --prefix=/usr/local/bin --enable-languages=ada
 
 
si vous ne voulez que l'ada, une liste de langages parmi ada, c, c++, java, objc et fortran séparée par des virgules sinon. Ensuite, l'habituel make et make install en root. Prévoyez du temps (une bonne heure) et de la place (entre 1 et 2 gigas en fonction des langages que vous choisissez). Il suffit ensuite de recompiler le projet et le monde merveilleux des breakpoints s'ouvrira à vous.
 
 
=== Afficher les détails des exceptions sans recompiler gcc (si adadebug ne marche pas) ===
 
 
'''Réponse courte:''' Si '''adadebug''' ne marche pas, utiliser '''adastack''' qui fait la même chose.
 
 
'''Réponse longue:''' Certaines personnes peuvent trouver que recompiler gcc est un peu lourd. Si votre version de GCC ne marche pas avec gcov, il existe une autre solution qui exploite les fonctions du paquet <code>Ada.Exceptions</code>.
 
 
Le Makefile fourni compile avec les options <code>-bargs -E</code>, qui a pour effet d'afficher la pile d'exécution quand une exception non-rattrapée arrive. Pour les exceptions rattrapées, on peut toujours afficher la pile avec du code comme celui-ci :
 
 
<pre>
 
with Ada.Text_IO, Ada.Exceptions; -- Ne pas oublier Ada.Exceptions
 
use Ada.Text_IO, Ada.Exceptions;
 
 
procedure LeverException is
 
  Mon_Exception : Exception;
 
begin
 
  raise Mon_Exception;
 
exception
 
  when E : others =>
 
    Put_Line ("Exception levee !");
 
    Put_Line (Exception_Information (E)); -- Tout se passe ici
 
end LeverException;
 
</pre>
 
 
Ada ne va afficher qu'une suite d'adresses en hexadecimal, mais le script adastack fourni dans l'arborescence globale du projet traduit ceci en fichiers, en utilisant <code>addr2line</code>. Il suffit pour l'utiliser de préfixer la commande que vous lancez avec le nom du script. Exemple :
 
adastack mon_programme_ada fichier1
 
Le script va lancer le programme et appellera si besoin addr2line avec les bons paramètres pour afficher la pile d'appels.
 
 
<!--
 
On n'utilise plus SVN, donc plus Tortoise SVN. Les aventureux pourront tenter Tortoise Git ou Git Extension, mais ce sont des outils récents et probablement pas très stables (je n'ai jamais essayé). Il est possible que quelques phrases de ce texte s'appliquent toujours, je garde en commentaire au cas où. --~~~~
 
 
== Tortoise SVN ==
 
 
{{...}}
 
 
Pour ceux qui travaillent sous Windows et qui veulent utiliser un client SVN graphique, [http://tortoisesvn.tigris.org/ TortoiseSVN] est sans doute le plus populaire. [[Utilisateur:Moy|Je]] n'utilise ni windows, ni Tortoise, donc je ne peux pas aider beaucoup, mais tortoise peut marcher avec des clés SSH. Quelques pistes (ceux qui ont utilisé TortoiseSVN avec succès sont les bienvenus pour donner des explications plus précises) :
 
 
* http://www.google.com/search?q=tortoise+svn+ssh+key
 
* http://tortoisesvn.net/ssh_howto
 
* Témoignage d'un étudiant :
 
 
pour SSH, j'ai finalement réussi à résoudre
 
partiellement le problème : impossible de faire un checkout depuis mon
 
ordinateur, mais en l'ayant fait directement sur ensibm et en récupérant le
 
dossier sur mon ordinateur (donc avec les infos suberversion) j'arrive à
 
commit,update...etc, à condition d'avoir Pageant (pour utiliser la bonne clé
 
RSA). Bref, solution ad-hoc, mais elle semble marcher.
 
 
 
* TortoiseSVN utilise PuTTY pour tout ce qui concerne SSH. Toutes les manipulations sont disponibles sur la page [[Putty]]. Voici la marche à suivre pour récuperer votre projet depuis votre ordinateur.
 
 
# Récupérez la clé privée d'ensibm sur votre ordinateur (c'est le plus simple). Elle se trouve dans le fichier id_rsa (ou id_projet_gl, et dans tous les cas, c'est un fichier qui ne termine ''pas'' par .pub) dans le dossier .ssh dans la racine de votre compte.
 
# Convertissez celle-ci en une clé utilisable par PuTTY.
 
# Dans ''Host Name'', saisissez gl42@ensibm.imag.fr (en remplaçant 42 par votre numéro de groupe)et créez vous un profil utilisant cette clé.
 
#* '''Attention''', le nom du profil doit impérativement être '''ensibm.imag.fr''', sans quoi TortoiseSVN ne marchera pas.
 
# Essayez de vous connecter via PuTTY avec ce profil :
 
#* Votre clé doit normalement être reconnue, et à part si vous avez une passphrase, rien ne doit vous être demandé.
 
#* Notez qu'il est normal de se faire déconnecter, car les comptes du Projet GL ne sont accessibles qu'avec SVN+SSH.
 
# Vous pouvez maintenant vous créer un dossier pour le Projet GL et faire un checkout avec un simple clic droit. Entrez svn+ssh://gl42@ensibm.imag.fr/home/projetgl/gl42/SVN-REPO/ comme ''URL of repository'' en remplaçant 42 par votre numéro de groupe.
 
# Si vous n'avez pas de passphrase, il n'y aura aucun problème. Dans le cas contraire votre passphrase vous sera peut-être demandée plusieurs fois avant de pouvoir faire chaque opération.
 
-->
 
  
 
= Problèmes et solutions =
 
= Problèmes et solutions =
  
== gcov affiche un message de problème de version et fait un out of memory ==
+
« S'il n'y a pas de solution, c'est qu'il n'y a pas de problème »
 
+
Si vous travaillez sur votre machine personnelle, il se peut que vous rencontriez un message du type :
+
 
+
<pre>
+
$ gcov Syntaxe/Src/lexical.adb
+
Syntaxe/Src/lexical.gcno:version '406*', prefer '407*'
+
 
+
gcov: out of memory allocating 14156016440 bytes after a total of 135168 bytes
+
</pre>
+
 
+
La raison vient d'une utilisation de gnatmake différente de celle de gcov. Dans l'exemple, gnatmake utilise gcc-4.6 pour faire les compilations et la commande gcov réfère à la version 4.7.
+
Mais en principe, si gcc-4.6 est installé pour les besoins de gnatmake, il y a de fortes chances pour que gcov-4.6 soit aussi installé. Il suffit alors d'utiliser la commande gcov-4.6 au lieu de gcov.
+
  
 
= Historique =
 
= Historique =
  
Fichier initial écrit par Matthieu MOY en janvier 2001, puis amende par Xavier NICOLLIN, destiné à aider les étudiants à installer un environnement de développement chez eux sous Linux pour le projet GL.
+
Fichier initial écrit par Matthieu MOY en janvier 2001 (ouch, ça fait un coup de vieux de relire ça maintenant ;-) ), puis amende par Xavier NICOLLIN, destiné à aider les étudiants à installer un environnement de développement chez eux sous Linux pour le projet GL.
  
 
Nous (les enseignants) ne pouvons pas tester toutes les distributions et configurations, mais les corrections pour votre distribution préférée sont les bienvenues !
 
Nous (les enseignants) ne pouvons pas tester toutes les distributions et configurations, mais les corrections pour votre distribution préférée sont les bienvenues !

Version actuelle en date du 12 janvier 2019 à 19:34

Cette page a pour but de vous aider à installer un environnement de développement, sous Linux, pour le Projet GL de l'Ensimag, 2ème année. Le projet devrait marcher sans trop d'effort sous Mac OS X (n'hésitez pas à remonter les problèmes que vous rencontrez à vos enseignants et/ou à mettre à jour cette page). Faire marcher le projet sous Windows serait bien plus compliqué en revanche (le projet utilise des scripts shell en plus de Java, ils marcheraient peut-être avec Mingw), il est sans doute plus simple d'installer Linux que de faire le portage.

Pour le projet « Projet GL Apprentissage », les instructions s'appliquent en adaptant l'arborescence globale : /matieres/4MMPGL/GL/global en 2A étudiant, /matieres/3MM1PGL/global en 1A apprentissage.

Installation des outils (Java, Git, ...)

Nous allons tout d'abord installer les outils nécessaires au projet. Si ces outils sont déjà installés sur votre machine, vous n'avez rien à faire.

Sous Mac OS X : Outils pour développeurs Apple

Si vous travaillez sous Mac pensez à installer les outils pour développeur Apple, soit en les téléchargeant soit à partir du DVD d'installation de Mac OS X.

Il faut notamment modifier le fichier pom.xml comme indiqué sur cette page Questions fréquentes avec Maven pour le projet GL#tools-jar, afin de faire pointer correctement maven vers le fichier tools.jar.

Quelques conseils spécifiques pour OS X sont disponibles sur la page Projet GL sous Mac OS X .

Installation de Java

Une installation de Java quelconque fera l'affaire. Il vous faudra au minimum Java 1.8. Selon la distribution, un apt-get install openjdk-8-jdk ou un yum install java-1.8.0-openjdk devrait installer tout cela. Sinon, on peut télécharger Java sur le site d'Oracle ou bien sur celui d'OpenJDK. Pour vérifier la version java utilisé actuellement sur la machine: javac -version . Après installation, il peut être nécessaire de faire sudo update-alternatives --config javac pour choisir la bonne version de java.

Installation de Netbeans

Les versions packagées pour Ubuntu et Debian sont en général cassées (le gestionnaire de plugins ne marche pas). Il est fortement recommandé de faire une installation manuelle. Pour pouvoir utiliser le plugin ANTLRWorks, il faut la version 8.0.1, ni au-dessus, ni en-dessous. En effet, une version 8.0.2 (la plus récente à ce jour) vous donnera une erreur à l'installation du plugin ANTLRWorks (http://plugins.netbeans.org/plugin/53652/antlrworks-2).

Suivre les instructions de téléchargement et d'installation depuis cette page : https://netbeans.org/downloads/8.0.1/

Pour plus de confort, sous Linux, n'hésitez pas à ajouter le chemin vers les binaires netbeans à votre PATH. Il suffit d'ajouter export export PATH="/chemin/vers/dossier/netbeans-8.0.1/bin:$PATH"

Installation du plugin ANTLRWorks pour Netbeans

Pour avoir la coloration syntaxique dans les fichiers .g4 (grammaires ANTLRv4), installez le plugin ANTLRWorks disponible dans les plugins officiels de Netbeans :

  • Lancer netbeans
  • Dans le « Tools », choisir « Plugins »
  • Onglet « available plugins », choisir « ANTLRWorks editor », puis bouton « install » et se laisser guider.

Installation de Maven

Maven est disponible dans Debian et Ubuntu : apt-get install maven

Installer Maven manuellement est très facile : il suffit de télécharger une archive « Binary » depuis cette page http://maven.apache.org/download.cgi, d'extraire l'archive et de placer le répertoire bin/ au début de votre $PATH. Pour plus de détails, voir par exemple cette page si nécessaire.

Une autre option est d'utiliser le Maven distribué avec Netbeans (netbeans/java/maven/bin/mvn).

Installation de Git

Votre distribution contient probablement Git, et il suffira probablement d'un apt-get install git-core gitk, yum install git, ...

Sous Mac téléchargez la dernière version de Git depuis https://git-scm.com/download/mac puis suivez les indications de l'utilitaire.

Installation de l'environnement du projet

Clés SSH

Vous devez dans un premier temps récupérer la clé privée qui vous permettra d'accéder au dépôt :

rsync --chmod=go-rwx monlogin@pcserveur.ensimag.fr:/matieres/4MMPGL/GL/keys/'$LOGNAME' ~/.ssh/id_projet_gl

(en remplaçant bien entendu monlogin par votre login Ensimag)

Il faut ensuite dire à SSH d'utiliser cette clé. Cela peut se faire en créant un fichier ~/.ssh/config sur la machine depuis laquelle vous vous connectez, avec le contenu suivant :

Host depots.ensimag.fr
IdentityFile ~/.ssh/id_projet_gl

Si vous utilisiez déjà une clé pour vous connecter à votre propre compte Ensimag, vous pouvez au choix :

  • utiliser ssh-agent et ssh-add sur cette clé. SSH va essayer toutes les clés actives dans l'agent avant d'essayer id_projet_gl.
  • Ajouter plusieurs lignes IdentityFile derrière Host depots.ensimag.fr, ssh va les essayer en séquence. Par exemple, si votre clé habituelle est id_rsa :
Host depots.ensimag.fr
IdentityFile ~/.ssh/id_projet_gl
IdentityFile ~/.ssh/id_rsa

En dernier recours, demander de l'aide à votre enseignant.

Pour plus d'information, lire l'article du wiki sur les Clés SSH.

Installation de l'arborescence globale du projet

Récupérez l'arborescence GL/global/ de l'Ensimag sur votre machine. Dans l'exemple, on installe l'arborescence dans ~/ensimag, mais vous pouvez bien sûr adapter :

laptop:~$ mkdir -p ensimag/GL; cd ensimag/GL
laptop:~/ensimag/GL$ git clone ssh://votrelogin@pcserveur.ensimag.fr/matieres/4MMPGL/GL/global/ global

Vérifiez que la commande ima fonctionne :

laptop:~/ensimag/GL$ ./global/bin/ima -v

Si ce n'est pas le cas, vous pouvez recompiler ima sur votre machine comme ceci (la version fournie devrait fonctionner sur architecture Intel 32 ou 64 bits, sous Linux ou Mac OS X) :

laptop:~/ensimag/GL$ cd global/sources
laptop:~/ensimag/GL/global/sources$ make

Si après avoir exéctuer make, la commande "gnatmake" n'est pas reconnue, c'est que vous devez récupérer la package ADA pour GCC (gcc-ada).

La dernière commande devrait compiler aflex, ayacc (qui sont nécessaires pour compiler ima), et ima sur votre machine.

Si des bugs sont trouvés et corrigés dans l'arborescence globale en cours de projet, il faudra simplement faire :

laptop:~$ cd ~/ensimag/GL/global
laptop:~/ensimag/GL/global$ git pull

pour récupérer ces corrections (et si vous aviez eu besoin de recompiler ima, vous devrez recompiler à nouveau)

Configuration de votre compte

Dans le fichier d'initialisation de votre shell :

  • si vous ne savez pas comment il s'appelle ou ce qu'il est, il s'agit sans doute de ~/.bashrc
  • sous Mac il s'agit de ~/.bash_profile


  • Modifier la variable PATH (à la FIN du fichier .bashrc) :
export PATH=$HOME/ensimag/GL/global/bin:$PATH

Vous aurez bien sûr besoin d'appliquer les autre consignes données dans [SeanceMachine] pour avoir les répertoires de votre projet dans le $PATH. $HOME/ensimag/GL/global/bin remplace simplement ~moy/GL/global/bin/.

Une fois ces opérations effectuées, il faut demander à votre shell de relire le fichier .bashrc (sinon, les modifications ne seront effectives qu'au prochain démarrage du shell) :

 $ . ~/.bashrc
  • Récupérer le ~/.gitconfig créé pendant la séance machine si vous n'en avez pas déjà un sur votre machine. Par exemple :
 rsync -v pcserveur.ensimag.fr:.gitconfig ~/.gitconfig

Il est recommandé de refaire les vérifications indiquées dans [SeanceMachine]

Les résultats peuvent être légèrement différents : sur Debian, on obtient, par exemple :

$ which mvn 
/usr/bin/mvn
$ which java
/usr/bin/java

La commande which ima doit renvoyer quelque chose comme $HOME/ensimag/GL/global/bin/ima selon l'endroit où vous avez installé ima.

Création du répertoire Projet_GL par rapatriement depuis l'archive

Il faut évidemment que la clé de connexion SSH soit admise sur le compte depotglXX de l'équipe (cf. section #clessh). On fait (comme dans [SeanceMachine]) :

 $ cd
 $ git clone ssh://depotglXX@depots.ensimag.fr/~/git/ Projet_GL

Problèmes et solutions

« S'il n'y a pas de solution, c'est qu'il n'y a pas de problème »

Historique

Fichier initial écrit par Matthieu MOY en janvier 2001 (ouch, ça fait un coup de vieux de relire ça maintenant ;-) ), puis amende par Xavier NICOLLIN, destiné à aider les étudiants à installer un environnement de développement chez eux sous Linux pour le projet GL.

Nous (les enseignants) ne pouvons pas tester toutes les distributions et configurations, mais les corrections pour votre distribution préférée sont les bienvenues !

Modification pour CygWin par Laurent Belcour (2008)

Modification pour Mac OS X par Amaury Balliet (2010)

La suite dans l'historique du Wiki...