summaryrefslogtreecommitdiff
path: root/content/Informatique/2013-05-23-ocamlfind_fr.rst
blob: 4cf81fd1e8c8cc40b771d293fb8680f1c3bce465 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
.. -*- rst -*-
.. -*-  coding: utf-8 -*-

=========================
Un dépôt local pour ocaml
=========================

:date: 2013-05-23
:tags: ocaml
:summary: |summary|
:logo: /images/ocaml/camel.jpg
:slug: un-depot-local-pour-ocaml
:lang: fr

.. figure:: {filename}/images/ocaml/camel_medium.jpg
    :figwidth: 150
    :figclass: floatleft
    :alt: Pavement

    Image : `@Doug88888`_ (creativecommons_)

.. _@Doug88888: http://www.flickr.com/photos/doug88888/3458057235/
.. _creativecommons: http://creativecommons.org/licenses/by-nc-sa/2.0/deed.fr

|summary|
    

.. |summary| replace::
    Ocaml n'est pas à jour dans debian : l'ensemble des librairies sont encore
    restées sur la version 3, alors qu'Ocaml4 est sorti depuis près d'un an. Il
    peut être nécessaire de développer en utilisant ocaml4, mais on est alors
    obligé de compiler soit même les dépendances, et les installer pour
    l'ensemble du système, ce qui n'est pas souhaité, ni toujours possible
    (problème de droits). Cette petite recette permet de se créer un dépôt
    local en utilisant findlib.

Findlib est devenu de facto une brique essentielle pour la gestion des
librairies et les dépendances d'un projet. Aujourd'hui toute compilation
utilise findlib pour rechercher les dépendances et faciliter la chaîne de
compilation. La documentation_ du projet est assez dense, mais heureusement, il
est très configurable.

.. _documentation: http://projects.camlcity.org/projects/dl/findlib-1.3.3/doc/guide-html/index.html

Nous allons commencer par nous créer un fichier de configuration local qui va
indiquer où stocker nos librairies :

.. code-block:: bash

    destdir="/home/chimrod/ocaml/packages/"
    path="/home/chimrod/ocaml/packages/:/usr/local/lib/ocaml/4.00.1:/usr/lib/ocaml:/usr/lib/ocaml/METAS"

:destdir:   correspond à l'emplacement d'installation des nouvelles librairies.
:path:      est l'ensemble des répertoires où chercher les dépendances. Ici
            nous déclarons tout d'abord notre dépôt local avant de référencer
            les répertoires système.

Il faut bien sûr remplacer `/home/chimrod/` par le chemin sur votre
installation : celui-ci doit être écrit en absolu pour le bon fonctionnement de
findlib.

Le répertoire de configuration peut être exporté via une variable shell, ce qui
va nous faciliter la vie ; il ne nous reste plus qu'à référencer ce fichier de
configuration dans notre environnement :

.. code-block:: bash

    export OCAMLFIND_CONF=/home/chimrod/ocaml/ocamlfind.conf

Là encore, remplacer le chemin par celui qui est le votre sur votre système.

On peut mettre cette chaîne dans le fichier `.bashrc` pour que le paramétrage
soit pris en compte dans chaque session ouverte dans le terminal.

Et le tour est joué : toutes nos nouvelles dépendances vont s'installer
directement dans notre répertoire personnel, et nous n'avons plus besoin
d'aller poluer le système avec nos compilation.