Ravi
Welcome
Documentation
Documentation
About Ravi
Documentation
Introduction
Premiers pas avec Ravi
ravitool
Scheme Tutorial
Objets Scheme
Le shell ravi
Starting Ravi
Le module trace
Les ports d'E/S
The C Parser
load, require, modules
Système d'interruptions
Scheme compiler
C++ mode
Generating C++ Modules
La déclaration struct
Le type "C-object"
More information
Installation

[PREV]

Installation

Sources:

/home/pandora2/Ravi/raviex.tar.gz

Ce fichier contient une arborescence de fichiers source permettant de générer ravi, sur différentes architectures.

Etapes de génération

Il y a d'abord génération du Scheme de base, puis génération des modules . La base Scheme se décompose à son tour en un noyau écrit en C++, et le système écrit en Scheme.

D'une facon très classique, la génération procède en 3 étapes:


rm config.cache ./configure make make install

  • configure crée plusieurs fichiers de configuration dans le répertoire Config: config.mk config.h Il peut être utile d'éditer manuellement les fichiers générés.

    L'installation par défaut se fait dans plusieurs répertoires selon le "standard Unix" (voir ci-après). Si on souhaite une installation personnalisée, le configure prend des paramètres qui précisent les répertoires d'installation (ils n'ont aucune incidence sur la génération à proprement parler). Le format avec paramètres du configure est

    
    ./configure --prefix=$LIBDIR --bindir=$BINDIR --includedir=$INCDIR
    

    Le configure est créé via autoconf.

  • Le make génère la "version développeur" de ravi.
  • Le make install recopie les fichiers nécessaires pour l'exécution de ravi dans les répertoires indiquées au configure. Selon les circonstances, le make install doit s'exécuter en root.

On peut utiliser ravi sans l'avoir installé (pratique en phase de test): Ravi/Bin/ravi -libdir Ravi ...

Attention à la confusion des $RAVIARCH, ancienne et nouvelle version: dans la nouvelle version, cette variable est interne aux makefile, et au config. Voir configure pour le calcul.

Ancien: i686-Linux2

Nouveau: i686-pc-linux-gnu

etc.

Répertoires d'installation

  • BINDIR contient seulement un script ravi qui fait appel au bon exécutable. Défaut: /usr/local/bin
  • LIBDIR Défaut: /usr/local/lib/$RAVI_VERSION Répertoire contenant divers fichiers utilisés par l'exécutable ravi, dans plusieurs sous-répertoires:

    Compiler Module Objrv Runtime Script bin

    Le répertoire script contient un script make_ravi qui crée un répertoire ~/.ravi. Ce script est en principe activé au premier appel de ravi, pour un utilisateur donné (voir: fichiers de configuration personnelle, et quelques lignes plus loin ici).

    Le répertoire Module contient les "modules" ravi, qui sont chargés par la fonction require.

  • INCDIR est nécessaire pour la compilation des fichiers générés pour interfacer du C++. Défaut: /usr/local/include/Ravi

Répertoires de génération

Le fichier tar contient une arborescence de racine Ravi. Il y a d'abord génération du Scheme de base, puis génération des modules . La base Scheme se décompose à son tour en un noyau écrit en C++, et le système écrit en Scheme.

Le makefile au niveau de la racine active grosso modo les makefile dans l'ordre des répertoires.

  • Build
  • Src Répertoires source, en C++, du noyau de ravi.
  • Runtime Fichiers source en Scheme: interpréteur, compilateur
  • Script Contient make_ravi Revoir ce script qui contient la version initiale des fichiers de config-utilisateur. En particulier, rendre Scheme "case sensitive" si on prévoit l'utilisation avec C.

La génération de ce "Scheme de base" ne pose en général pas de problème. La géneration des modules procède en 2 étapes également: modules en Scheme, modules C/C++.

  • Module/Rlib sources des modules en Scheme. Ces modules sont compilés par le noyau Ravi généré à l'étape précédente
  • Module/GenModule Générateur d'interfaces
  • Module/Src modules mixtes C/C++ - Scheme. Il s'agit des modules readline, modsystem, et autres. A adapter localement.

Version Prima

Voici les commandes utilisées pour générer Ravi dans l'équipe Prima.


version A

autoconf ./configure --prefix=/home/pandora2/Ravi/local --bindir=/home/pandora2/Ravi/Bin/`Config/config.guess` --includedir=/home/pandora2/Ravi/local/include/0.9.5

make make install

===================================== version B

./configure --prefix=/home/pandora2/Ravi/local --bindir=/local/prima/pc-glibc/bin/ --includedir=/local/prima/pc-glibc/include

make make install

version 11-02

rm config.cache

./configure --prefix=/home/pandora2/Ravi/local --includedir=/local/prima/Share/include/Ravi

make distclean make cd Module/Src make =====================================

./configure --prefix=/local/prima/pc-glibc ./configure --prefix=/perms/lux/Rv --enable-debug=3

=====================================

Génération des modules C++

Après la génération du noyau de Ravi, on installe les modules écrits en C/C++; les plus importants étant les modules modsystem readline. Selon la version du makefile, ce n'est pas fait automatiquement avec la génération du noyau, car la génération des modules provôque facilement des erreurs, liées à la configuration Unix (répertoires include, librairies diverses).

Remarque: ne pas confondre avec les modules écrits en Scheme qui sont toujours générés, sans problème.

Passer dans le répertoire Module/Src


./configure
make
make install

=====================================