Table des matières

,

GDL : GNU Data Language

GDL, c'est l'équivalent libre sous GNU/linux d'IDL. J'ai au début suivi des tutoriels pour compiler à la main les paquets et dépendances avant de me rendre compte qu'on pouvait l'installer directement. Il faut juste savoir que GDL, ça veut dire GNU Data Language, et que par conséquent, rechercher GDL dans synaptics ne renvoie pas de résultats alors que le programme s'y trouve.

La version actuelle stable est la *0.9.5* (au 15 Mai 2015).

Il y deux façons d'installer GDL sous Ubuntu : via les paquets ou via une compilation à la main. Une fois réalisé que le paquet s'appelle gnudatalanguage et non pas gdl, l'installation par paquet ne pose pas de vrais problèmes, sauf qu'il faut bien penser à ajouter le driver X11 dans plplot (aujourd'hui en version apt://plplot12-driver-xwin). L'inconvénient des paquets est qu'ils sont en décalage par rapport aux avancées constantes du développement du logiciel : nouvelles fonctionnalités et corrections de bugs … Comme de gros efforts ont été fait pour faciliter la compilation depuis le source quelque soit la version d'Ubuntu depuis 10.04, il est vivement recommander d'utiliser les sources et de faire un petit effort.

Installation via un paquet

Pour installer GDL depuis un vieux paquet pré-compilé, il vous suffit d'installer le paquet gnudatalanguage.

Un paquet optionnel mais généralement indispensable est le driver plplot d'affichage X11 ( pour pouvoir afficher les courbes dans une fenêtre [sic]) : plplot9-driver-xwin (vieux Ubuntu) ou plplot12-driver-xwin (par exemple en 14.04).

Vous pouvez aussi voir ici: les dépendances de GDL pour 14.10.

Compilation de la version 0.9.5

Tout se passe sans être root, et le make install est superflu. Il faut juste pouvoir installer des paquets "officiels" pour gagner du temps. Bien évidemment, il vous faudra peut-être trier dans les paquets manquants ou déjà installés ! Sur une machine récente avec 2 ou 4 et un SSD, compter moins de 5 minutes de compilation. (cette approche doit être transposable sans soucis à une machine sous Debian)

$ sudo apt-get install g++
$ sudo apt-get install cmake libncurses-dev libreadline-gplv2-dev \
  zlib1g-dev libpng-dev libgsl0-dev libwxbase2.8-dev \
  libplplot-dev libplplot-driver-xwin libmagick++-dev \
  libfftw3-dev libeigen3-dev pslib-dev
$ wget https://sourceforge.net/projects/gnudatalanguage/files/latest/download?source=files -O gdl-0.9.5.tgz
$ tar -zxf gdl-0.9.5.tgz
$ cd gdl-0.9.5
$ mkdir build
$ cd build
$ cmake .. -DNETCDF=off -DHDF=off -DHDF5=off -DPYTHON=off
$ cpus=`getconf _NPROCESSORS_ONLN`
$ make -j $cpus
$ make check
$ cd ..
$ sh ./quick_start_GDL.sh

Compilation de la version 0.9.5 CVS

Une fois la version vanilla 0.9.5 installée, il devient trivial de récupérer le CVS et de le compiler. Un des très grands intérêts du CVS actuel tient dans les progrès très significatifs pour les Widgets (apt-get install libwxbase2.8-dev si nécessaire !)

Script de Compilation a minima

Un petit script automatisé permet de compiler a minima GDL, ce qui permet de tester les fonctionnalités centrales de GDL (interpréteur, affichage). Ce script a été écrit dans l'esprit d'être aussi robuste que possible, même sous OSX ou MSwin ou de très vieux GNU/Linux (e.g. Mandriva 2009 ou Suse10). De nombreuses options (usage de FFTw pour le FFT) ou optimisations (usage de Eigen3 pour les opérations matricielles) de GDL y sont désactivés mais cela permet de tester à moindre frais la version récente de l'interpréteur pour des utilisateurs dubitatifs.

Il n'y a eu à ce jour aucun retour négatif sous Ubuntu (à partir de 10.04 inclus) et Debian (sauf ajout de quelques paquets -dev-, cf tuto)

Autre exemple de compilation (obsolète)

Toute version antérieure à 0.9.5 est considérée comme obsolète. De plus, la voie configure & make a été retirée depuis 0.9.5, remplacée par la voie cmake & make. (On ne garde ces explications juste au cas - ou (il y a parfois des ruses par rapport à certains cas pointus … GDL est utilisé sur certains vieux OS pour faire tourner des pipelines extensivement testés et on peut vouloir rejouer cela …))

Compilation en utilisant la version GDL : gdl-0.9.3 et plplot 5.9.5 (préalablement déjà compiler et installer.)

$ tar -zxf gdl-0.9.3.tar.gz
$ cd gdl-0.9.3
$ ./configure --with-Magick=no --with-netcdf=no --with-hdf=no \
--with-hdf5=no --with-python=no \
--with-plplot=/CheminVersPlplot/plplot-5.9.5/COMPILATION/
$ make
$ ./src/gdl 

Ceci est évidemment transposable aux autres versions de GDL

Je considère que make install est facultatif: il est tout a fait possible de compiler le projet puis de vivre en local. Une autre solution est d'utiliser un répertoire local, ce qui permet de faire co-exister la version packagee pour Ubuntu et sa version compilee soi-meme. Il suffit de faire:

./configure [...] --prefix=/home/User/GDL/MonGDLaMoi/
make
make install

Supposons que vous ayez la version 5.9.5 de plplot, compilée à la main, dans une arborescence locale, ainsi qu'une version ad-hoc de la GSL, il suffira de faire:

tar -zxf gdl-0.9.3.tar.gz
cd gdl-0.9.3
aclocal
autoconf
automake
./configure --without-hdf5 --with-Magick=no --without-netcdf --without-hdf \
  --with-plplot=/home/visiteur/GDL/plplot-5.9.5/Compilation/  \
  --with-gsl=/home/visiteur/GDL/gsl-1.11/Compilation/

J'en ai profité pour montrer comment désactiver certaines options: ceci fait gagner un temps notable à la compilation, surtout si on ne servira jamais de ces librairies !

Si, par hasard la partie graphique ne démarrait pas convenablement, il peut être utile d'ajouter

export LD_LIBRARY_PATH=/home/visiteur/GDL/plplot-5.9.5/Compilation/lib/

(si qlq1 pouvait expliquer, et me dire comment corriger cela dans le code, j'en serais ravi !) Attention, il ne faut pas confondre ce problème-ci avec le manque du package décrit dans la partie installation.

Compilation de gdl-0.9rc4 sous Ubuntu 10.04 LTS

Il ne faut pas oublier que la compilation de GDL nécessite les paquets suivants: readline, gsl, plplot en version dev. Le paquet facultatif fftw est recommandé pour avoir une version efficace des FFT, meilleure que le code dans la GSL. Le paquet ImageMagick est facultatif mais il est vivement recommandé. Pour de simples tests, HDF et NetCDF ne sont pas vraiment indispensables ! (Si vous ne connaissez pas, passez ! En prime, ca gagnera du temps à la compilation ;-)

Assurez vous bien d'avoir installé avant le configure les versions pour développement des paquets précités (lib…-dev), sinon vous rencontrerez des difficultés lors de la compilation, et des messages parfois déconcertants..

A noter que les étapes autoconf, … ne sont plus (ne devraient plus être) nécessaires en 0.9rc4 et CVS.

Compilation de la version release.

Récupérez l'archive gdl-0.9rc4.tar.gz à l'adresse suivante : https://sourceforge.net/projects/gnudatalanguage/ .

Une fois l'archive téléchargée, la décompresser à l'aide de tar puis se placer dans le répertoire créé. Puis on passe à la préparation de la compilation avec configure.

$ tar -zxf gdl-0.9rc4.tar.gz
$ cd gdl-0.9rc4
$ ./configure --with-Magick=no --with-python=no --with-netcdf=no --with-hdf=no --with-hdf5=no

Le résultat obtenu est le suivant et permet de savoir quelles options ont été activées ou non.

 GDL - GNU Data Language
  ----- compilation options: ---------------------------
  System:              i686-pc-linux-gnu
  Installation prefix: /usr/local
  C++ compiler:        g++ -g -O2
  OpenMP support:      yes (use --with-openmp=no if your compiler does not support it)
  ----- optional libraries (consult README/INSTALL): ---
  wxWidgets:           no  (needs explicit enabling)
  Magick:              no
  NetCDF:              no
  HDF4:                no
  HDF5:                no
  FFTW:                no  (GSL version used by default)
  libproject:          no  (see also MAP_INSTALL)
  MPICH:               no  (needs explicit enabling)
  Python:              no  (see also PYTHON.txt)
  UDUNITS-2:           no  (needs explicit enabling)
  GRIB:                no  (needs explicit enabling)
  ----- notes on auxiliary files: ----------------------
  - consult MAP_INSTALL for details concerning auxiliary
    files needed for mapping support
  - SAVE and RESTORE procedures require *.pro files from
    the CMSVLIB package (see README for details)
  ------------------------------------------------------
  use 'make' to build and 'make install' to install GDL

Selon la version de votre compilateur ou de plplot, vous pouvez avoir des messages d'erreurs. Pour pouvoir compiler, il faudra ajouter des options au lancement de configure.

Si votre compilateur ne supporte pas openmp. Vous pouvez ajouter l'option suivante en lançant ./configure.

  --with-openmp=no 

Je compile avec une version 4.4.3 de gcc et openMp est supporté.

Pour vérification de votre version de gcc :

 $ gcc --version
gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3

Si vous avez une ancienne version de plplot ( antérieure à 5.9.0 ) , il vous faudra ajouter cette option.

 --enable-oldplplot  

Et enfin

$ make
$ make check

Il est normal d'avoir plusieurs FAIL dans le make check (FAIL: test_angles.pro et ainsi de suite). Pas grave: on va mettre à jour avec la version CVS, plus avancée.

Une fois que ces étapes ont été réalisées (avec succès) vous pouvez lancer gdl, un exécutable se trouve dans le répertoire src (sh ./qui).

$ pwd
/home/visiteur/GDL/gdl-0.9rc4
$ sh ./quick_start_GDL.sh 
[: 14: !=: unexpected operator
Running current GDL with ./src/pro and ./testsuite in GDL_PATH
+/home/visiteur/GDL/gdl-0.9rc4/src/pro/:+/home/visiteur/GDL/gdl-0.9rc4/testsuite/

  GDL - GNU Data Language, Version 0.9rc4

- For basic information type HELP,/INFO
- No startup file read (GDL_STARTUP/IDL_STARTUP env. var. not set). 
- Please report bugs, feature or help requests and patches at:
  https://sourceforge.net/projects/gnudatalanguage/

GDL> 

Compilation de la version CVS.

Pour la version CVS, la démarche est similaire. La seule différence est la récupération du code source.

Si vous voulez récupérer les sources pour la première fois ( ou dans un tout nouveau répertoire ) , saisissez la commande suivante, elle va créer un répertoire gdl ou se trouvera les sources.

$ cvs -z3 -d:pserver:anonymous@gnudatalanguage.cvs.sourceforge.net:/cvsroot/gnudatalanguage checkout gdl

Ou encore pour mettre à jour votre version CVS, vous vous placez dans le répertoire gdl puis la commande suivante

$ cvs -z3 -d:pserver:anonymous@gnudatalanguage.cvs.sourceforge.net:/cvsroot/gnudatalanguage update 
$ mv gdl gdl-0.9.3cvs120301conf

Les étapes suivantes sont à peu près les mêmes que pour la version release, à savoir :

$ cd gdl-0.9.3cvs120301conf
$ mkdir m4
$ autoreconf -vfi
$ ./configure --with-Magick=no --with-python=no --with-netcdf=no --with-hdf=no --with-hdf5=no

                  GDL - GNU Data Language
  ----- compilation options: ---------------------------
  System:              i686-pc-linux-gnu
  Installation prefix: /usr/local
  C++ compiler:        g++ -g -O2
  OpenMP support:      yes
  Build type:          standalone (other: Python module)
  ----- optional libraries (consult README/INSTALL): ---
  wxWidgets:           no  (needs explicit enabling)
  Magick:              no
  NetCDF:              no
  HDF4:                no
  HDF5:                no
  FFTW:                yes
  libproject:          no  (see also MAP_INSTALL)
  MPICH:               no  (needs explicit enabling)
  Python:              no  (see also PYTHON.txt)
  UDUNITS-2:           no  (needs explicit enabling)
  GRIB:                no  (needs explicit enabling)
  ----- notes on auxiliary files: ----------------------
  - consult MAP_INSTALL for details concerning auxiliary
    files needed for mapping support
  - SAVE and RESTORE procedures require *.pro files from
    the CMSVLIB package (see README for details)
  ------------------------------------------------------
----- note on OpenMP support -------------------------
 OpenMP was autodetected, use --with-openmp=no if your
 compiler does not support it (e.g. GCC < 4.2)
------------------------------------------------------
  use 'make' to build and 'make install' to install GDL
  (optional 'make check' tests the build - experimental)

$ make
$ make check

Au jour d'aujourd'hui, il y a 3 FAIL: l'un est anecdotique, l'autre remonte apparemment une erreur d'arrondi qui n'avait pas été constatée par ailleurs (CentOS ou OSX). Le dernier FAIL est plus subtil, étant lié à la représentation des ULONG64 sur des machines 32 et 64 bits. Ne pas s'en soucier.

Pour les problèmes dus aux anciennes versions de gcc et de plplot ne pas oublier les options à passer à configure. ( voir compilation de la version release )

Compilation de gdl-0.9rc3 sous 9.04

Faisons l'hypothèse que la version pré-compilée a déjà été installée. Ceci évitera de devoir ajouter une a une les librairies (fftw, gsl, …).

On récupère le TGZ de la 0.9rc3 sur Sourceforge …

En general, la ligne directe doit suffire …

tar -zxf gdl-0.9rc3.tar.gz
cd gdl-0.9rc3
./configure
make

Cependant, il semble (du moins sur mon U 9.04 a moi) que le configure de GDL manque les FFTw, rangées sous /usr. Je m'en suis sorti en faisant:

tar -zxf gdl-0.9rc3.tar.gz
cd gdl-0.9rc3
autoreconf
./configure --with-fftw=/usr
make

Dans ce cas, a la fin du configure, quelques lignes donnent des informations importantes sur les librairies effectivement utilisées:

[...]
                GDL - GNU Data Language
  ----- compilation options: ---------------------------
  System:              i686-pc-linux-gnu
  Installation prefix: /home/alaingdl/GDL/CurrentGDL
  C++ compiler:        g++ -g -O2
  ----- optional libraries (consult README/INSTALL): ---
  wxWidgets:           no  (needs explicit enabling)
  Magick:              no
  NetCDF:              no
  HDF4:                no
  HDF5:                no
  FFTW:                yes
  libproject:          no  (see also MAP_INSTALL)
  MPICH:               no  (needs explicit enabling)
  Python:              no  (see also PYTHON.txt)
  UDUNITS-2:           no  (needs explicit enabling)
  ----- notes on auxiliary files: ----------------------
  - routines implemented in GDL are located in src/pro/,
    use GDL_PATH env. variable to inform GDL about their
    location (files not installed by 'make install')
  - consult MAP_INSTALL for details concerning auxiliary
    files needed for mapping support
  - SAVE and RESTORE procedures require *.pro files from
    the CMSVLIB package (see README for details)
  ------------------------------------------------------
  use 'make' to build and 'make install' to install GDL

après un appel ou je désactive pas mal de trucs :

./configure  --with-gsldir=/home/alaingdl/GDL/gsl-1.12/Compilation/
             --with-Magick=no --with-netcdf=no --with-hdf=no --with-hdf5=no 
             --with-python=no 
             --with-fftw=/usr/
             --prefix=/home/alaingdl/GDL/CurrentGDL/

Configuration (proposition de nouvelle version)

Ensuite, il faut définir les variables d'environnements de GDL. Il y a deux variables GDL_PATH et GDL_STARTUP. Pour des raisons de compatibilité avec le langage IDL, si ces variables ne sont pas fournies, GDL va aussi considérer IDL_PATH et IDL_STARTUP.

GDL_PATH indique les chemins vers les programmes (fichiers ASCII généralement de suffixe .pro).

######### Variables d'environnements pour GDL ############
export GDL_PATH=~/Chemin/Relatif/lib1:+/Chemin/Absolu/routines2:.

Le petit "+" veut dire qu'on va considérer récursivement tous les sous-répertoires …

Ces programmes peuvent former de vastes bibliothèques, telles Astron ou SolarSoft, ou de petits outils très connus MPFIT. Ces programmes, écris en syntaxe IDL, sont plus ou moins bien gérés par GDL. Depuis les versions 0.9pre, la plupart des problèmes ont été réglés.

Bien évidemment, aussi bien GDL_PATH que GDL_STARTUP peuvent être stockées dans un fichier lu au démarrage, tel ~/.bashrc sous bash.

S'il est absent, le sous répertoire caché ~/.gdl est automatiquement cree dans les dernières versions de GDL afin d'y stocker un historique des commandes (par défaut, 20 lignes) dans un fichier ASCII de nom history.

Configuration (ancienne version)

J'ai mis du temps à comprendre et trouver comment il fallait faire, ma méthode n'est en aucun cas la meilleure vu qu'apparemment je définis à chaque démarrage d'une console les variables au lieu qu'elles soient créées une bonne fois pour toute, mais ça a le mérite de marcher.

J'ai donc créé un répertoire .gdl (dossier caché donc, en raison du point, comme tout les dossiers de configuration) dans mon répertoire utilisateur. Dans ce répertoire, j'ai créé un fichier startup qui me sert à définir les commandes à exécuter au démarrage de GDL. Pour le moment, le fichier est vide, mais quand je saurais quoi mettre dedans, je pourrais le faire facilement (peut-être qu'il faut les droits d'exécutions au fichier).

J'ai créé dans le dossier .gdl deux sous dossiers, lib et routines dans lesquels je stocke les *.pro que j'ai récupéré ici et là et qui me permettent de compléter mon utilisation de GDL.

Maintenant, pour créer les variables d'environnements, j'ai rajouté les lignes suivantes à mon fichier ~/.bashrc :

######### Variables d'environnements pour GDL ############
export GDL_PATH=~/.gdl/lib:~/.gdl/routines
export GDL_STARTUP=~/.gdl/startup

Voir aussi


Contributeurs : Autiwa, AlainGDL, LeaGDL.