6.6. Mere om bygning af bøgerne fra CVS

Dette afsnit er til dig der har fået CVS adgang, eller dig der har haft det igennem et stykke tid, men gerne vil vide hvordan byggesystemet fungerer (eller forsøger at fungere).

Først beskrives hensigten med det nuværende system, derefter beskrives hvordan det virker, og hvilke muligheder man har med det.

Når man checker bøgerne ud fra CVS, vil jeg referere til det katalog der hedder "linuxbog" som "toplevel" og de enkelte bøgers kataloger (f.eks. applikationer, sikkerhed, mv) som subdir.

6.6.1. Sådan virker byggesystemet

Byggesystemet er (pt) en blanding af autotools til subdirs, og håndskrevne scripts til toplevel.

Den ultrakorte udgave af "hvordan man gør", efter udcheck fra CVS for at bygge bogen "BOGNAVN" som html er som følger:

[tyge@hven ~]$ ./configure <options>
[tyge@hven BOGNAVN]$ cd BOGNAVN
[tyge@hven BOGNAVN]$ make html

Men, det er langt fra hele historien.

Ideen med configure scriptet i toplevel er at det skal anvendes til at opsætte hvilke (og eventuelt hvordan) bøger man ønsker bygget på sin maskine. Dette bestemmes ved at give en række argumenter til configure. Hvis du kører ./configure --help, vil du se følgende:

6.6.2. ./configure

`configure' opsætter hvilke af "Linux - friheden til at vælge bøgerne" der skal laves på dit system.

Brug: ./configure [OPTIONS] [-- SUBDIROPTIONS]

Hvor OPTIONS kan være een eller flere af

  -h, --help             Viser denne hjælp og afslutter
  -m, --med "BØGER"      Bestemmer hvilke bøger der medtages, hvor BØGER
                         er en liste af bøger. Kombiner:
                         "itplatform friheden unix kontorbruger applikationer wm signatur admin sikkerhed program web c java dokumentation forsker"
  -a, --med-alle         Medtag alle (een stor bog) bogen
  -u, --bogurl URL       Hvilken url bøgerne skal bruge. [cvs.linuxbog.dk]

Hvor SUBDIROPTIONS kan være
      --enable-softlink  Bruger softlinks for HTML targets
Eksempel: ./configure --med "friheden applikationer" -- --enable-softlink

I det følgende vil disse argumenter blive uddybet.

Her er en liste af filer der anvendes direkte af byggeprocessen i toplevel.

Tabel 6-2. configure filer

Filnavn Beskrivelse
configure dette script kopierer en række filer til de forskellige subdirs, og kører "bootstrap", samt "configure" i disse subdirs.
Makefile.in denne fil laves af configure om til Makefile i toplevel.
faelles-filer/* disse filer kopieres af configure til de forskellige subdirs, som subdir/*
bootstrap.subdir denne fil kopieres til de forskellige subdirs, som subdir/bootstrap
Makefile.subdir denne fil kopieres af configure til de forskellige subdirs som Makefile.am, som af subdir/bootstrap laves om til Makefile
configure.ac.subdir kopieres af configure til de forskellige subdirs som subdir/configure.ac

Endvidere kopieres scriptet "misc/insertimagesize" til subdir/misc/, samt de forskellige palm relaterede filer fra misc til subdir/palm-faelles/

Tabel 6-3. configure filer

Filnavn Beskrivelse
Makefile.alle Denne fil kopieres af configure til alle/Makefile.am, hvis --med-alle argumentet blev angivet.

Når configure er færdig med at kopiere, kører configure subdir/bootstrap og subdir/configure SUBDIROPTIONS for alle de bøger der skal opsættes. Bootstrap kører de forskellige autotools værktøjer der skal til for at opsætte de forskellige subdirs. Bemærk at det således er nødvendigt at have autotools værktøjerne for at bygge bøgerne fra CVS, men det er _ikke_ nødvendigt for at bygge individuelle bøger hentet i *dist* pakker.

Den centrale del af det videre byggeforløb ligger i filerne "Makefile.subdir" (der via toplevel/configure og subdir/configure bliver til subdir/Makefile). Denne fil er den centrale at modificere for at rette de tilbageværende problemer i byggeprocessen.