Paquetage GNU

* Fabriquer un paquetage pour les sources (the GNU build system).

– Installer les outils pour fabriquer un paquetage GNU (debian)
* autoscan
* automake
* autoconf

– Ecrire un programme C:
* mkdir finixware; cd finixware
* mkdir src; cd src
* vim finixware.c
#include

int main()
printf(« Hello the FinixWorldn »);
return 0;

– Compiler et tester le programme C:
* gcc -o finixware finixware.c

– Paquetage
* outil: autoscan
– permet d’aider a la creation d’un fichier configure.ac (les besoins du source: include, librairie …)
– tester la portablilite (entre systeme Unix) des methodes et des fonctions
– creer un fichier vide: configure.ac
=> cd finixware
=> touch configure.ac
=> autoscan
=> cp configure.scan configure.ac (copier le fichier)
– ajouter des elements dans configure.ac
=> AC_INIT(finixware, 1.0)
=> AM_INIT_AUTOMAKE
=> AC_CONFIG_FILES([Makefile])

* aclocal
– permet de creer les macros pour le deploiement futur sur une autre machine
– rendre independant de la pateforme l’utilisation des outils qui vont suivre
* creer squelette Makefile.am
– vim Makefile.am
bin_PROGRAMS = finixware
finixware_SOURCES = finixware.c
* autoheader
– creation du fichier config.h.in (qui va servir pour configure)
=> autoheader
* automake
– creer le fichier Makefile.in
– automake necessite les fichiers suivant:
# install-sh
# missing
# INSTALL
# NEWS
# README
# AUTHORS
# ChangeLog
# COPYING
# depcomp
– automake avec l’option « -a » permet de generer certain de ces fichiers:
# install-sh
# missing
# INSTALL
# COPYING
# depcomp
– les autres sont a creer (dans notre exemple, ils seront vides):
=> touch NEWS README AUTHORS ChangeLog
=> automake -a (qui va creer le fichier Makefile.in)

* autoconf
– permet de creer le fichier configure.in (qui va servir pour configure)
=> autoconf

* Tester le configure
– ./configure (pour voir si ca marche)

* Creer le paquetage
– fournir un fichier src.tar.gz (ou tar.bz2)
– fichier de type finixware-1.0.targ.gz (voir le fichier configure.ac pour les parametres)
– contenant les sources, les fichiers pour compiler.
=> make dist-gzip (ou dist-bzip2)
– on obtient le fichier suivant: finixware-1.0.tar.gz

* Tester le paquetage
– mkdir ../finixware-test
– cp finixware-1.0.tar.gz ../finixware-test/
– cd ../finixware-test/
– tar xzvf finixware-1.0.tar.gz
– cd finixware-1.0

– ./configure
– make
– make install
– which finixware (normalement celui qui se trouve dans /usr/local/bin)
– finixware (executer)
=> Hello the FinixWorld

et voila le resultat 🙂

– fin
– Annexe
– fichier configure.ac
______________________
#

    – Autoconf


      # Process this file with autoconf to produce a configure script.

      AC_PREREQ(2.59)
      AC_INIT(finixware, 1.0)
      AM_INIT_AUTOMAKE
      AC_CONFIG_SRCDIR([src/finixware.c])
      AC_CONFIG_HEADER([config.h])

      # Checks for programs.
      AC_PROG_CC

      # Checks for libraries.

      # Checks for header files.

      # Checks for typedefs, structures, and compiler characteristics.

      # Checks for library functions.
      AC_CONFIG_FILES([Makefile])
      AC_OUTPUT
      ______________________

      – fichier finixware.c
      ______________________
      #include

      int main()
      printf(« Hello the FinixWorldn »);
      return 0;

      ______________________