# Documentation de la bibliothèque MLV-1.2.1

- Presentation
- Téléchargement
- Installation
- Compilation
- Exemples
- API
- Liste des fonctions
- bogues
- FAQ
- contacts

Procédure pour sortir une nouvelle version de MLV

Cette page explique la procédure à suivre pour publier officiellement une nouvelleversion en provenance de la branche de développement de MLV du serveur git.

On supposera, dans la suite de ce document que votre depôt git est nettoyé, comme si vous veniez de le cloner.

# Fusionner la branche develop dans celle de release

Commencez par fusionner la branche develop dans celle de release :

    git checkout release
    git merge develop

# Changer Le numéro de version

Modifier les numéros de version `mlvcurrent`, `mlvrevision` et `mlvage` situés dans le fichier `configure.ac`.

La logique à suivre est expliquée en commentaire dans le fichier.

Les lignes à modifier sont les suivantes :

    define([mlvcurrent], [1])dnl
    define([mlvrevision], [2])dnl
    define([mlvage], [1])dnl

# Mettre a jour les fichiers ChangeLog et todo

Modifiez le fichier `ChangeLog` situé à la racine de la bibliothèque. Pour cela, mettez à jour, si nécessaire, le numéro de version apparaissant dans la première ligne de ChangeLog, puis, ajoutez d'éventuels changements qui auraient étés oubliés.

Mettez à jour le fichier `todo` situé à la racine de la bibliothèque.

# Préparer une clé pour signer les différents paquets d'indstallation

Créez uen clé qui servira à signer tous les paquets d'installation. Pour cela, tapez la commande suivante :

    gpg --gen-key

et choisisez une clef RSA de 4096 bits, mettez un temps d'expiration de 3 jours (temps que vous vous donnez pour créer et tester l'ensemble des paquets de distribution) et choisissez comme commentaire: `mlv-1.2.1 key`.

Vérifier que la clé est dans votre liste de clés en tapant :

    gpg --list-key

Vous devriez obtenir l'affichage suivant :

    /home/boussica/.gnupg/pubring.gpg
    ---------------------------------
    pub   4096R/E594D293 2014-02-25 [expire : 2014-02-28]
    uid                  Adrien Boussicault (mlv-1.2.1 key) <boussica@labri.fr>
    sub   4096R/4B3F1834 2014-02-25 [expire : 2014-02-28]

L'identifiant de la clé est ici `E594D293`

Exportez la clé publique pour pouvoir la comuniquer à différents utilisateurs

    gpg --export --armor IDENTIFIANT_CLE > mlv-1.2.1-packaging-gpg-key-VOTRE_NOM

où `IDENTIFIANT_CLE` est l'identifiant de la clé vu précédement.

Exportez votre clé privé pour pouvoir l'importer dans toutes les machines qui vont créer les paquets de distribution (notament pour debian et fedora).

    gpg --export-secret-keys --armor IDENTIFIANT_CLE > mlv-1.2.1-packaging-gpg-secretkey-VOTRE_NOM

où `IDENTIFIANT_CLE` est l'identifiant de la clé vu précédement.

Vous ne devez JAMAIS comuniquer cette clé. C'est elle qui sert à crypter les messages et à réaliser les signatures de vos paquets.

Archivez dans vos archives personnelles (et secrète) la clé publique et la clé privée.

# Verifiez le bon fonctionnement de la bibliothèque (optionel)

Vérifiez maintenant le bon fonctionement de la bibliothèque.

Pour cela, créez tout les paquets de distribution en suivant les procédures présentes à la page : Créer des paquets distribuables de la bibliothèque MLV .

Testez ensuite tous les paquets crées et vérifiez le bon fonctionnement des programmes en compilant et testant tous les exemples présents dans le dossier `example` du dossier de documentation qui a été installé par le paquet. Sous linux, il est situé dans `/usr/share/doc/mlv/`.

Vous prendrez bien soin de bien vérifier que les programmes qui utilisent le son fonctionne correctement (notament sous Mac OS X et windows).

Vous vérifiez aussi que la documentation est bien à jour en verifiant que les nouveaux numéros de version sont à jour, notament dans la partie téléchargement de la documentation. Pour cela, il suffit de suivre les différents liens présents à la page `doc/index.html`.

# Fusionner la branche release dans master et dans develop

Quand la bibliothèque est prête à être publiée, il ne reste plus qu'à fusionner release dans master.

Commencez par bien vérifier que vous avez sauvegardé les dernières modifications de release :

    git status

Ensuite, procédez à la fusion de merge dans master en tapant :

    git checkout master
    git merge release

Ajouter un tag pour préciser que ce dernier commit est une nouvelle version.

    git tag -a vX -m 'The version X of MLV.'

où `X` est le nouveau numéro de version de la bibliothèque. Vous pouvez éventuellement, ajoutez des commentaires dans l'opition -m.

On fusionne ensuite release dans develop :

    git checkout develop
    git merge release

Il ne reste plus qu'à envoyer tous les changements sur le dépot git.

    git push

# Créer les nouveaux paquets de distributions

Commencez par créer un paquet de distribution pour le code source, à partir de la branche master :

    ./configure
    make dist

Normalement le fichier `mlv-1.2.1.tar.gz` a du être créé. Il est très important d'exécuter le script `./configure`, même s'il existait déjà. En effet, son exécution permet de mettre à jour le numéro de révision git situé dans le code source.

Ensuite, à partir de ce dernier fichier, recréez l'ensemble des paquets de distribution.

Pour cela vous pouvez utiliser l'émulateur `virt-manageur` pour installer localement une debian 32 bit, une debian 64 bit, un fedora 32 bits et 64 bits.

Pour chaque distribution (debian, fedora, window, MacOSX), créez des paquets d'installation en suivant les instructions suivantes :

- utilisez les procédure de créations des paquets de la page Créer des paquets distribuables de la bibliothèque MLV
- quand, dans ces procédures, une clée pour signer des fichiers est utilisée, vous devez toujours utiliser la clé `mlv-1.2.1-packaging-gpg-secretkey-VOTRE_NOM`, qui a été générée précédement. Pour importer cette clé, il vous suffit de taper la commande suivante :

        gpg --import mlv-1.2.1-packaging-gpg-secretkey-VOTRE_NOM

Vérifiez le bon fonctionnement de ces paquets.

# Mettre a jour le site web officiel

Commencez par créer deux dossiers : `depot` et `site`, dans le répertoire `/tmp`.

Dans le dossier `depot`, créez un dossier `mlv-1.2.1`.

Mettez dans le dossier `depot` le fichier `mlv-1.2.1.tar.gz`.

Ensuite, mettez les fichiers suivants, dans le dossier `depot/mlv-1.2.1`:

    libmlv0_1.2.1-1_i386.deb
    libmlv0-dev_1.2.1-1_i386.deb
    libmlv0_1.2.1-1_amd64.deb
    libmlv0-dev_1.2.1-1_amd64.deb
    mlv-1.2.1-0.fc20.i686.rpm
    mlv-devel-1.2.1-0.fc20.i686.rpm
    mlv-static-1.2.1-0.fc20.i686.rpm
    mlv-1.2.1-0.fc20.src.rpm
    mlv-1.2.1-0.fc20.x86_64.rpm
    mlv-devel-1.2.1-0.fc20.x86_64.rpm
    mlv-static-1.2.1-0.fc20.x86_64.rpm
    mlv-1.2.1-0.fc20.src.rpm
    RPM-GPG-KEY-Boussicault
    mlv-1.2.1-win32.zip
    mlv-1.2.1-code_blocks.zip
    mlv-1.2.1-dev-cpp.zip
    mlv-1.2.1_macos-10.9.pkg
    mlv-1.2.1.tar.gz

N'oubliez surtout pas de mettre de nouveau le fichier `mlv-1.2.1.tar.gz`.

Il faut maintenant signer tous les fichiers qui n'ont pas encore été signés :

    cd /tmp/depot
    gpg -b --use-agent --local-user IDENTIFIANT_CLE mlv-1.2.1.tar.gz
    cd /tmp/depot/mlv-1.2.1
    gpg -b --use-agent --local-user IDENTIFIANT_CLE mlv-1.2.1-win32.zip
    gpg -b --use-agent --local-user IDENTIFIANT_CLE mlv-1.2.1-code_blocks.zip
    gpg -b --use-agent --local-user IDENTIFIANT_CLE mlv-1.2.1-dev-cpp.zip
    gpg -b --use-agent --local-user IDENTIFIANT_CLE mlv-1.2.1_macos-10.9.pkg
    gpg -b --use-agent --local-user IDENTIFIANT_CLE mlv-1.2.1.tar.gz

où `IDENtiFIANT_CLE` est l'identifiant de la clé créé dans la partie "Préparer une clé pour signer ...".

Puis on vérifie les signatures créés :

    cd /tmp/depot
    gpg  --verify mlv-1.2.1.tar.gz.sig
    cd /tmp/depot/mlv-1.2.1
    gpg --verify mlv-1.2.1-win32.zip.sig
    gpg --verify mlv-1.2.1-code_blocks.zip.sig
    gpg --verify mlv-1.2.1-dev-cpp.zip.sig
    gpg --verify mlv-1.2.1_macos-10.9.pkg.sig
    gpg --verify mlv-1.2.1.tar.gz.sig

Copiez le fichier `mlv-1.2.1.tar.gz` dans le dossier `/tmp` et générez la documentation de la bibliothèque en tapant les commandes suivantes:

    cd /tmp
    tar -xzf mlv-1.2.1.tar.gz
    cd mlv-1.2.1
    ./configure
    make
    cp -r doc/api /tmp/depot/mlv-1.2.1/

Préparons maintenant le code source du site. Pour cela, tapez les commandes suivantes

    cd /tmp/mlv-1.2.1/doc
    cp -r index.html api /tmp/site

Il ne reste plus qu'à télécharger les fichiers de distributions sur le serveur de Savannah en tapant les commandes suivantes :

    cd /tmp/depot/
    chmod 644 *
    rsync -av /tmp/depot/. LOGIN@dl.sv.nongnu.org:/releases/mlv/.

où LOGIN est votre login du serveur savannah.

Il faut maintenant mettre à jour le site web en tapant les commandes suivantes :

    TODO : Monter le site web !
    rsync -av --delete /tmp/site/. LE_SITE_WEB

# Verifier la documentation et les fichiers publiés officiellement

Testez un à un tous les liens présents dans la section téléchargement de la documentation.

Vérifiez que les paquets s'installent correctement et vérifiez que les exemples s'executent correctement.

Vérifiez que, lors de l'exécution du programme `example/beginner/10_library_information`, le numéro de version et la révision git qui apparaît à l'écran, correspond bien à la révision courante présente dans la branche master du dépôt git.