Bien démarrer avec GNUstep

Comme nous l'avons vu dans le premier article publié dans le numéro 9 de Linux Magazine France, GNUstep est l'implémentation GNU du système OPENSTEP (maintenant MacOS-X). A ce titre, il possède des utilitaires et des outils de développement s'apparentant à ceux d'OPENSTEP. Néanmoins, comme tout bon logiciel GNU, son propre système d'installation s'appuie sur le célèbre script «configure». Le présent article va vous accompagner pour installer, puis utiliser l'environnement GNUstep.

Installer GNUstep

Comme tout logiciel ou toute librairie, GNUstep exige un certain nombre de préalables pour pouvoir s'installer et s'exécuter. En voici la description, étant entendu que nous vous recommandons de consulter les documentations respectives des logiciels suivants pour leur installation :

1 GNU make 3.75. Toutes les distributions récentes de Linux en sont pourvues.

Le cas échéant, vous pourrez vous le procurer sur ftp://ftp.gnu.org/pub/gnu ou sur tous les miroirs.

2 GCC 2.8.0 ou EGCS 1.1.1. Là encore, vous disposez déjà selon toute vraisemblance, d'une version suffisamment récente. Pour vous en assurer, vous pouvez taper gcc -v (si vous utilisez GCC) ou bien export CC=egcs;$CC -v (pour EGCS) dans votre shell. Vous trouverez les dernières versions au même endroit que make.

3 Librarie TIFF v3.4b036. Disponible en standard sur toutes les distributions, vous pourrez malgré tout la récupérer sur le site ftp://alpha.gnu.org/gnu/gnustep.

De plus, les éléments suivants peuvent être utiles mais ne sont pas strictement nécessaires :

1 GDB 4.17. Nécessaire seulement si vous souhaitez déboguer un programme.

Il pourra être avantageusement accompagné du patch Objective-C disponible sur alpha.gnu.org/gnu/gnustep/contrib. Ce patch permet de prendre correctement en compte le « mangling» Objective-C et rajoute surtout un certain nombre de fonctionnalités appréciables. Ainsi patché, GDB devient capable d'appeler des méthodes sur les objets et les classes Objective-C lorsque le programme est stoppé durant une session de débogage. Par exemple, si vous tapez dans la ligne de commande de GDB l'instruction suivante :

(gdb) [[self desciption] cString]

Cela aura pour effet d'appeler la méthode description sur l'objet self (équivalent de this en C++), puis d'appeler la méthode cString sur l'objet de type NSString retourné par la méthode précédente. Vous verrez apparaître la chaîne de caractère décrivant votre objet courant. Ce fonctionnement n'est pas sans rappeler les possibilités des langages scriptés dont Objective-C est proche, tout en possédant les avantages des langages compilés. La méthodologie pour parvenir à patcher et installer GDB est la suivante :

[fredo@couette fredo]$ tar zxvf gdb-4.17.tar.gz

[fredo@couette fredo]$ gunzip gdb-4.17-objc-unoff-980505.patch.gz

[fredo@couette fredo]$ cd gdb-4.17

[fredo@couette fredo]$ patch -p1 < ../gdb-4.17-objc-unoff-980505.patch

[fredo@couette fredo]$ ./configure

[fredo@couette fredo]$ make

[fredo@couette fredo]$ su root

[fredo@couette fredo]$ make install

2 DGS : La partie ApplicationKit de GNUstep peut, si vous le souhaitez, s'appuyer sur Display Ghostscript System pour le moteur de rendu. Si tel est votre choix, vous devrez l'installer avant GNUstep. La dernière version sera la meilleure, mais il vous faut savoir que le système d'installation de DGS subit actuellement d'importants changements et est destiné avant tout aux développeurs avancés. Dernière précision, si vous utilisez un OS disposant de DPS (Display Postscript), GNUstep sera en mesure de l'utiliser. C'est par exemple le cas sur Solaris™ de SUN. Pour installer DGS, vous devez simplement exécuter la séquence de commandes suivantes :

[fredo@couette fredo]$ tar zxvf dgs-XXXXXX.tar.gz

[fredo@couette fredo]$ cd dgs-XXXXXX/dgs

[fredo@couette fredo]$ ./configure

[fredo@couette fredo]$ make

[fredo@couette fredo]$ su root

[fredo@couette fredo]$ make install

A titre d'information, seule la recompilation de GDB patché sera nécessaire sur une RedHat 6.0 et ce, uniquement si vous souhaitez utiliser GDB pour vos développements.

Enfin, il vous faut récupérer GNUstep lui-même. Pour des raisons de souplesse, GNUstep a été découpé en plusieurs morceaux :

1 gstep-make-XXXXXX.tar.gz qui contient tout le système de Makefiles propre à GNUstep.

2 gstep-base-XXXXXX.tar.gz qui contient l'implémentation de FoundationKit ainsi que certains utilitaires de base. Pour information, il est possible de remplacer ce composant par libFoundation-0.8.0.tar.gz qui est une autre implémentation de FoundationKit.

3 gstep-gui-XXXXXX.tar.gz qui contient le frontend d'ApplicationKit.

Après ces trois composants nécessaires, d'autres viennent optionnellement.

L'un d'entre eux (de préférence xgps, pour l'instant) devra être utilisé pour remplir la fonction de " backend " pour ApplicationKit :

1 gstep-xraw-XXXXXX.tar.gz qui contient le backend X11 de première génération.

Il est à présent abandonné.

2 gstep-xdps-XXXXXX.tar.gz qui contient le code permettant de faire le lien entre X11 et DGS lorsqu'on s'appuie sur ce dernier.

3 gstep-xgps-XXXXXX.tar.gz qui contient le " backend " standard actuel pour X11.

C'est l'implémentation avec laquelle vous obtiendrez les meilleurs résultats jusqu'à ce que DGS vienne à maturité.

4 gstep-w32gui-XXXXXX.tar.gz qui contient le backend Windows. En effet, GNUstep est multi plate-forme et peut fonctionner sous cet environnement pour peu que vous disposiez de CygWin32. (voir http : //www.cygnus.com. Ce backend est dans ses premières phases de développement.

Mais le plus simple reste encore de récupérer gstep-core-XXXXXX.tar.gz car cette archive regroupe tout simplement les éléments précédemment listés.

Une fois tous ces éléments rassemblés, il faut passer à la configuration de GNUstep, étape préalable à sa compilation. Attention, sur une RedHat 5.2, il est recommandé de taper la commande suivante pour activer le compilateur EGCS :

[fredo@couette fredo]$ export CC=egcs

Sur FreeBSD 3.x, il vous faudra taper :

[fredo@couette fredo]$ CONFIG_SYSTEM_LIBS=-ljpeg

Ensuite, il vous suffit de taper les commandes suivantes :

[fredo@couette fredo]$ tar zxvf gstep-core-XXXXXX.tar.gz

[fredo@couette fredo]$ cd gstep-XXXXXX

[fredo@couette fredo]$ ./configure

Certaines options peuvent être ajustées durant cette étape. Leur liste est consultable en tapant :

[fredo@couette fredo]$ ./configure—help

Par défaut, GNUstep s'installera dans /usr/GNUstep, mais vous pouvez adapter cela à votre goût en tapant par exemple :

[fredo@couette fredo]$ ./configure—prefix=/usr/local

Tout GNUstep s'installera alors dans /usr/local/GNUstep. Le répertoire GNUstep sera automatiquement créé pour vous. Après cette étape, la compilation peut être lancée, en sachant toutefois qu'il existe encore un certain nombre d'options très intéressantes :

1 debug=yes/no pour compiler en mode debug ou non.

2 shared=yes/no pour construire des librairies dynamiques ou statiques. Ces dernières sont recommandées pour déboguer ou «profiler» vos applications.

3 profile=yes/no pour compiler en mode profileur . Cette option active ou non l'option de compilation -pg de GCC nécessaire pour générer des informations de profiling utilisables par gprof. Cette option est utile si vous souhaitez travailler sur les performances de votre logiciel.

4 library_combo=gnu-xdps/gnu-xgps/... pour indiquer le backend que vous souhaitez compiler. Cette option déterminera l'utilisation de DGS ou XGPS.

Par exemple, la commande suivante compilera GNUstep avec des librairies partagées en mode «debug»:

[fredo@couette fredo]$ make shared=yes debug=yes

[fredo@couette fredo]$ su root

[fredo@couette fredo]$ make shared=yes debug=yes install

Attention, il est nécessaire de répéter les options shared=yes debug=yes au moment de l'installation à proprement parler car dans le cas contraire, le système de compilation prendra les options par défaut (shared=yes debug=no profile=no). Dernier point très utile, il est possible de lancer plusieurs fois le cycle compilation/installation en multipliant les combinaisons des quatre options indiquées ci-dessus pour disposer différentes versions des librairies simultanément sur votre système. Ainsi, si vous tapez les commandes suivantes, vous obtiendrez des librairies adaptées au profiling :

[fredo@couette fredo]$ make shared=yes debug=no profile=yes

[fredo@couette fredo]$ su root

[fredo@couette fredo]$ make shared=yes debug=no profile=yes install

Une fois GNUstep compilé et installé, il vous reste quelques étapes importantes pour rendre votre GNUstep opérationnel. En effet, un certain nombre de variables d'environnement doivent être positionnées. A cet effet, le système de setup dispose d'un script GNUstep.sh que vous trouverez dans $GNUSTEP_SYSTEM_ROOT/Makefiles/. ($GNUSTEP_SYSTEM_ROOT étant le répertoire où GNUstep est installé). Pour activer ce script, le plus simple est de rajouter la ligne suivante dans votre fichier .profile qui se trouve dans votre répertoire personnel :

[fredo@couette fredo]$. /usr/local/GNUstep/Makefiles/GNUstep.sh

Cet exemple émet l'hypothèse que $GNUSTEP_SYS TEM_ROOT=/usr/local. Faites attention au " . " en début de ligne. Il est très important ! Ensuite, il vous faut configurer le serveur d'objets distribués nécessaire à GNUstep, même en supposant que votre machine est isolée du réseau. Pour cela, il est recommandé de créer un fichier /etc/gdomap_adresses contenant par exemple :

WWW.XXX.YYY.ZZZ 255.255.255.0

Bien sûr, il vous faudra remplacer WWW.XXX.YYY.ZZZ par votre adresse TCP/IP.

Si votre machine est autonome, votre adresse sera 127.0.0.1. En principe, cette étape est automatique si vous possédez les droits de root au moment du make install.

Premiers pas avec GNUstep

Maintenant que votre GNUstep est opérationnel, vous pouvez ajuster votre horloge GNUstep en modifiant les paramètres à l'aide de l'utilitaire defaults :

[fredo@couette fredo]$ cd

[fredo@couette fredo]$ mkdir GNUstep (uniquement si ce répertoire n'existe pas déjà)

[fredo@couette fredo]$ defaults write NSGlobalDomain " Local Time Zone " " Europe/Paris "

L'utilitaire defaults permet d'écrire et de consulter les paramètres de fonctionnement et de configuration de GNUstep ainsi que de ses applications. Par exemple, si vous exécutez la commande ci-dessous, vous pourrez consulter l'ensemble de votre configuration personnelle (les paramètres sont propres à chaque utilisateur) :

[fredo@couette GNUMail]$ defaults read

GNUMail EMAILADDR ‘chauvinf@caramail.com'

GNUMail NAME ‘Frederic Chauvin'

GNUMail ORGANIZATION " Aucune "

GNUMail REPLYTOADDR ‘chauvinf@caramail.com'

GNUMail SIGNATURE " "

NSGlobalDomain Local Time Zone ‘Europe/Paris'

Vous constatez que chaque ligne commence soit par le nom d'une application (GNUMail dans ce cas), soit par NSGlobalDomain. Dans le premier cas, le paramètre sera spécifique à l'application considérée tandis qu'il s'appliquera à tout dans le second cas. L'ensemble des fonctions de defaults peut être consulté en tapant :

[fredo@couette GNUMail]$ defaults --help

Sachez enfin que ces options peuvent être manipulées par programmation à travers les services fournis par la classe NSUserDefaults dans FoundationKit.

Vous êtes désormais prêt pour compiler une application s'appuyant sur GNUstep ! Pour illustrer cela, nous pouvons installer le lecteur de CD audio écrit par monsieur A.C. Kyugo et disponible sur :

http://www.geocities.co.jp/Silicon Valley/5605/gnustep/.

Après avoir téléchargé le logiciel et décompacté l'archive avec la commande habituelle tar, la compilation s'effectuera en deux temps. La première étape permet d'installer la librairie cdaudio sur laquelle s'appuie CDPlayer tandis que la seconde permet de compiler CDPlayer lui-même.

1.

[fredo@couette fredo]$ cd CDPlayer/libcdaudio-0.7.0

[fredo@couette fredo]$ ./configure

[fredo@couette fredo]$ make

[fredo@couette fredo]$ su root

[fredo@couette fredo]$ make install

2.

[fredo@couette fredo]$ cd ..

[fredo@couette fredo]$ make [shared=xxx debug=xxx]

Comme indiqué précédemment, il est important d'utiliser les mêmes options pour shared, debug, etc. que celles que vous aurez utilisées durant l'installation de GNUstep, sans quoi l'éditeur de liens ne sera pas en mesure de lier CDplayer aux librairies GNUstep durant la phase finale de la compilation. Par ailleurs, vous avez pu remarquer que durant l'étape 2, il n'a pas été nécessaire d'exécuter ./configure. En effet, cette étape constitue un exemple type de compilation d'applications GNUstep et s'appuie à ce titre exclusivement sur le système de Makefiles de GNUstep. Si l'on met de côté le cas particulier de la librairie cdaudio, seul GNUstep est visible depuis l'application, rendant celle-ci indépendante de la plate-forme hôte. L'application se trouve compilée dans le sous-répertoire Source, dans le répertoire CDPlayer.app, CDPlayer.debug ou bien encore CDPlayer.profile suivant les options debug=, profile= utilisées au moment de la compilation. Dans le monde GNUstep, une application est entièrement installée au sein d'un répertoire qui contient non seulement les exécutables et autres librairies spécifiques, mais également les ressources annexes telles que les icônes, la documentation, les fichiers de localisations, etc. Il est donc possible de faire cohabiter plusieurs versions d'une même application sur votre système. Notons de plus qu'il est possible d'installer GNUstep et ses applications pour différentes combinaisons d'OS et de plates-formes matérielles dans la même arborescence, simplement en itérant sur toutes les étapes décrites durant cet article. Cela est particulièrement utile dans le contexte d'un réseau. Il sera en effet possible de rendre disponibles les applications pour tous vos types de machines et d'OS sur la même arborescence NFS.

Vous pouvez maintenant lancer l'application CDPlayer en utilisant l'utilitaire openapp ou debugapp. Le premier lance normalement l'application tandis que le deuxième la lancera dans le débogueur. Il est possible d'utiliser l'option --library-combo=... pour spécifier, au moment de l'exécution, le backend que vous souhaitez utiliser. La liste des valeurs possibles est consultable en tapant openapp —help.

Vous pourrez également passer d'éventuels arguments supplémentaires à l'application. Par exemple, l'option --GNU-Debug=dflt active les traces de type dflt (uniquement si l'option debug=yes a été utilisée durant la compilation).

Conclusion

Voilà, si vous avez eu le courage de nous suivre jusqu'ici, vous avez un GNUstep opérationnel avec toutes les connaissances nécessaires pour installer les applications qui lui sont dediées. La version 0.6 devrait très bientôt sortir et apportera de nombreuses et significatives améliorations. Le projet est véritablement en train de prendre son envol. Ne loupez pas le décollage ! Si certaines zones d'ombre subsistent, nous vous recommandons de consulter le site Web de la documentation de GNUstep à http://www.gnustep.org/resources/documentation.html

 

Frédéric Chauvin

Ingénieur Recherche et Développement

chauvin@caramail.com


© Copyright 2000 Diamond Editions/Linux magazine France. - Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1or any later version published by the Free Software Foundation; A copy of the license is included in the section entitled "GNU Free Documentation License".