Corso di C con Linux

Automake e Autoconf

 

Si consiglia vivamente ai neofiti per una maggiore comprensione di saltare i paragrafi inerenti all'autoconf e all'automake e di leggerli una volta letto il capitolo 3. Tali paragrafi sono stati posti in questa parte della guida, al fine di rendere tematicamente organico il libro. Se invece conoscete bene un pó di C, iniziate a leggere.
Avete mai compilato un'applicazione scaricata da Internet? Se sì, una volta scaricato il tarball avrete scritto i seguenti comandi:
  
cyberspace.org:~$ tar xfvz pacchetto.tar.gz
cyberspace.org:~$ ./configure
cyberspace.org:~$ make


E poi da root:
  
cyberspace.org:/home/gzoppi# make install

In questo paragrafo vediamo come creare un pacchetto e realizzare automaticamente lo script configure tramite le utility automake e autoconf. Per far ciò abbiamo essenzialmente la necessità di editare due file (configure.in e Makefile.am). L'insieme delle operazioni, che andremo a fare può essere suddiviso in diverse fasi che vediamo.

Prima fase: Dai sorgenti al configure.in.
In questa fase si deve:
Porsi nella directory dei file sorgenti.
Eseguire l'utility autoscan, che analizzando i sorgenti crea un file configure.in di base, chiamandolo configure.scan.
Editate nel modo, che vedremo il file configure.scan rinominandolo configure.in

Seconda fase: Documentazione.
Creiamo i file di documentazione : README, NEWS, AUTHORS, ChangeLog. Questa seconda fase é richiesta dall'utility automake e risulta essere particolarmente utile nello sviluppo del software e nel suo aggiornamento fornendo agli sviluppatori lo stato del nostro pacchetto e le eventuali modifiche. Dal punto di vista degli utenti, la documentazione é utile al fine della comprensione e utilizzo del pacchetto. L'organizzazione di questi file richiesti dall'automake é cosi fatta:
Changelog. Si usa questo file per memorizzare lo stato del vostro progetto e tutti i cambiamenti apportati al codice.

Di solito i ChangeLog sono fatti nel seguente modo:
            DATA         AUTORE DEL CAMBIAMENTO       E-MAIL

            * Tipo cambiamento
            * Tipo cambiamento
Esempio:
1999-09-19  Arthur Fonzarelli  <arthur.fonzie@bayreuth.de>
        * Changed version to 0.12.4.
        * Added link breaking code (aka breaklinks) and additional
          \special operators to support them.
        * Fixed a bug in slanted font code
        * Fixed a bug in TFM code that won't actually execute
          unless you have a defective TFM file.
NEWS. Questo file contiene e spiega le nuove caratteristiche aggiunte al pacchetto.

Esempio:
      
Noteworthy changes in version 1.0.4 (1999-06-07)
-----------------------------------

    * Add a very preliminary version of NOME_PACCHETTO the Handbook to
      the distribution (lynx doc/package/index.html).

    * Changed the version number to NOME_PACCHETTO ;-)
README. File generalmente richiesto per spiegare il funzionamento del programma. In parole povere: usate questo file quando avete qualcosa di fondamentale da dire sul programma.
AUTHORS. Questo file deve elencare una traccia di tutti coloro che hanno contribuito al programma. Un chiaro esempio é il seguente:
      

Authors of NOME_PACCHETTO
====================================

NOME_PACCHETTO Arthur Fonzarelli        1998-12-21
Assigns NOME_PACCHETTO and future changes.
arthur.fonzie@bayreuth.de
Designed and implemented NOME_PACCHETTO.


NOME_PACCHETTO  Matthew Zimmer         1999-01-10
Disclaims changes.
mat.zimmer@berknet.ca
Wrote io/basic.c.

Altri file che automake aggiunge e/o che dovrebbero essere presenti in ogni pacchetto sono:
Il file THANKS. Scritto dall'autore originario dell'applicazione cita e ringrazia chiunque ha contribuito allo sviluppo, e a differenza del file AUTHORS non viene mantenuto per ragioni legali.
Esempio:
      
NOME_PACCHETTO was originally written by Arthur Fonzarelli.  Other people contributed by reporting problems, suggesting various improvements or submitting actual
code.  Here is a list of those people.  Help me keep it complete and free of errors.

Simon Clark             simon@seclink.com
Luigi Rossi             wildfire@securitynet.it
John  Rigel             rigel@univerisity.edu
Franz Muller            franz@friburg.de
Bryan Smith             bryan@usa.net
Luis  Deloire           deloire@chamberg.fr
Il file INSTALL, creato automaticamente da automake, dove andranno specificate:
dipendenze da altri pacchetti
modalità di installazione
Il file COPYING, creato da automake, che non é altro che la licenza GPL.

 

Torna all'indice Generale del corso di Corso di C con Linux di Software Planet