Documentation de la bibliothèque MLV-2.0.2

Créer des paquets contenant la bibliothèque MLV pour MacOS X

Dans cette partie, nous allons expliquer comment créer des paquets d'installation pour MacOS X à l'aide de l'outil PackageMaker.

Pour pouvoir créer ces paquets, nous allons compiler et installer des outils et des bibliothèques nécessaires à la compilation, l'installation et l'exécution de la bibliothèque MLV.

Avant d'être mis en paquet, ces bibliothèques et ces outils doivent être installés dans différents répertoires :

Le repertoire fakeroot_to_compile_mlv-2.0.2 est un repertoire temporaire de construction. Le repertoire /usr est le repertoire d'installation de la bibliothèque. Dans notre cas, il est utilisé pour pouvoir configurer et tester en conditions réelles l'infrastructure MLV. Le repertoire $HOME/mlv-2.0.2_macos-10.10 contient exactement les même composantes que ceux qui sont installées dans /usr. Nous utiliserons ce dernier repertoire pour construire le paquet d'installation pour MacOS X.

Il est important de travailler avec les deux repertoires /usr et $HOME/mlv-2.0.2_macos-10.10. En effet, /usr fait partie du système d'exploitation et contient déjà d'autres bibliothèques. On ne peut donc pas distribuer /usr, d'où l'obligation de créer une copie de /usr qui ne contient que l'infrastucture de MLV.

Il est important de noter que nous allons modifier /usr. Pour ce faire, nous devrons utiliser les droits "administrateur". Il faudra donc être extrèmement vigilant car une mauvaise manipulation dans /usr peu détruire le système tout entier.

Préparation et installation de la chaîne de compilation pour la bibliothèque MLV

Commencez par créer les repetroires d'installation en tapant les commandes suivantes :

Installation des outils de développement de MacOSX

Commencez par installer l'environnement de programmation d'Apple. Pour cela, au choix,

Cet environnement contient entre autre gcc, et make.

Mis en place d'un environnement de développement pour MLV

Nous allons installer la bibliothèque MLV ainsi que ses dépendances dans un répertoire de votre dossier personnel.

Créez les répertoires suivants en tapant les commandes suivantes :

mkdir $HOME/fakeroot_to_compile_mlv-2.0.2
mkdir $HOME/fakeroot_to_compile_mlv-2.0.2/src
mkdir $HOME/mlv-2.0.2_macos-10.10

Il est nécessaire de configurer le système d'exploitation, pour qu'il sache que de nouvelles bibliothèques sont installées dans le répertoire fakeroot. Pour cela, il suffit de définir quelques variables d'environnement dans un fichier qui est exécuté à chaque démarrage du terminal.

Ce fichier est $HOME/.bash_profile

Ajoutez, à la fin du fichier, les commandes suivantes:

export FAKEROOT="$HOME/fakeroot_to_compile_mlv-2.0.2" 
export SYSROOT="/usr" 
export LOCALSYSROOT="/usr/local/MLV" 
export MACOS_PACKAGE="$HOME/mlv-2.0.2_macos-10.10"
export PATH="$FAKEROOT/bin:$LOCALSYSROOT/bin:$SYSROOT/bin:$PATH"
export DYLD_LIBRARY_PATH="$FAKEROOT/lib:$LOCALSYSROOT/lib:$SYSROOT/lib:$DYLD_LIBRARY_PATH"
export PKG_CONFIG_PATH="$FAKEROOT/lib/pkgconfig:$LOCALSYSROOT/lib/pkgconfig:$SYSROOT/lib/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="$FAKEROOT/lib:$LOCALSYSROOT/lib:$SYSROOT/lib:$LD_LIBRARY_PATH"
export ACLOCAL="aclocal -I $FAKEROOT/share/aclocal  -I $LOCALSYSROOT/share/aclocal  -I $SYSROOT/share/aclocal  -I /usr/share/aclocal"
export PKG_CONFIG="$SYSROOT/bin/pkg-config"
export CPPFLAGS="-I$FAKEROOT/include -I$LOCALSYSROOT/include -I$SYSROOT/include"
export LDFLAGS="-L$FAKEROOT/lib -L$LOCALSYSROOT/lib -L$SYSROOT/lib"

Si le fichier n'existe pas, créez le.

Vous devez maintenant redémarrer votre terminal pour prendre en compte les changements.

Vérifiez que les variables d'environnement ont bien été installées en tapant la commande:

export

qui devrait afficher toutes les variables d'environnement existantes.

Vous pouvez aussi les examiner une à une en tapant la commande:

echo $FAKEROOT
echo $PATH
etc ...

Installation des dépendances de MLV

Nous allons maintenant installer différents programmes et bibliothèques qui sont nécessaires au fonctionnement de MLV.

Installation de pkg-config

Commencez par télécharger pkg-config-X.X.tar.gz en allant sur le site :

http://pkgconfig.freedesktop.org/releases/

et en le mettant dans le répertoire $FAKEROOT/src.

Il est important de PRENDRE LA DERNIÈRE VERSION DE PKG-CONFIG. En effet, pkg-config utilise une autre bibliothèque qui n'est jamais incluse dans les anciennes versions.

Désarchivez le fichier en tapant la ligne de commande suivante:

cd $FAKEROOT/src
tar -xzf pkg-config-X.X.tar.gz

où X.X est le numéro de la version de la bibliothèque que vous avez téléchargé.

Nous allons maintenant compiler pkg-config :

cd ./pkg-config-X.X
./configure --with-internal-glib --prefix=$SYSROOT
make

La deuxième ligne de commande configure le code source de pkg-config pour que le code source prenne en compte les caractéristiques de l'architecture de votre ordinateur. L'option –prefix permet de dire au code source que le résultat de la compilation doit être installé dans le répertoire $SYSROOT, car c'est un outil qui sera necessaire à la compilation de MLV, mais aussi à l'utilisation de MLV. La 3ème commande compile le programme.

Installez la bibliothèque. Pour cela, tapez la commande :

sudo make install

Comme vous modifiez le sytème (à cause du –prefix=$SYSROOT), l'ordinateur vous demande un mot de passe. Tapez le mot de passe administrateur de l'ordinateur (ne vous inquiétez pas si le mot de passe ne s'affiche pas).

Installez ensuite pkg-config dans le répertoire destiné au paquet d'installation de MLV en tapant :

make install DESTDIR=$MACOS_PACKAGE

Voilà, pkg-config est installé.

Installation de M4

M4 est un outil d'aide à la compilation.

L'installation de M4 est identique à celle de pkg-config. Commencez par télécharger m4-X.X.X.tar.gz sur le site : http://ftp.gnu.org/gnu/m4/

Puis tapez les commandes suivantes:

cd $FAKEROOT/src
tar -xf m4-X.X.X.tar.gz
cd m4.X.X.X
./configure --prefix=$FAKEROOT
make
make install

Ici, m4 est nécessaire pour compiler MLV, mais pas pour son utilisation. Les commandes précédentes l'ont installée uniquement dans le repertoire $FAKEROOT.

Installation de autoconf

Autoconf est un outil d'aide à la compilation.

Commencez par télécharger autoconf-X.X.tar.gz sur le site : http://ftp.gnu.org/gnu/autoconf/

Puis tapez les commandes suivantes:

cd $FAKEROOT/src
tar -xzf autoconf-X.X.tar.gz
cd autoconf-X.X
./configure --prefix=$FAKEROOT
make
make install

Installation de autoconf-archive

Autoconf-archives est une bibliothèque de script pour autoconf.

Commencez par télécharger autoconf-archive-X.X.X.tar.gz sur le site : http://ftp.gnu.org/gnu/autoconf-archive/

Puis tapez les commandes suivantes:

cd $FAKEROOT/src
tar -xzf autoconf-archive-X.X.X.tar.gz
cd autoconf-archive-X.X.X
./configure --prefix=$FAKEROOT
make
make install

Installation de automake

Automake est un outil d'aide à la compilation.

Commencez par télécharger automake-X.X.tar.gz sur le site : http://ftp.gnu.org/gnu/automake/

Puis tapez les commandes suivantes:

cd $FAKEROOT/src
tar -xzf automake-X.X.tar.gz
cd automake-X.X
./configure --prefix=$FAKEROOT
make
make install

Installation de libtool

Libtool est un outil d'aide à la compilation.

L'installation de libtool est identique à celle de pkg-config. Commencez par télécharger libtool-X-X.tar.gz sur le site : http://ftp.gnu.org/gnu/libtool/.

Puis tapez les commandes suivantes:

cd $FAKEROOT/src
tar -xf libtool-X-X.tar.gz
cd libtool-X-X
./configure --prefix=$FAKEROOT
make
make install

Installation de libxml2

Il n'est pas nécessaire d'installer cette bibliothèque. En effet, elle est déjà présente dans l'installation de base de MacOS X.

Installation de libffi

Commencez par télécharger libffi-X.X.tar.gz en allant sur le site : http://sourceware.org/libffi/

Puis tapez les lignes de commandes suivantes:

cd $FAKEROOT/src
tar -xzf libffi-X.X.tar.gz
cd libffi-X.X
./configure --prefix=$LOCALSYSROOT
cd x86_64-apple-darwinX.X.X
make
sudo make install
make install DESTDIR=$MACOS_PACKAGE

Installation de gettext

Commencez par télécharger gettext-X.tar.gz en allant sur le site : http://www.gnu.org/software/gettext/

cd $FAKEROOT/src
tar -xzf gettext-X.X.X.X.tar.gz

Ensuite, compilez et installez la bibliothèque en tapant les commandes suivantes:

cd gettext-X.X.X.X
./configure --prefix=$LOCALSYSROOT
make
sudo make install
make install DESTDIR=$MACOS_PACKAGE

Installation de glib2

Téléchargez la bibliothèque sur le site http://ftp.gtk.org/pub/glib/

Désarchivez ensuite la bibliothèque en tapant les commandes suivantes:

cd $FAKEROOT/src
tar -xzf glib-2.X.X.tar.gz
cd glib-2.X.X
./configure --prefix=$LOCALSYSROOT
make
sudo make install
make install DESTDIR=$MACOS_PACKAGE

Installation de SDL

Téléchargez le paquet d'installation pour MacOSX de la bibliothèque sur le site http://www.libsdl.org/download-1.2.php

Ce paquet a pour nom : SDL-1.2.X.dmg (Intel10.5+)

Puis, installez le paquet en tapant les commandes suivantes :

mkdir -p $MACOS_PACKAGE/Library/Frameworks
hdiutil attach SDL-1.2.X.dmg
sudo cp -r /Volumes/SDL/SDL.framework /Library/Frameworks/
cp -r /Volumes/SDL/SDL.framework $MACOS_PACKAGE/Library/Frameworks/
hdiutil detach /Volumes/SDL

Installation de SDL_image

Téléchargez le paquet d'installation pour MacOSX de la bibliothèque sur le site http://www.libsdl.org/projects/SDL_image/release-1.2.html

Ce paquet a pour nom : SDL_image-1.2.X.dmg (Intel10.5+)

Puis, installez le paquet en tapant les commandes suivantes :

hdiutil attach SDL_image-1.2.X.dmg
sudo cp -r /Volumes/SDL_image/SDL_image.framework /Library/Frameworks/
cp -r /Volumes/SDL_image/SDL_image.framework $MACOS_PACKAGE/Library/Frameworks/
hdiutil detach /Volumes/SDL_image

Installation de SDL_mixer

Téléchargez le paquet d'installation pour MacOSX de la bibliothèque sur le site http://www.libsdl.org/projects/SDL_mixer/release-1.2.html

Ce paquet a pour nom : SDL_mixer-1.2.X.dmg (Intel10.5+)

Puis, installez le paquet en tapant les commandes suivantes :

hdiutil attach SDL_mixer-1.2.X.dmg
sudo cp -r /Volumes/SDL_mixer/SDL_mixer.framework /Library/Frameworks/
cp -r /Volumes/SDL_mixer/SDL_mixer.framework $MACOS_PACKAGE/Library/Frameworks/
hdiutil detach /Volumes/SDL_mixer

Installation de SDL_ttf

Téléchargez le paquet d'installation pour MacOSX de la bibliothèque sur le site http://www.libsdl.org/projects/SDL_ttf/release-1.2.html

Ce paquet a pour nom : SDL_ttf-X.X.X.dmg (Intel10.5+)

Puis, installez le paquet en tapant les commandes suivantes :

hdiutil attach SDL_ttf-X.X.X.dmg
sudo cp -r /Volumes/SDL_ttf/SDL_ttf.framework /Library/Frameworks/
cp -r /Volumes/SDL_ttf/SDL_ttf.framework $MACOS_PACKAGE/Library/Frameworks/
hdiutil detach /Volumes/SDL_ttf

Installation de SDL_gfx

Téléchargez le code source de la bibliothèque sur le site : http://www.ferzkopp.net/joomla/content/view/19/14/

cd  $FAKEROOT/src
tar -xzf SDL_gfx-X.X.tar.gz

ATTENTION ! Il est important de télécharger la verions de SDL_gfx qui a été prévu pour la version 1.2 de SDL (il ne faut surtout pas prendre SDL2_gfx qui est prévue pour la version 2.0 de SDL ) !

Modifiez le configure.in en remplacant les lignes

dnl Check for SDL
AM_PATH_SDL($SDL_VERSION,
            :,
        AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!])
)
CFLAGS="$CFLAGS $SDL_CFLAGS"
# Remove dependencies from 'sdl-config' not meant for us libraries:
SDL_LIBS=$(echo "$SDL_LIBS" |sed -e 's/-lmingw32//' -e 's/-lSDLmain//')
LIBS="$LIBS $SDL_LIBS"

par les lignes

SDL_CFLAGS="-I/Library/Frameworks/SDL.framework/Headers -framework SDL" 
SDL_LIBS="-framework SDL" 
CFLAGS="$CFLAGS $SDL_CFLAGS" 
LIBS="$LIBS $SDL_LIBS -framework SDL"

Reconfigurez la bibliothèque en exécutant la commande:

cd SDL_gfx-X.X
autoreconf --install

Finissez la compilation et l'installation de la bibliothèque en tapant les commandes suivantes:

./configure --prefix=$LOCALSYSROOT --without-x
make
sudo make install
make install DESTDIR=$MACOS_PACKAGE

Installation de Cmake

Téléchargez le code source de Cmake, contenu dans le fichier cmake-X.X.X.tar.gz situé sur le site : http://www.cmake.org/download/

Installez le paquet en tapant les commandes suivantes:

cd $FAKEROOT/src
tar -xzf cmake-X.X.X.src.tar.gz
cd cmake-X.X.X
./configure --prefix=$FAKEROOT
make
make install

Installation de Doxygen

Téléchargez le code source de Doxygen, contenu dans le fichier doxygen-X.X.X.src.tar.gz situé sur le site : http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc

Installez le paquet en tapant les commandes suivantes:

cd $FAKEROOT/src
tar -xzf doxygen-X.X.X.src.tar.gz
cd doxygen-X.X.X
cmake -DCMAKE_INSTALL_PREFIX:PATH=$FAKEROOT -G "Unix Makefiles"
make
make install

Installation de la bibliothèque MLV

Commencez par télécharger le code source de la bibliothèque MLV. Téléchargez la bibliothèque située à l'adresse : http://download.savannah.gnu.org/releases/mlv/mlv-2.0.2/mlv-2.0.2.tar.gz

Installez la bibliothèque en tapant les commandes suivantes:

cd $FAKEROOT/src
tar -xzf mlv-2.0.2.tar.gz
cd mlv-2.0.2
./configure --prefix=$SYSROOT libxml_LIBS=-lxml2 libxml_CFLAGS=-I/usr/include/libxml2
make
sudo make install
make install DESTDIR=$MACOS_PACKAGE

Création du paquet d'installation de MLV pour MacOX

Installer PackageMaker en allant sur le site: https://developer.apple.com/downloads/index.action

Installer PackageMaker.

Executez PackageMaker.

Dans le champs Organisation, remplissez:

multimedia.library

Et choisissez la cible :

Mac OS X v10.5 Leopard

Cliquez sur "Untitled", puis sur Configuration.

Modifiez le titre de sorte qu'il devienne: "mlv-2.0.2_macos-10.10"

Dans "Install Destination", décochez l'option "Volume selected by user" et remplacez le par "System volume".

Pour la description, mettez:

The MLV library is a simplified multimedia library. This library has been designed for beginner students in C, and it allows to add graphical and audio effects on the student program. The library is useful to:
- draw figures, display text and dialog boxes,
- display images,
- play sounds and musics,
- catch mouse and keyboard events,
- get informations from dialog boxes.
These tools are simplified interfaces of the SDL library. If you are not a C beginner, better use the SDL librairy (SDL, SDL_gfx, SDL_sound, SDL_ttf). 

Ensuite, ajouter le dossier $MACOS_PACKAGE/usr (à l'aide de l'icône en forme de plus).

Réalisez ensuite les opérations suivantes:

Ajoutez maintenant le dossier $MACOS_PACKAGE/LIBRARY.

Réalisez ensuite les opérations suivantes:

Une fois fait, cliquez sur le bouton Build et enregistrez le paquet dans le dossier de votre choix.

Le paquet est prêt !

Tester le bon fonctionnement des paquets d'installation

Commencer par vérifier que votre paquet d'installation est correcte en copiant le paquet dans un repertoire de test. Décompressez le paquet à l'aide de la commande :

tar -xzf mlv-2.0.2_macos-10.10.pkg
tar -xzf usr.pkg/Payload
tar -xzf library.pkg/Payload

Normalement, vous devriez avoir deux répertoires : Library et usr. Il doivent au moins contenir les dossiers et fichiers suivants :

Library
`-- Frameworks
    |-- SDL.framework
    |-- SDL_image.framework
    |-- SDL_mixer.framework
    `-- SDL_ttf.framework
usr
|-- bin
|   `-- pkg-config
|-- include
|   `-- MLV
|-- lib
|   |-- libMLV.0.dylib
|   |-- libMLV.a
|   |-- libMLV.dylib
|   |-- libMLV.la
|   |-- libMLVMain.0.dylib
|   |-- libMLVMain.a
|   |-- libMLVMain.dylib
|   |-- libMLVMain.la
|   `-- pkgconfig
|-- local
|   `-- MLV
`-- share
    |-- aclocal
    |-- doc
    |-- man
    `-- MLV

Si tel est le cas, c'est que le paquet a correctement été généré.

Commencez par désinstaller l'infrastructure de compilation du paquet :

cd $FAKEROOT/src/pkg-config-X.X && sudo make uninstall
cd $FAKEROOT/src/libffi-X.X/x86_64-apple-darwinX.X.X && sudo make uninstall
cd $FAKEROOT/src/gettext-X.X.X.X && sudo make uninstall
cd $FAKEROOT/src/glib-2.X.X && sudo make uninstall
sudo rm -rf /Library/Frameworks/SDL_ttf.framework
sudo rm -rf /Library/Frameworks/SDL_mixer.framework
sudo rm -rf /Library/Frameworks/SDL_image.framework
sudo rm -rf /Library/Frameworks/SDL.framework
cd $FAKEROOT/src/SDL_gfx-X.X && sudo make uninstall
cd $FAKEROOT/src/mlv-2.0.2 && sudo make uninstall

Supprimez les lignes qui ont été ajoutées dans le fichier .bash_profile au debut du document.

Voilà, on peut maintenant tester l'installation du paquet.

Pour installer le paquet, il vous suffit de cliquer sur le fichier et de suivre les instructions.

Testez maintenant la bibliothèque en tapant les commandes suivantes:

cp -r /usr/share/doc/mlv/examples /tmp
cd /tmp/examples/beginner
make

Si la compilation se fait sans erreur, c'est que l'installation s'est correctement déroulée.

Vous pouvez maitnenant vérifier que chaque programme s'exécute correctement. Vérifiez aussi tous les autres exemples.

Désinstaller le paquet pour remettre le système dans son état d'origine

Il n'y a pas d'outil de désinstallation sous mac. Pour désinstaller un paquet, il faut supprimer les fichiers à la main en tapant les commandes:

sudo rm -rf /Library/Frameworks/SDL.framework
sudo rm -rf /Library/Frameworks/SDL_image.framework
sudo rm -rf /Library/Frameworks/SDL_mixer.framework
sudo rm -rf /Library/Frameworks/SDL_ttf.framework
sudo rm -rf /usr/include/MLV
sudo rm -rf /usr/lib/libMLV*
sudo rm -rf /usr/lib/pkgconfig/MLV.pc
sudo rm -rf /usr/local/MLV
sudo rm -rf /usr/share/MLV
sudo rm -rf /usr/share/doc/mlv
sudo rm -rf /usr/share/man/man3/MLV_*.h.3
sudo rm -rf /usr/bin/pkg-config
sudo rm -rf /usr/bin/x86_64-apple-darwin13.0.0-pkg-config
sudo rm -rf /usr/share/aclocal/pkg.m4
sudo rm -rf /usr/share/doc/pkg-config
sudo rm -rf /usr/share/man/man1/pkg-config.1

Puis, il faut juste dire au système d'oublier l'existence du paquet en question en tapant la commande:

sudo pkgutil --forget multimedia.library.mlv.mlv_infrastructure.pkg
sudo pkgutil --forget multimedia.library.mlv.sdl_framework.pkg