Création de package GNU

Date: 26/02/2007 | Catégories: Developpement | Tags: ,,,,,

L'installation de packages GNU est toujours la même:

# ./configure
# make
# make install

Nous allons dans ce post étudier comment créer un package GNU respectant ce processus d'installation. Nous allons pour cela nous servir des utilitaires autoconf et automake.

Dans notre exemple, nous allons faire un package du plus célébre des programmes: helloword !
Ce programme se compose des fichiers suivants: helloword.c et helloword.h (je ne vous ferais pas l'affront de vous en donner le code source...).

La première chose à faire est d'organiser votre arborescence:

./helloword/
./helloword/AUTHORS
./helloword/README
./helloword/ChangeLog
./helloword/NEWS
/helloword/src/helloword.c
./helloword/src/helloword.h

Les fichiers AUTHORS, README, ChangeLog et NEWS sont standards et contiennent:

  • AUTHORS: Les informations sur l'auteur du package.
  • README : Description du package.
  • ChangeLog: Historique des changements (version par version).
  • NEWS: Nouveautés de la dernière version.

Nous allons maintenant configurer le fichier configure.in (à la racine de votre arborescence) qui servira de squelette à l'utilitaire autoconf (vous pouvez aussi vous servir de l'utilitaire autoscan qui générera ce fichier automatiquement):

# vi ./configure.in
AC_INIT(configure.in)
AM_INIT_AUTOMAKE(helloword, 1.0)
AC_PROG_CC
AC_PROG_INSTALL
AC_OUTPUT([
Makefile
src/Makefile
])

La macro AC_PROG_CC permet de vérifier lors de l'installation que l'ordinateur cible à bien un compilateur C.
La macro AC_PROG_INSTALL permet de vérifier lors de l'installation que l'ordinateur cible à bien l'utilitaire d'installation de binaire.

On lance ensuite la commande aclocal/autoconf, qui va elle même générer de nouveaux fichiers dans votre arborescence:

# aclocal && autoconf

Il faut alors editer les fichiers ./Makefile.am et ./src/Makefile.am de la facon suivante:

# vi ./Makefile.am
SUBDIRS= src# vi ./src/Makefile.am
bin_PROGRAMS = helloword
helloword_SOURCES = helloword.h helloword.c
helloword_CPPFLAGS = ``
helloword_LDADD = ``

La ligne CPPFLAGS permet d'ajouter des arguments lors de la pre-compilation.
La ligne LDADD permet d'ajouter des arguments lors de l'édition de lien.

On génére alors le fichier ./configure avec la commande:

# automake -a -c

Pour tester votre tout nouveau tout beau package, il suffit de lancer les trois commandes magique:

# ./configure
# make
# make install

Et voila le travail, il ne vous reste plus qu'a publier votre beau logiciel sur un des nombreux sites hébergeant les softs open-source (par exemple http://www.sourceforge.net/).

Pour résumer voici un diagramme résumant le processus:

Partager ce billet