# Håndbog for scriptet &kdesvn-build;

Michael
Pyne

    michael.pyne@kdemail.net

Carlos
Woelz

    carloswoelz@imap-mail.com

&erik.kjaer.pedersen.role;

2006
Michael Pyne
2005
Carlos Woelz
&FDLNotice;
2006-03-28
1.1

&kdesvn-build; er et script som bygger og installerer &kde;, direkte fra kildekoden som hentes fra &kde;'s &svn;-arkiv.

KDE
kdesdk
SVN
Subversion
KDE-udvikling

## Indledning

&kdesvn-build; er et script som hjælper brugere at installere &kde; fra kildelageret &svn;.

Her dokumenterer vi syntaks og tilvalg for &kdesvn-build;s indstillingsfil, dets kommandolinjeflag, funktioner og en oversigt over alle nødvendige skridt som kræves for at bygge &kde; fra kildekode, inklusive de skridt du skal udføre ved brug af andre værktøjer, eller med andre ord, skridt som ikke automatisk udføres af scriptet &kdesvn-build;.

## Sådan kommer vi i gang

I dette kapitel viser vi hvordan &kdesvn-build; bruges til at tjekke moduler ud fra &kde;-arkivet og bygge dem. Vi sørger også efor n grundlæggende forklaring af &kde;'s &svn;-struktur og de skridt du skal udføre inden scriptet køres.

Alle emner som præsenteres i dette kapitel dækkes med endnu flere detaljer i guiden Building &kde; from Source Step by Step Guide på hjemmesiden for &kde;'s kvalitetsgruppe. Hvis du kompilerer &kde; første gang, er det en god idé at læse den, eller rådspørge den som en referencekilde. Du finder detaljeret information om pakkeværktøj og krav, almindelige faldgreb ved kompilering og strategier og information om at køre den nye &kde;-installation.

### Forbered systemet til at bygge &kde;

#### Indstil en ny brugerkonto

Du anbefales at hente og bygge &kde; med en separat brugerkonto. Hvis du allerede har &kde;-pakker installerede, er det bedste valg at oprette en anden (særlig) brugere til at bygge og køre den nye &kde;. Fordelen ved at bygge &kde; for en særlig bruger er at du ikke kan forstyrre basissystemet, og du har altid en måde at arbejde bekvemt når ting går galt.

Senere kan du installere som systemadministrator hvis du vil. Dette dokument dækker ikke en installation som systemadministrator. Hvis du udfører en systeminstallation, ved du formodentlig alligevel hvad du gør. Hvis ikke, kan du behøve at konsultere dokumentation eller hjælpesteder for din distribution, for at udføre og bruge systeminstallationen rigtigt.

#### Sørg for at systemet er klart til at bygge &kde;'s kildekode

Inden du bruger scriptet &kdesvn-build; (eller en anden byggestrategi) skal du installere udviklingsværktøjer og biblioteker som behøves for &kde;. Den fuldstændige liste med værktøjer som behøves findes på siden &kde;'s kompileringskrav.

Her er en liste med nogle af de ting du vil behøve:

- Automake version 1.7 eller senere. (Kun kde 3)

- Autoconf version 2.57 eller senere. (Kun kde 3)

- CMake 2.4.0, eller senere. Visse varianter af version 2.3 kan måske også kompilere KDE 4, se wikien CMake Introduction (kun KDE 4).

- Klientprogrammet for &svn;, inklusive understøttelse for sikker HTTP (https). For at sikre dig om nødvendig understøttelse findes, kan du køre ``svn `--version```. Hvis modulet ra_dav siger at den håndterer metoden https, skulle du være klar til at køre.

- Oversætteren gcc, med understøttelse for C++. Version 3.3 eller 3.4 virker bedst for øjeblikket.

- Sørg for at tjekke siden &kde;'s kompileringskrav for at være sikker på at alle andre biblioteker som kræves er inkluderede.

En undtagelse er &Qt;-biblioteket. &kdesvn-build; installerer normalt en kopi af &Qt; det være sig du har det installeret eller ej, så det er ikke nødvendigt at du har det. Hvis du ikke vil bruge kopien af &Qt;, skal du gøre følgende:

- Sørg for at fjerne modulet qt-copy fra din indstillingsfil eftersom du ikke behøver den, og at have den ville tilføje ekstra tid til byggeprocessen.

- Ændr indstilling af tilvalget qtdir i din indstillingsfil så det peger på systemets &Qt;. Det er normalt det samme som indstillingen af $`QTDIR` i systemet.

- Hvis du ikke allerede har installeret &Qt;, installeres det, inklusive eventuelle relevante -dev eller -devel pakker. Du behøver mindst &Qt; 3.3 hvis du bygger &kde; 3.5 eller &Qt; 4.0 hvis du bygger &kde; 4.

Visse af pakkerne er opdelte i biblioteker (eller programmer eller værktøjer) og udviklingspakker. Du behøver i det mindste programmet eller biblioteket og dets udviklingspakke. Hvis du er i tvivl installér alle. Bibliotekerne du behøver ændres afhængig af modulerne du har til hensigt at bygge, eftersom hvert modul har sine egne krav. Guiden Building &kde; from Source Step by Step har flere detaljer om specifikke værktøjer og tekniker som bruges til at installere og finde programmellet som kræves.

#### Indstilling af kdesvn-build

##### Installér kdesvn-build

Du har formodentlig allerede en version af scriptet &kdesvn-build; installeret på systemet. Hvis du imidlertid ikke har det kan du hente det fra hjemmesiden for &kdesvn-build;, eller finde det fra dets hjem i &kde;'s kildekodearkiv.

1. For at hente &kdesvn-build; fra hjemmesiden for &kdesvn-build;, gå blot til hjemmesiden for &kdesvn-build; og hent seneste passende udgave. Udgaverne pakkes som et komprimeret tar-arkiv, som du kan pakke op med &ark; eller `tar`. Indholdet i arkivet omfatter selve scriptet &kdesvn-build;, og et eksempel på en indstillingsfil (`kdesvn-buildrc-sample`).

2. Ellers kan du skaffe &kdesvn-build; fra dets kildekodearkiv, på: http://websvn.kde.org/trunk/KDE/kdesdk/scripts/. Dette er scriptmappen for &kde;'s programmeludviklingsværktøjer, som er hjemmemappen for &kdesvn-build;. Du kan klikke på indgangen `kdesvn-build`, hvilket fører dig til en side hvor du kan hente den seneste udgave. Gør det, og gem den på et praktisk sted på din harddisk. Gør det samme med `kdesvn-buildrc-sample` hvis du behøver det.

Uafhængigt af hvilken teknik du bruger, skal du sikre dig at filen `kdesvn-build` er kørbar. Af bekvemmelighedsgrunde bør du sikre dig at den findes i en mappe som indgår i miljøvariablen `PATH`, ellers kan du få meddelelser som siger at kommandoen ikke blev fundet.

##### Forbered indstillingsfilen

Selvom &kdesvn-build; ikke kræver at du laver en indstillingsfil, gør det arbejdsstrømmen meget enklere. Ved at bruge en indstillingsfil, kan du styre hvilke moduler som installeres, eller fjerne moduler du ikke vil installere. &kdesvn-build; installerer normalt en nyttig &kde;-installation med meget generelle installationsflag, som kan være anderledes end dine behov. Det er altså bedst at bruge en indstillingsfil

Indstillingsfilen skal hedde `.kdesvn-buildrc`. Filen skal installeres i hjemmemappen (`~`), og indeholde alle indstillingsdata som kræves for at scriptet skal køre, som konfigureringstilvalg, kompileringstilvalg, stedet for kildekoden, installationens mål (prefix), modulerne som skal bygges, osv. Standardindstillingsdata bliver sørget for af filen `kdesvn-buildrc-sample`, som du kan kopiere til `~/.kdesvn-buildrc` og derefter redigere.

Du finder mere information om syntaksen i en indstillingsfil i og .

### Angiv indstillingsinformation

For at bruge &kdesvn-build; skal du have en fil i din hjemmemappe som hedder `.kdesvn-buildrc`, som indstiller generelle tilvalg og angiver modulerne som du vil hente og bygge.

Det er muligt at bruge andre indstillingsfiler for &kdesvn-build;, som beskrives i . Hvis du behøver at bruge flere indstillinger, se dette afsnit.Her antager vi at indstillingerne er opbevarede i `~/.kdesvn-buildrc`.

Den enkleste måde at fortsætte er at bruge filen `kdesvn-buildrc-sample` som skabelon, og ændre generelle indstillinger til at stemme med det du vil have, og desuden ændre listen med moduler du vil bygge.

Standardindstillingerne bør virkeligheden allerede være passende for at udføre byggeprocessen for &kde;. Nogle af de indstillinger som du måske vil ændre omfatter:

- binpath, for at ændre listen med mapper som gennemsøges for kommandoer. Dette er nøjagtigt det samme som variablen `PATH` i skallen.

- kdedir, som ændrer målmappen som &kde; installeres i. Standardværdien er `~/kde`, som er en enkeltbruger-installation.

- qtdir, som styrer søgestien til installationen af &Qt; der bruges. Standardværdien er at bruge modulet qt-copy fra &kde;'s &svn;-arkiv. (`~/kdesvn/build/qt-copy`)

- svn-server, som vælger hvilken URL som kildekoden hentes fra. Dette er nyttigt hvis du er en udvikler med en &kde; &svn;-konto.

Efter den generelle del findes en liste med moduler at bygge, omgivne af linjerne module ... end module. Kontrollér at de listede moduler virkelig er de moduler du vil bygge. Standardvalgmulighederne fra filen `kdesvn-buildrc-sample` skulle være tilstrækkelige til at få en ganske fuldstændig installation af &kde;. Gem resultatet som `.kdesvn-buildrc` i din hjemmemappe.

Hvis du vil finjustere `.kdesvn-buildrc`, kig så på for detaljeret information om alle indstillingstilvalg.

### At bruge scriptet &kdesvn-build;

Nu er du parat til at køre scriptet. Log ind til brugeren som du bruger for at kompilere &kde; i et terminalvindue, og kør scriptet:

    &percnt;su - udviklings-brugernavn
    &percnt;kdesvn-build

Nu skal scriptet begynde at hente kildekoden og kompilere den. Afhængig af hvor mange moduler du henter, er det muligt at &kdesvn-build; ikke lykkes første gang du kompilerer &kde;. Opgiv ikke håbet!

&kdesvn-build; logger uddataen fra hver kommando som køres. Normalt opbevares logfilerne i `~/kdesvn/log`. For at se hvad som forårsagede en fejl for et modul ved den seneste &kdesvn-build;-kommando, er det oftest tilstrækkeligt at kigge i `~/kdesvn/log/latest/modulnavn/error.log`.

I den fil ser du fejlen som forårsagede at byggeprocessen mislykkedes for dette modul. Hvis filen siger (længst nede) at visse pakker mangler, forsøg at installere pakken (inklusive eventuelle passende -dev pakker) inden du forsøger at bygge dette modul. Eller hvis fejlen synes at være en byggefejl er det nok en fejl i &kde;'s kildekode, som forhåbentligt løses indenfor nogle dage. Hvis det ikke er løst indenfor denne tid, så send gerne e-mail til kde-devel@kde.org (abonnement kræves måske først) for at rapportere byggefejlen.

Du finder flere almindelige eksempler på ting som kan gå galt og deres løsninger, samt generelle vink og strategier for at bygge &kde;i guiden Building &kde; from Source Step by Step.

For mere information om logningssystemet i &kdesvn-build;, se .

### Opsætning af miljøet for at køre den friske &kde;

Under antagelse af at du bruger en særlig bruger til at bygge &kde; og allerede har en installeret version af &kde;, kan det være noget tricket at køre det nye &kde;, eftersom den nye &kde; skal foretrækkes frem for den gamle. Ændr miljøvariabler for at sikre dig at dette sker.

#### Ændr startprofilindstillinger

Filen `.bash_profile` er indlogningsindstillingerne for den populære skal bash som bruges af mange &Linux;-distributioner. Hvis du bruger en anden skal, kan du behøve at justere eksemplerne som gives i dette afsnit for dit specifikke skal.

Åbn eller opret filen `.bash_profile` i hjemmemappen med din foretrukne editor, og tilføj følgende i slutningen af filen. Hvis du bygger modulet qt-copy (det gør du normalt), tilføj:

    QTDIR=(søgesti til qtdir)   # Såsom normalt ~/kdesvn/build/qt-copy.
    KDEDIR=(søgesti til kdedir) # Såsom normalt ~/kde.
    KDEDIRS=$KDEDIR
    PATH=$KDEDIR/bin:$QTDIR/bin:$PATH
    MANPATH=$QTDIR/doc/man:$MANPATH

    # Gør det passende hvis ikke LD_LIBRARY_PATH allerede er sat.
    if [ -z $LD_LIBRARY_PATH ]; then
      LD_LIBRARY_PATH=$KDEDIR/lib:$QTDIR/lib
    else
      LD_LIBRARY_PATH=$KDEDIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH
    fi

    export QTDIR KDEDIRS PATH MANPATH LD_LIBRARY_PATH

eller hvis du ikke bygger qt-copy (og bruger systemets &Qt;) tilføj dette i stedet:

    KDEDIR=(søgesti til kdedir)  # Såsom ~/kde normalt.
    KDEDIRS=$KDEDIR
    PATH=$KDEDIR/bin:$QTDIR/bin:$PATH

    # Gør det passende hvis ikke LD_LIBRARY_PATH allerede er sat.
    if [ -z $LD_LIBRARY_PATH ]; then
      LD_LIBRARY_PATH=$KDEDIR/lib
    else
      LD_LIBRARY_PATH=$KDEDIR/lib:$LD_LIBRARY_PATH
    fi

    export KDEDIRS PATH LD_LIBRARY_PATH

Hvis du ikke bruger en særlig bruger, idstillesn en anderledes $`KDEHOME` for det nye miljø i din `.bash_profile`:

    export KDEHOME="${HOME}/.kde-svn"

    # Opret hvis det behøves
    [ ! -e ~/.kde-svn ] && mkdir ~/.kde-svn

Hvis din K-menu senere er tom eller for tætpakket med programmer fra din distribution, skal du måske angive miljøvariablen XDG i din `.bash_profile`:

    XDG_CONFIG_DIRS="/etc/xdg"
    XDG_DATA_DIRS="${KDEDIR}/share:/usr/share"
    export XDG_CONFIG_DIRS XDG_DATA_DIRS

#### Start &kde;

Når du nu har justeret dine miljøindstillinger til at bruge den rigtige &kde;, er det vigtigt at sikre dig at det rigtige `startkde`-script også bruges.

Åbn tekstfilen `.xinitrc` fra hjemmemappen, eller opret den hvis det behøves. Tilføj linjen:

    exec ${KDEDIR}/bin/startkde

Det kan være nødvendigt at udføre samme skridt med filen `.xsession`, også i hjemmemappen. Dette er især sandt hvis grafiske indlogningshåndteringer såsom &kdm;, gdm eller xdm bruges.

Start nu den nye &kde;: i &BSD;- og &Linux;-systemer med understøttelse for virtuelle terminaler, bruges tastekombinationerne &Ctrl;&Alt;F1 ... &Ctrl;&Alt;F12 til at skifte til virtuel konsol 1 til og med 12. Dette tillader dig at køre flere end et desktopmiljø samtidigt. De første seks er tekstterminaler, og de følgende seks er grafiske skærme.

Hvis den grafiske indlogningshåndtering vises i stedet når du starter maskinen, kan du bruge det nye &kde;-miljø, også selvom det ikke angives som et tilvalg. De fleste indlogningshåndteringer, inklusive &kdm;, har et tilvalg at bruge for en "Egen session" når du logger ind. Med dette tilvalg indlæses dine sessionsindstillinger fra filen `.xsession` i din hjemmemappe. Hvis du allerede har ændret filen som beskrevet ovenfor, skulle dette tilvalg starte den nye &kde;-installation.

Hvis den ikke gør det, er der noget andet som du kan prøve som normalt skulle virke. Tryk på &Ctrl;&Alt;F2, så vises en tekstterminal. Log ind som den særlige bruger og skriv:

    startx -- :1

Du kan køre &kde; fra kildekode og den gamle &kde; samtidigt. Log ind som din almindelige bruger, og start den stabile &kde;-desktop. Tryk på &Ctrl;&Alt;F2 (eller F1, F3, etc.) så vises en tekstterminal. Log ind som den særlige &kde; &svn;-bruger og skriv:

    startx -- :1

Du kan gå tilbage til &kde;-desktoppen for din almindelige bruger ved at trykke på genvejstasten for desktoppen som allerede kører. Den er normalt &Ctrl;&Alt;F7, men du skal måske bruge F6 eller F8 i stedet. For at returnere til &kde; kompileret med &kdesvn-build;, skal du bruge samme sekvens, men med næste funktionstast. Hvis du for eksempel skulle skrive &Ctrl;&Alt;F7 for at skifte til den almindelige &kde;, skal du skrive &Ctrl;&Alt;F8 for at gå tilbage til &kde; bygget med &kdesvn-build;.

## Scriptets funktioner

### Oversigt over funktioner

Funktionerne i &kdesvn-build; omfatter:

- For udviklere: Understøtter at bygge dokumentation af programmeringsgrænsefladen for et modul.

- Understøtter meddelelsesniveauer for uddata som strækker sig fra at være meget stille til et fuldstændigt fejlsøgningsniveau.

- &kdesvn-build; kan med hjælp af kdesvn-builds hjemmeside tillade hurtig udcheckning af visse moduler. Hvis modulet du checker ud allerede er pakket på denne hjemmeside, henter kdesvn-build denne version og forbereder den til brug på din computer.

  Dette er hurtigere for dig, og hjælper til at mindske belastningen på de anonyme Subversion-servere på kde.org.

- Har udmærket understøttelse for modulet qt-copy, inklusive valgfri anvendelse af fejlrettelser og optimeringsprogramrettelser i modulet qt-copy.

- &kdesvn-build; har farvelagt uddata.

- &kdesvn-build; kræver ikke at en grafisk grænseflade er tilgængelig for at virke. Du kan altså bygge &kde; uden at behøve et alternativt grafisk miljø.

- Understøtter indstilling af standardtilvalg for alle moduler (såsom kompileringsindstillingerne eller konfigureringsvalgmulighederne). Sådanne tilvalg kan desuden normalt ændres for specifikke moduler.

  Desuden tilføjer &kdesvn-build; standardflag hvor det er passende, for at spare dig besvær og mulige fejl ved at indtaste dem selv.

- &kdesvn-build; kan tjekke dele af et modul ud, for de situationer hvor du kun behøver et program fra et stort modul.

- For udviklere: Vil påminde dig hvis du bruger svn+ssh:// men ssh-agent ikke kører, eftersom det fører til gentagne forespørgsler om kodeord fra ssh.

- Kan sende e-mail-rapporter med fejl til en bruger.

- Kan slette byggmappen for et modul efter det er installeret for at spare plads på bekostning af fremtidig kompileringstid.

- Stederne for mapperne som bruges af &kdesvn-build; kan indstilles (endog pr modul).

- Kan bruge sudo, eller en anden brugerspecificeret kommando til at installere moduler så &kdesvn-build; ikke behøver at køres som systemadministrator.

- &kdesvn-build; kører normalt med reduceret prioritet for at lade dig fortsætte med at bruge maskinen mens &kdesvn-build; arbejder.

- Har understøttelse for at bruge &kde;'s &svn; mærker og grene.

- &kdesvn-build; bruger et sæt teknikker for at forsøge at garantere en byggeproces der lykkes.

- Der er understøttelse for at genoptage en byggeproces fra et givet modul. Du kan til og med ignorere visse moduler midlertidigt for en given byggeproces.

- &kdesvn-build; understøtter også brugen af sekvensen ~/ til at repræsentere din hjemmemappe i en indstillingsfil.

- Tjekker automatisk ud eller opdaterer moduler fra &svn;, ifølge hvad som er passende.

- &kdesvn-build; kan hurtigt udføre en partiel byggeproces for et modul direkte fra kommandolinjen, når du kun behøver at opdatere en del af et modul.

- &kdesvn-build; henter automatisk og laver det nødvendige bibliotek `/admin` for et modul hvis det ikke er hentet fra &svn; første gang af en eller anden grund.

- &kdesvn-build; viser fremgangen af byggeprocessennår &unsermake; bruges, og tager altid tid på byggeprocessen så du ved hvor lang tid den tog bagefter.

- Forsøger automatisk at genbygge moduler som bruger en inkrementel byggeproces, hvilket tenderer at mislykkes efter visse typer af indtjekninger.

- Kan genoptage en byggeproces fra en bestemt modul.

- Levereres med et indbygget rimeligt sæt standardtilvalg passende til at bygge en grundlæggende enbrugerinstallation af &kde; fra det anonyme &svn;-arkivet.

- Levereres med understøttelse for &unsermake;.

- Ekspanderer dine indstillingstilvalg med tilde. Du kan for eksempel angive:

      qtdir ~/kdesvn/build/qt-copy

- Indstillelige bygge-, kildekode-, og logningsmapper

- Sætter automatisk et byggesystem op, med kildekodemappen adskilt fra byggemappen for at holde kildekodemappen uberørt. Undtagelsen er qt-copy, som ikke er konstrueret til at bygges sådan (hvis du ikke vil prøve QT med separat byggemappe).

- Du kan angive globale tilvalg at bruge for alle moduler som tjekkes ud, og du kan desuden angive tilvalg som skal bruges for enkelte moduler.

- Eftersom autoværktøjerne sommetider bliver usynkroniserede med ændringer i kildekodetræet, kan du tvinge til at et modul bygges om ved at oprette en fil som hedder refresh-me i byggemappen for modulet det drejer sig om, eller ved at køre &kdesvn-build; med flaget `--refresh-build`.

- Du kan angive diverse miljøvariabler som skal bruges under byggeprocessen, inklusive `KDEDIR`, `QTDIR`, `DO_NOT_COMPILE` og `CXXFLAGS`.

- Kommandologning. Logger dateres og nummereres så du altid har en log af en kørsel af scriptet. Desuden skabes et symbolsk link som hedder latest, som altid peger på den seneste log i logmappen.

- Hvis du bruger en brugerbygget &kde; i stedet for en systembygget (som du skal være systemadministrator for at installere), kan du lada scriptet installere for dig. Jeg har ikke gransket koden, og den bruger kaldet `system()` flitigt, så jeg anbefaler for øjeblikket ikke at køre den som systemadministrator.

- Du kan bruge make-install-prefix til at indlede byggekommandolinjen med en separat kommando, hvilket er nyttigt for sudo.

- Du kan bruge tilvalget apidox for automatisk at bygge og installere dokumentation om programmeringsgrænsefladen for visse moduler.

- Du kan nøjes med at tjekke en delmængde af en &kde; &svn;-modul ud. Du vil for eksempel kunne kunne nøjes med at tjekke taglib ud fra kdesupport, eller kun K3B fra extragear/multimedia. Scriptet henter automatisk kde-common hvis det behøves for at få byggeprocessen til at fungere.

- Du kan lade som om du udfører handlingen. Hvis du sender med `--pretend` eller `-p` på kommandolinjen, giver scriptet en meget udførlig beskrivelse af de kommandoer som skal gøres, uden i virkeligheden at udføre dem.

- Støtte for at tjekke specifikke grene af &svn;-moduler ud. Arbejdet behøver stadigvæk at gøres færdigt, men du kan allerede vælge grenen du vil bygge med indstillingstilvalget module-base-path.

### Byggelogning i &kdesvn-build;

#### Oversigt over logning

Logning er en funktion i &kdesvn-build; hvorved uddataen fra hver kommando som &kdesvn-build; kører gemmes i en fil til senere undersøgelse, om nødvendigt. Dette gøres eftersom det ofte er nødvendigt at have uddata fra disse programmer når et byggefejl opstår, eftersom der er så mange grunde til at en byggeprocess kan mislykkes fra begyndelsen.

##### Logningsmappens layout

Loggerne opbevares altid i logmappen. Målet for logmappen styres af tilvalget log-dir, som normalt er `${source-dir}/log` (hvor ${source-dir} er værdien af tilvalget source-dir. I resten af dette afsnit kaldes denne værdi ${log-dir}).

I ${log-dir} er der et sæt mapper, en for hver gang &kdesvn-build; er kørt. Hver mappe navngives med dato og kørenummer. Eksempelvis, den anden gang &kdesvn-build; køres 26. maj, 2004, vil en mappe som hedder `2004-05-26-02` blive lavet, hvor 2004-05-26 står for datoen og -02 er kørenummeret.

For din bekvemmelighed laver &kdesvn-build; også et link til loggerne for den seneste kørsel, som hedder `latest`. Loggerne for den seneste kørsel af &kdesvn-build; vil altid findes under `${log-dir}/latest`.

Hver mappe for en kørsel af &kdesvn-build; indeholder nu på sin side et sæt mapper, en for hvert &kde;-modul som &kdesvn-build; forsøger at bygge. Desuden findes en fil som hedder `build-status` i mappen, som lader dig afgøre hvilke moduler som blev bygget og hvilke som mislykkedes.

Hvis et modul selv har et delmodul (såsom extragear/multimedia, playground/utils eller KDE/kdelibs), skal der være en tilsvarende struktur i logmappen. Loggerne for KDE/kdelibs efter den seneste kørsel af &kdesvn-build; er for eksempel i `${log-dir}/latest/KDE/kdelibs`, og ikke i `${log-dir}/latest/kdelibs`.

Du finder et sæt filer for hver handling som &kdesvn-build; udfører i hver modullogmappe. Hvis &kdesvn-build; opdaterer et modul, kan du se filnavne såsom `svn-co.log` (for en udtjekning af et modul) eller `svn-up.log` (når et modul opdateres som allerede er tjekket ut). Hvis kommandoen `configure` blev kørt, kan du forvente dig at se filen `configure.log` i mappen.

Hvis en fejl opstod, bør du kunne se en forklaring af hvorfor i en af filerne. For at hjælpe til med at afgøre hvilken fil som indeholder fejlen, laver &kdesvn-build; et link fra filen med fejlen (såsom `build-1.log` til en fil som hedder `error.log`).

Slutresultatet af alt dette er at for at se hvorfor et modul mislykkedes at bygges efter den seneste kørsel af &kdesvn-build;, er filen du først skal kigge i `${log-dir}/latest/modulnavn/error.log`.

Hvis filen `error.log` er tom (især efter en installation), var der måske ikke nogen fejl. Nogle værktøjer som bruges af &kde;'s byggesystem rapporterer sommetider en fejl selvom der ikke var en.

Desuden undgår nogle kommandoer omdirigering af uddata som &kdesvn-build; laver, og går forbi logfilen under visse omstændigheder (normalt når den første udtjekning fra &svn; sker), og fejluddata findes ikke i logfilen i dette tilfælde, men i stedet i terminalen hvor &kdesvn-build; blev kørt

## Formatet for .kdesvn-buildrc

For at bruge scriptet skal du have en fil i din hjemmemappe som hedder `.kdesvn-buildrc`, som beskriver modulerne som du vil hente og bygge.

Det begynder med globale tilvalg, angivne som følger:

    global
    tilvalg-navn tilvalg-værdi
    [...]
    end global

De følges derefter af en eller flere modulsektioner, angivne på følgende måde:

    module modul-navn
    tilvalg-navn tilvalg-værdi
    [...]
    end module

modul-navn skal være et modul i &kde;:s &svn;-arkiv (for eksempel kdelibs eller kdebase). Visse tilvælg sætter de globale valgmuligheder ud af kraft, visse tilføjes til de globale valgmuligheder og visse globale tilvalg kan simpelthen ikke sættes ud af kraft.

Følgende er en alfabetisk liste med tilvalg du kan bruge. Klik på tilvalget for at finde ud af mere om det. Hvis noget ikke er dokumenteret, så send gerne e-mail til forfatterne med adressen som du finder ovenfor.

- apidox, for at bygge dokumentation over programmeringsgrænsefladen

- apply-qt-patches, for at forbedre qt-copy

- binpath, for at indstille variablen `PATH`.

- branch, for at tjekke ud fra en gren i stedet for /trunk.

- build-dir, for at angive mappe at bygge i.

- checkout-only, for kun at tjekke dele af et modul ud.

- cmake-options for at angive hvilke flag et modul skal indstilles med ved brug af cmake.

- colorful-output for at tilføje farve til scriptets uddata.

- configure-flags for at angive hvilke flag et modul skal indstilles med.

- cxxflags for at definere variablen `CXXFLAGS`.

- dest-dir for at ændre mappenavn for et modul.

- disable-agent-check, for at forhindre at kdesvn-build kontrollerer SSH-agentens status.

- do-not-compile, for at markere mapper så de springes over af byggeprocessen.

- inst-apps, for at kun bygge og installere visse mapper.

- install-after-build, for at undgå at installere efter byggeprocessen.

- kdedir, for at angive mappen hvor &kde; skal installeres.

- kde-languages, for at indstille oversættelsespakken at hente og installere.

- libpath, for at sætte variablen `LD_LIBRARY_PATH`.

- make-install-prefix, for at køre et hjælpeprogram (såsom sudo) under installationen.

- make-options, for at sende flag til byggeprogrammet.

- manual-build, for at undgå at modulet bygges automatisk.

- manual-update, for at undgå at noget gøres automatisk med modulet.

- module-base-path, for at ændre hvorfra modulet hentes. (nyttigt for grene og mærker).

- niceness, for at ændre processorprioriteten.

- no-rebuild-on-fail, for at undgå at køre byggeprocessen om igen hvis den mislykkes.

- qtdir, for at angive søgestien til &Qt;.

- set-env, for at sætte en miljøvariabel.

- source-dir, for at ændre hvor kildekoden hentes.

- stop-on-failure, for at få .kdesvn-build at stoppe så snart en alvorlig fejl findes.

- svn-server, for at ændre serveren som kildekoden automatisk hentes fra.

- use-unsermake, for at bruge det avancerede byggesystem unsermake.

Her er en tabel over de forskellige valgmuligheder, og nogle kommentarer om dem. Alle tilvalg som sætter et globat tilvalg ud af kraft, gør det også for et kommandolinjeflag.

### Tilvalgstabel

Tilvalgsnavn | Modul -> global opførsel | Noter
--- | --- | ---

apidox

Sætter global ud af kraft

Sæt dette til true for at få &kdesvn-build; til automatisk at bygge og installere dokumentation om programmeringsgrænsefladen for modulet efter den normale byggeproces. Det virker kun for moduler hvor make apidox gør noget, inklusive , blandt andet kdelibs, kdebase og koffice.

Dette tilvalg virker ikke for moduler som bruger &unsermake;, på grund af svagheder i byggesystemet med unsermake.

apply-qt-patches

Sætter global ud af kraft

Dette er kun nyttigtt for qt-copy. Hvis det er stillet til en værdi andet end nul, køres scriptet apply-patches i qt-copy inden byggeprocessen, for at udføre uofficielle programrettelser i qt-copy. Eftersom disse programrettelser normalt er grunden til at bruge qt-copy i stedet for en standardversion af &Qt;, skulle det ikke være skadligt at aktivere dette. Standardværdi er at aktivere programrettelserne.

binpath

Sætter global ud af kraft

Sæt dette for at bruge miljøvariablen PATH under byggeprocessen. Du kan ikke dette ud af kraft i et modultilvalg. Standatdværdi er `/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin`. Miljøvariablen skal indeholde søgestier til udviklingsværktøjerne adskilte med kolon. Søgestierne `$KDEDIR/bin` og `$QTDIR/bin` tilføjes automatisk. Du kan bruge tilde (~) for eventuelle søgestier du tilføjer med dette tilvalg.

branch

Sætter global ud af kraft

Angiv dette for at tjekke ud fra en gren af &kde; i stedet for standarden "trunk", hvor &kde;-udvikling sker. For eksempel for at tjekke grenen &kde; 3.4 ud, skal du angive tilvalget "3.4".

Bemærk at visse moduler bruger et anderledes grennavn. I særdeleshed følger det krævede modul arts ikke &kde;'s versionsnummer. Modulet arts som hørte sammen med &kde; 3.4 var version 1.4.

Hvis det mislykkes for kdesvn-build at hente en gren med dette tilvalg, kan du behøve at angive URL'en for at hente fra manuelt med tilvalget override-url.

build-dir

Sætter global ud af kraft

Brug dette for at skifte mappen som indeholder kildekoden at bygge. Der er tre forskellige måder at bruge det:

- Relativt til &kde;:&svn;-kildekodemappe (se tilvalget source-dir). Det er standard, og måden som scriptet virkede frem til version 0.61. Denne tilstand vælges hvis du indskriver et mappenavn som ikke begynder med tilde (~) eller skråstreg (/).

  Standardværdi er `build`

- Absolut søgesti. Hvis du angiver en søgesti som begynder med /, bruges søgestien direkte. For eksempel `/tmp/kde-obj-dir/`

- Relativt til din hjemmemappe. Hvis du angiver en søgesti som begynder med ~, bruges søgestien relativt til din hjemmemappe, på tilsvarende måde som skallens ekspansion af tilde. Forl eksempel ville `~/builddir` indstille byggemappen til `/home/brugernavn/builddir`

Dette kan, måske noget uventet, ændres pr modul.

checkout-only

Sætter global ud af kraft

Sæt dette for kun at tjekke kildekode ud fra &svn; del for del. Værdien af tilvalget skal være en liste med mapper adskilte med mellemrum at tjekke ud. Hvis du ikke inkluderer mappen admin, inkluderes den automatisk (hvis det behøves). Når du tjekker ud del for del hentes mappen admin ind fra kde-common, hvilket er stedet den findes på &svn;-serveren. Selvom tilvalget sætter det globale tilvalg ud af kraft, skal være klar over at det at angive dette som et globalt tilvalg ikke giver mening.

cmake-options

Tilføjer til i globale tilvalg (bortset fra qt-copy)

brug dette tilvalg til at angive hvilke flag som skal sendes til &cmake; når byggesystemet for modulet laves. Når det bruges som et globalt tilvalg, bruges det for alle moduler som scriptet bygger. Når det bruges som et modultilvalg, lægges det til i slutningen af de generelle valgmulighederne. Dette tillader dig angive fælles CMake-tilvalg i den globale del.

Dette tilvalg erstatter configure-flags for KDE 4-moduler, eftersom de bruger CMake for at bygges.

Eftersom valgmulighederne sendes direkte til kommandolinjen for CMake, skal de angives som de skulle skrives til CMake. For eksempel:

    cmake-options -DRPATH_STYLE=default

Eftersom dette er besværligt, anstrenger &kdesvn-build; sig for at sikre at øvrige tilvalg er rigtigt indstillet, så du skulle kunne efterlade dette tilvalg tomt.

configure-flags

Tilføjer globale tilvalg (undtagen for qt-copy)

Brug dette tilvalg for at angive hvilke flag som skal sendes til ./configure når byggesystemet for modulet laves. Når det bruges som et globalt tilvalg, bruges det for alle moduler som scriptet bygger. qt-copy bruger et meget anderledes sæt indstillingstilvalg end resten af &kde;, så dette tilvalg sætter de globale indstillinger ud af kraft når det bruges for qt-copy.

Dette tilvalg gælder for qt-copy og alle KDE 3-moduler. KDE 4-moduler bruger &cmake;, som styres med tilvalget cmake-options.

colorful-output | Kan ikke sættes udf af kraft | Sæt dette tilvalg til false for at deaktivere farvelagt uddata fra &kdesvn-build;. Dette tilvalg er normalt true. Bemærk at &kdesvn-build; ikke sender farvekoderne ud til noget andet end en terminal (såsom xterm, &konsole; eller den normale &Linux;-konsol).
cxxflags | Tilføjer til globale tilvalg | Brug dette tilvalg for at angive hvilke flag som skal sendes til `./configure` som `CXXFLAGS` når byggesystemet for modulet laves. Dette tilvalg angives her i stedet for med configure-flags eller cmake-options eftersom dette tilvalg også sætter miljøvariablen `CXXFLAGS` under byggeprocessen.
dest-dir | Sætter global ud af kraft | Brug dette tilvalg for at ændre navnet et modul gives på disken. Hvis modulet for eksempel var extragear/network, ville du kunne skifte navn på det til extragear-network med dette tilvalg.

disable-agent-check

Kan ikke sættes udf af kraft

Normalt, hvis du bruger SSH for at hente Subversion-kildekoden (såsom hvis du bruger protokollen svn+ssh), forsøger kdesvn-build at sørge for at du bruger SSH-agenten, så håndterer den virkelig nogle SSH-identiteter. Dette er for at forsøge at forhindre at SSH spørger efter dit løsen for hvert modul. Du kan deaktivere kontrollen ved at sætte disable-agent-check til true.

do-not-compile

Sætter global ud af kraft

Brug dette tilvalg for at sætte miljøvariablen `DO_NOT_COMPILE` inden scriptet configure køres. Ifølge &kde;'s ofte stillede spørgsmål for udviklere, skal det gøre at alle topniveaumapper du sender med ikke bygges. Katalogerne skal adskilles med mellemrum.

Bemærk at kildekoden for programmerne stadigvæk hentes. Du kan bruge direktivet checkout-only for at vælge mapper som du vil tjekke ud.

Dette tilvalg fungerer endnu ikke med moduler som bygges med &cmake;.

email-address | Kan ikke sættes udf af kraft | Indstil dette tilvalg til e-mail-adressen som kdesvn-build skal sende fra hvis det nogensinde behøver at sende e-mail. Du behøver ikke bekymre dig om det hvis du ikke bruger nogen funktion som sender e-mail (De er alle normalt deaktiverede). For øjeblikket behøver kun email-on-compile-error tilvalget.

email-on-compile-error

Kan ikke sættes udf af kraft

Du kan indstille dette tilvalg til e-mail-adressen hvorhen en rapport skal sendes når et modul mislykkes at bygge. kdesvn-build venter til alle moduler er færdige og samler alle resultater i rapporten. Rapporten sendes kun hvis det mislykkes at bygge et modul.

Se tilvalget email-address for at indstille adressen som kdesvn-build skal sende fra, eftersom standardværdien som oftest ikke er hvad du vil have.

inst-apps

Sætter global ud af kraft

Dette er modsætningen til tilvalget do-not-compile. Dette tilvalg gør at kun angivne topniveaumapper bygges. Katalogerna skal adskilles med mellemrum.

Eventuelle ændringer får ingen virkning førend næste gang `make `-f` Makefile.cvs` køres, enten automatisk af scriptet, eller manuelt med tilvalgene `--refresh-build` eller `--recreate-configure`.

Dette tilvalg fungerer endnu ikke for moduler som bygges med byggesystemet &cmake;.

Bemærk at kildekoden for programmerne stadigvæk hentes. Du kan bruge direktivet checkout-only for at vælge mapper som du vil tjekke ud.

install-after-build | Sætter global ud af kraft | Dette tilvalg bruges til at installere pakken efter det er lykkedes at bygge den. Dette tilvalg er normalt aktiveret. Hvis du vil deaktivere det, skal du sætte tilvalget til 0 i &rcfile;. Du kan også bruge kommandolinjeflaget `--no-install`.
kdedir | Sætter global ud af kraft | Dette tilvalg angiver mappen som &kde; installeres i efter det er bygget. Standardværdien er `~/kde`. Hvis du ændrer det til en mappe som kræver adgang som systemadministrator, bør du også læse om tilvalget make-install-prefix.

kde-languages

Kan ikke sættes udf af kraft

Dette tilvalg lader dig vælge at hente og installere landeindstillingspakken sammen med &kde;. Du kan gøre dette hvis du ikke bor i USA og vil have &kde; oversat til dit modersmål.

Indstil dette tilvalg til en liste af sprog at installere adskilte med mellemrum, for at bruge dette. Hvert sprog har en tilhørende sprogkode, som du kan slå op på følgende side: http://i18n.kde.org/teams/.

Det er helt rigtigt kun at vælge et sprog. Normalt hentes intet, hvilket betyder at &kde; vises med amerikansk engelsk.

Eksempelvis, for at vælge at installere dansk, skal du indstille tilvalget til noget i retning af: ``kde-languages` da`. Du skal imidlertid alligevel bruge kontrolcentret for at vælge det danske sprog.

libpath | Sætter global ud af kraft | Angiv dette tilvalg for at sætte miljøvariablen LD_LIBRARY_PATH under byggeprocessen. Du kan ikke sætte denne indstilling ud af kraft med et modultilvalg. Standardværdi er tomt, men søgestierne `$KDEDIR/lib` og `$QTDIR/lib` tilføjes automatisk. Du kan bruge tilde (~) i alle søgestier du tilføjer med dette tilvalg.
log-dir | Sætter global ud af kraft | Brug dette tilvalg for at ændre mappen som bruges til at opbevare logfiler som laves af scriptet. Indstillingen kan ændres pr modul fra og med version 0.64 eller senere.
make-install-prefix | Sætter global ud af kraft | Sæt denne variabel til en liste adskilt med mellemrum, som tolkes som en kommando og dens flag til at gå forud for kommandoen make install som bruges til at installere moduler. Dette er nyttigt for eksempel til at installere pakker med sudo, men vær forsigtig når du håndterer systemadministratorens rettigheder.

make-options

Sætter global ud af kraft

Angiv denne variabel for at sende kommandolinjeflag til kommandoen make. Dette er nyttigt for programmer såsom distcc. Programmet distcc lader dig opdele dit kompileringsarbejde på mere end en maskine. For at bruge det, skal du bruge flaget `-j` til make. Nu kan du det. Ifølge dokumentationen anbefales 2 * antal_processorer_i_netværket. Jeg har i alt en processor, så det ville være `-j2` i mit tilfælde.

manual-build | Sætter global ud af kraft | Sæt tilvalgsværdien til true for at forhindre at byggeprocessen forsøger at bygge modulet. Den holdes stadigvæk opdateret ved opdatering fra &svn;. Dette tilvalg svarer nøjagtigt til kommandolinjeflaget `--no-build`.
manual-update | Sætter global ud af kraft | Sæt tilvalgsværdien til true for at forhindre at byggeprocessen forsøger at opdatere (og følgelig, bygge eller installere) modulet. Hvis du angiver tilvalget for et modul, er det stort set det samme som at kommentere det bort.

module-base-path

Sætter global ud af kraft

Sæt dette tilvalg for at sætte &kdesvn-build;s standardmappesti til modulet det drejer sig omd ud af kraft. Det kan for eksempel bruges til at hente specifikke grene eller mærkede versioner af biblioteker. &kde;'s kildekodevisning er uvurderlig som hjælp til at vælge rette søgesti.

Bemærk at &kdesvn-build; konstruerer den endelige søgesti efter følgende skabelon: `$svn-server`/home/kde/`$module-base-path`/`$module-name`.

Standardværdien er enten trunk eller trunk/KDE, afhængig af modulnavnet.

niceness | Kan ikke sættes udf af kraft | Sæt dette tilvalg til et tal mellem 20 og 0. Jo højere nummer, desto lavere prioritet sætter &kdesvn-build; for sig selv. Standardværdi er 10.
no-rebuild-on-fail | Sætter global ud af kraft | Indstil denne tilvalgsværdi til true for altid at forhindre at &kdesvn-build; forsøger at genbygge modulet hvis en inkrementel byggeproces skulle mislykkes. Normalt forsøger &kdesvn-build; at genbygge modulet fra begyndelsen for at modvirke virkningen at enkelt &svn;-opdatering forårsager problemer med byggesystemet.
override-url | Sætter global ud af kraft | Hvis du angiver dette tilvalg, bruger kdesvn-build dets værdi som URL at sende til &svn; helt uforandret. Du bør generelt bruge dette hvis du vil hente en specifik udgave, men kdesvn-build kan ikke regne ud hvad du mener ved at bruge branch.
qtdir | Sætter global ud af kraft | Sæt dette tilvalg for at bruge miljøvariablen QTDIR under byggeprocessen. Du kan ikke sætte dette tilvalg ud af kraft i et modultilvalg. Standardværdi er ``$(source-dir)`/build/qt-copy`, som bruger modulet qt-copy som indgår i &kde;:s kildekodearkiv. Du kan bruge tilde (~) til at repræsentere din hjemmemappe.

remove-after-install

Sætter global ud af kraft

Hvis du kun har lidt om harddiskplads kan du ville bruge dette tilvalg til at automatisk at fjerne byggemappen (eller både kildemappen og byggemappen for engangsinstallationer) efter det er lykkedes at installere modulet.

Mulige værdier for dette tilvalg er:

- none - Slet ikke bort noget (dette er standardværdien).

- builddir - Slet byggemappen men ikke kildekoden.

- all - Slet både kildekoden og byggemappen.

Bemærk at brug af dette tilvalg kan give en signifikant skadelig indvirkning både på din brug af båndbredde (hvis du bruger 'all') og tiden det tager at kompilere &kde;, eftersom kdesvn-build ikke kan udføre inkrementel bygning.

set-env

Sætter global ud af kraft

Dette tilvalg accepterer et sæt værdier adskilte af mellemrum, hvor den første værdi er miljøvariabel at sætte, og følgende værdier er hvad du vil sætte variabelen til. For eksempel for at sætte variablen ANDERS til AND, ville du skrive følgende kommando i det dertil passende afsnit:

    set-env ANDERS AND

Dette tilvalg er specielt på den måde at det kan gentages uden at sætte tidligere indstillinger ud af kraft med set-env i samme afsnit af dim &rcfile;. På den måde du angive mere end en miljøvariabel pr modul (eller globalt).

source-dir | Sætter global ud af kraft | Dette tilvalg bruges til at angive mappen på maskinen hvor &kde;'s &svn;-kildekode skal opbevares. Hvis du ikke angiver denne værdi, er standardværdien `~/kdesvn`. Hvis du angiver denne værdi, brug en absolut søgesti.
svn-server | Sætter global ud af kraft | Dette tilvalg bruges til at angive serveren som bruges ved udtjekning fra &svn;. Standard er det anonyme &svn;-arkiv, svn://anonsvn.kde.org/.
stop-on-failure | Sætter global ud af kraft | Sæt denne tilvalgsværdi til true for at gøre at scriptet holder op med at køre efter en fejl opstår i bygge- eller installationsprocessen. Dette tilvalg er normalt slået fra.

tag

Sætter global ud af kraft

Brug dette tilvalg for at hente en specifik udgave af et modul.

Bemærk: Der er høje odds for at du IKKE ØNSKER at bruge dette tilvalg. &kde;-udgaver er tilgængelige på arkivform fra &kde;'s FTP-sted eller et af dets spejle.

Hvis du bruger kdesvn-build fordi du har svært ved at få fat på en &kde;-udgave at bygge på din distribution, så overvej at bruge byggeværktøjet Konstruct i stedet for, som virker ud fra de udgivne tar-bolde.

use-cmake

Sætter global ud af kraft

Dette tilvalg tillader dig at tvinge &kdesvn-build; til at forsøge (eller ikke forsøge) at bruge CMake for et givet modul. Normalt forsøger &kdesvn-build; altid at bruge CMake hvis det er til stede for modulet, eftersom det vil blive krævet for at bygge KDE 4. Dette tilvalg er tilgængeligt for at forenkle overgang fra unsermake til CMake. Dette tilvalg vil blive fjernet så snart alle KDE 4-moduler kræver CMake.

use-qt-builddir-hack

Sætter global ud af kraft

Selvom dette tilvalg sætter det globale tilvalg ud af kraft, giver det kun mening for qt-copy. Sæt dette tilvalg til true for at aktivere scriptets eksperimentelle tilstand med kildemappe adskilt fra byggemappe. Når det er aktiveret, kopierer &kdesvn-build; qt-copy's kildekodemodul til byggemappen, og udfører byggeprocessen derfra. Det betyder at miljøvariablen QTDIR i stedet skal være indstillet til `$(qt-copy-build-dir)/qt-copy/lib`. Du skal også ændre tilvalget qtdir på tilsvarende måde. At bygge inkrementelt skulle stadigvæk virke i denne tilstand, eftersom tidsstempler bevaras efter kopieringen. Hvis du bruger tilvalget apply-qt-patches, udføres programrettelserne i byggemappen, ikke i kildekodemappen. Tilvalgets standardværdi er true.

use-stable-kde

Kan ikke sættes udf af kraft

Eftersom &kdesvn-build; har understøttelse for at bygge &kde; 3 og 4, skal der være en måde at fortælle hvilken version som skal bygges. Normalt bygger &kdesvn-build; hovedversionen for udvikling af &kde; (som kaldes /trunk). Men den er for &kde; 4, som endnu ikke er parat til en bred udgivelse.

Du kan bruge tilvalget &branch; globalt, eller for et modul for at hente &kde; 3.5 (eller 3.4, osv.). Dette er imidlertid ikke bekvemt, eftersom visse moduler (såsom kdesupport) deles mellem 3.5 og 4. Desuden er der en mængde grentilvalg som skal tilføjes til indstillingsfilen.

Hvis du altså indstiller det globale tilvalg til `true`, henter &kdesvn-build; automatisk &kde; 3.5 versionen af moduler såsom kdelibs og qt-copy, i stedet for at hente &kde; 4 versionen. Du kan stadigvæk bruge valgmulighederne &branch; eller &tag; for et modul for at sætte indstillingerne som &kdesvn-build; vælger ud af kraft. På den måde kan du nemt vælge at hente &kde; 3.5 i stedet for forudgivelsen af &kde; 4.

use-unsermake

Sætter global ud af kraft

Sæt dette tilvalg til true for at bruge det eksperimentelle program unsermake i stedet for automake når scriptet configure køres. Det kan forårsage væsentlig mindskning af byggetiden, især for distribuerede byggesystem. Tilvalgets standardværdi er true (for de fleste moduler).

Normalt, hvis du bruger dette tilvalg kommer kdesvn-build automatisk til at holde unsermake opdateret. Det kan begynde at blive irriterende, især hvis du håndterer unsermake selv. Hvis dette er tilfældet, kan du sætte tilvalget til self, så bruger kdesvn-build stadigvæk unsermake, men gør ingenting særligt for at holde det opdateret.

## Kommandolinjeflag og miljøvariabler

Scriptet bruger ikke miljøvariabler. Hvis du behøver at sætte miljøvariabler for bygge- eller installationsprocessen, så se tilvalget set-env.

Scriptet accepterer følgende kommandolinjeflag:

`--help`

  vis kun simpel hjælp om scriptet.

`---version`

  vis programmets version.

`--author`

  vis forfatterens kontaktinformation.

`--color`

  aktivér farvelagt uddata.

`--nice=værdi`

  Indstiller nice-værdien til værdi under denne kørsel. værdi skal være mellem 0 og 20.

`--no-color`

  deaktivér farvelagt uddata.

`--pretend` (eller `-p`)

  udfører IKKE noget, men opfør sig som om du gjorde det.

`--quiet` (eller `-q`)

  Vær ikke så støjende med uddata. Med dette flag meddeles kun det vigtigste.

`--really-quiet`

  Kun advarsler og fejl.

`--verbose`

  Beskriv i detalje hvad der sker, og hvad kdesvn-build gør.

`--svn-only`

  udfører kun opdatering af kildekoden.

`--build-only`

  udfører kun byggeprocessen.

`--ignore-modules`

  inkludér ikke moduler som sendes på resten af kommandolinjen under opdaterings- og byggeprocessen.

`--no-svn`

  spring over at kontakte &svn;-serveren.

`--no-build`

  spring over byggeprocessen.

`--no-install`

  installér ikke automatisk pakker efter de er bygget.

`--debug`

  aktiverer fejlsøgningstilstand for scriptet. For øjeblikket betyder det at al uddata sendes til STDOUT foruden at logges i logmappen som sædvanligt. Desuden er mange funktioner meget udførligere om hvad de gør i fejlsøgningstilstand.

`--no-rebuild-on-fail`

  forsøg ikke at genbygge moduler som det er mislykket at bygge fra begyndelsen. &kdesvn-build; forsøger aldrig at gøre dette med et modul hvor et forsøg på at bygge fra begyndelsen allerede er gjort.

`--refresh-build`

  genopret om byggesystemet og byg fra grunden.

`--reconfigure`

  kør scriptet configure igen uden at rense byggemappen.

`--recreate-configure`

  kør `make `-f` Makefile.cvs` igen for at oprette scriptet configure, og fortsæt med at bygge som sædvanligt. Dette tilvalg implicerer `--reconfigure`.

`--resume-from`

  Dette tilvalg er nyttigt for at genoptage byggeprocessen fra det angivne modul, som skal være næste tilvalg på kommandolinjen. Dette tilvalg indbefatter `--no-svn`. Du skal ikke angive andre modulnavne på kommandolinjen.

`--rc-file`

  som tolker næste kommandolinjeflag som filen at læse indstillingstilvalg fra. Standardværdien for denne parameter er ~/.kdesvn-buildrc.

`--run`

  Dette tilvalg tolker næste parameter på kommandolinjen som et program at køre, og &kdesvn-build; vil så holde op med at læse indstillingsfilen, opdaterer miljøet som sædvanligt, og kører derefter det angivne program.

  Dette virker dog ikke til at starte et skal med miljøet fra kdesvn-build i de fleste tilfælde, eftersom interaktive skaller typisk nulstiller i det mindste visse af miljøvariablerne (såsom `PATH` og `KDEDIRS`) under startsekvensen.

`--prefix=</søgesti/till/kde>`

  som lader dig ændre mappen som &kde; installeres i fra kommandolinjen. Dette tilvalg implicerer `--reconfigure`.

`--build-system-only`

  stop efter at have kørt `make `-f` Makefile.cvs`. Scriptet configure skal stadigvæk køres, hvilket &kdesvn-build; gør næste gang. Dette lader dig forberede alle configure-scripter på en gang så du kan kigge på `./configure `--help`` for hvert modul, og redigere dine flag til configure i overensstemmelse med dette.

`--install`

  hvis dette er det eneste kommandolinjeflag, forsøger scriptet at installere alle moduler som det er lykkedes at bygge, bortset fra qt-copy som ikke behøver at installeres. Hvis kommandolinjeflag angives efter `--install`, antages de alle at være moduler at installere.

`--<option-name>=`

  Du kan bruge dette tilvalg til at sætte et tilvalg i din &rcfile; ud af kraft for hvert modul. For eksempel for at sætte tilvalget log-dir ud af kraft, skulle du angive `--log-dir=/søgesti/til/mappe`.

`--<modulnavn>,<tilvalgnavn>=`

  Du kan bruge dette flag til at sætte et tilvalg i din &rcfile; for et vist modul ud af kraft. For eksempel for at sætte tilvalget use-unsermake ud af kraft for kdemultimedia, skal du angive `--kdemultimedia,use-unsermake=false`.

Alle øvrige kommandolinjeflag antages at være moduler at opdatere og bygge. Bland helst ikke bygge og installere sammen.

## At bruge &kdesvn-build;

### Forord

Efter du er gået gennem , er det normalt så nemt at bruge &kdesvn-build; som at skrive følgende i en terminal:

    &percnt; kdesvn-build

&kdesvn-build; henter derefter &kde;'s kildekode, forsøger at konfigurere og bygge den, og derefter installere den.

Læs videre for at opdage hvordan &kdesvn-build; gør dette, og hvad du mere kan gøre med dette værktøj.

### Grundlæggende funktioner i &kdesvn-build;

#### understøttelse for qt-copy

&kdesvn-build; stræber efter at bevare god understøttelse for modulet qt-copy som indgår i &kde;'s &svn;-arkiv.

qt-copy er en kopi af kildekoden for den seneste udgave af &Qt;-værktøjskassen som bruges af &kde;. Den indeholder også et sæt programrettelser og fejlforbedringsrettelser som valgfrit kan bruges. Programrettelserne virker stadigvæk med &Qt;-biblioteket så kode oprettet ved at bruge qt-copy kan køres med det almindelige &Qt;.

De fleste forskelle som kræves for qt-copy håndteres automatisk af &kdesvn-build;, Dog er der nogle forskelle som du kan behøve at kende til.

- Normalt tilføjes værdien af &configure-flags; for et modul til de generelle indstillinger for &configure-flags;. Indstillingen af &configure-flags; for qt-copy erstatter dog de generelle indstillinger, eftersom de ikke har tilsvarende kommandolinjer.

- &kdesvn-build; definerer automatisk nogle ekstra miljøvariabler for at bygge qt-copy, som normalt ikke kræves for resten af &kde;.

- qt-copy har også understøttelse for et valgfrit sæt programrettelser som indeholder nogle fejlrettelser og optimeringer som endnu ikke er kommet med i det officielle &Qt;. For at aktivere dem, sættes tilvalget &apply-qt-patches; til `true`. Efter ændringen er gjort, kan du behøve at køre ``` `--refresh-build` `qt-copy``.

#### Standardflag tilføjet af &kdesvn-build;

For at spare tid, tilføjer &kdesvn-build; nogle standardsøgestier til miljøet for dig:

- Søgestien til &kde;- og &Qt;-bibliotekerne tilføjes automatisk i variablen `LD_LIBRARY_PATH`. Dette betyder at du ikke behøver redigere &libpath; for at inkludere dem.

- Søgestien til programmer for udviklingsunderstøttelse i &kde; og &Qt; tilføjes automatisk i variablen `PATH`. Det betyder at du ikke behøver redigere &binpath; for at inkludere dem.

- Søgestien til pkg-config som sørges for af &kde; tilføjes sutomatisk i variablen `PKG_CONFIG_PATH`. Det betyder at du ikke behøver at bruge &set-env; for at tilføje dem.

- Indstillingen af &kdedir; sendes automatisk videre til miljøvariablen `KDEDIR` under byggeprocessen. (`KDEDIRS` påvirkes ikke).

- Indstillingen af &qtdir; sendes automatisk videre til miljøvariabelen `QTDIR` under byggeprocessen.

- &kdesvn-build; justerae automatisk miljøet efter behov for at tage hensyn til indstillingen af tilvalget &use-unsermake;.

#### Ændring af byggeprioritet i &kdesvn-build;.

Programmer kan nu fortiden køre med forskellige prioritetsniveauer på operativsystemer, inklusive &Linux; og &BSD;. Dette tillader systemet at tildele tid for de forskellige programmer efter hvor vigtige de er.

&kdesvn-build; tildeler normalt sig selv lav prioritet så resten af programmerne på systemet er upåvirkede og kan køre normalt. Ved at bruge denne teknik, bruger &kdesvn-build; ekstra processorkraft når den er tilgængelig.

&kdesvn-build; beholder stadigvæk prioritetsniveauet højt nok så det kører inden rutinemæssige baggrundsprocesser og inden programmer som donerer processorkraft såsom Seti@Home.

For at ændre &kdesvn-build; så det bruger et højere, eller lavere, prioritetsniveau permanent, skal du justere indstillingen af &niceness; i indstillingsfilen. Tilvalget &niceness; styrer hvor pæn &kdesvn-build; er overfor andre programmer. Med andre ord, at have en højere &niceness; giver &kdesvn-build; lavere prioritet. Så for at give &kdesvn-build; en højere prioritet, reduceres &niceness; (og modsat). &niceness; kan gå fra 0 (ikke pæn over hovedet, højeste prioritet) til 20 (superpæn, laveste prioritet).

Du kan også midlertidigt ændre prioritet for &kdesvn-build; ved at bruge &cmd-nice; &cmd-line-option;. Værdien af dette flag bruges nøjagtigt på samme måde som for &niceness;.

Det er muligt for visse programmer som køres af systemadministratoren at have en negativ nice-værdi, hvilket svarer til endnu højere prioritet for sådanne programmer. At angive en negativ &niceness; (eller til og med 0) for &kdesvn-build; er ikke en god idé, eftersom det ikke forbedrer køretiden nævneværdigt, men gør at maskinen virker meget sløv hvis du alligevel behøver at bruge den.

For at køre &kdesvn-build; med nice-grad 15 (en lavere prioritet end normalt) skrives:

    &percnt; kdesvn-build --nice=15

Eller kan du redigere indstillingsfilen for at gøre ændringen permanent:

    &niceness; 15

#### Installér som systemadministrator

Du ønsker måske også at &kdesvn-build; skal køre installationen med rettigheder som systemadministrator. Dette kan gælde for systeminstallation, som ikke anbefales. Dette er imidlertid også nyttigt når den anbefalede installation som enkeltbruger af &kde; bruges. Det er fordi visse moduler (i særdeleshed kdebase) installerer programmer som midlertidigt behøver forhøjede rettigheder når de kører. De kan ikke opnå disse rettighedsniveauer hvis de ikke installeres med forhøjede rettigheder.

Du kunne simpelthen køre &kdesvn-build; som systemadministrator direkte, men dette anbefales ikke, eftersom programmet ikke er gennemset for den slags brug. Selvom det bør være sikkert at køre programmet på denne måde, er det bedre at undgå at køre som systemadministrator når det er muligt.

For at håndtere dette, sørger &kdesvn-build; for tilvalget &make-install-prefix;. Du kan bruge dette tilvalg til at angive en kommando som bruges til at udføre installationen som en anden bruger. Den anbefalede måde at bruge denne kommando er med programmet sudo, som kører installationskommandoen som systemadministrator.

For eksempel for at installere alle moduler ved at bruge sudo, skal du gøre noget i retning af:

    global
      &make-install-prefix; sudo
      # Øvrige tilvalg
    end global

For kun at bruge &make-install-prefix; for et enkelt modul, ville dette virke:

    module kdemultimedia
      &make-install-prefix; sudo
    end module

#### Vis fremgangen for en byggeproces af et modul.

Denne funktion er altid tilgængelig, og automatisk aktiveret om muligt. Hvad den gør er at vise et estimeret byggeforløb mens et modul bygges, så på den måde ved du hvor meget længere det vil tage at bygge et modul.

For at bruge denne funktionen skal tilvalget &use-unsermake; være aktiveret for modulet. Dette tilvalg er normalt aktiveret, men visse moduler understøtter ikke dette tilvalg, og de forhindres automatisk i at bruge unsermake. Hvis du tror at du har aktiveret unsermake, og alligevel ikke ser en fremgangsrapport når modulet bygges, kan det være muligt at modulet ikke understøtter unsermake.

### Avancerede funktioner

#### Delvis bygning af et modul

Det er muligt kun at bygge dele af et enkelt &kde;-modul. Du vil måske for eksempel kun kompilere et program fra et modul. &kdesvn-build; har funktioner som gør dette nemt. Der er flere komplementære måder at gøre dette.

##### Tjek dele af et modul ud

Dette er formodentlig den bedste måde at gøre dette. Når det virker sparer det dig download-tid og diskplads. Det der sker er at &kdesvn-build; kun henter de dele af et modul som du angiver. Dette gøres med tilvalget &checkout-only; for modulet, som angiver en liste med mapper at hente.

Hvis du ikke allerede ved hvad der skal hentes for et modul, kan det være en god ide først at bladre i Subversion-strukturen for et modul, ved at bruge WebSVN.

For kun at hente &kuser; og &kdat; fra kdeadmin, kunne du bruge &checkout-only; sådan her:

    module kdeadmin
      &checkout-only; kuser kdat
    end module

Mapperne bygges i den rækkefølge de listes i tilvalget. Hvis en af mapperne behøver noget andet fra modulet for at kunne kompileres, så skal du sikre dig om at de begge er med på linjen &checkout-only;, og at afhængigheder som kræves angives før mappen som behøver dem.

Sommetider kan et program også behøve andre mapper og det er svært at regne ud hvilke de er, hvilket kan kræve et antal forsøg med stadige tilføjelser af mapper til tilvalget der skal regnes ud.

En sidste bemærkning om dette tilvalg: Hvis du ændrer tilvalgets værdi skal du bruge ``kdesvn-build` `&cmd-refresh-build;` `modul`` for at sikre dig at modulet konfigureres om på rigtig vis. &kdesvn-build; fjerner aldrig bort eksisterende filer hvis du fjerner et antal mapper fra tilvalget &checkout-only;, eller tilføjer tilvalget for et modul som allerede er tjekket ud.

##### Fjern mapper fra en bygning

I stedet for at begrænse det der hentes, er det muligt at hente alt men lade byggesystemet udelade et antal mapper når byggeprocessen udføres. Dette kan være nyttigt hvis en mappe hele tiden giver fejl og er unødvendig for resten af modulet.

Dette kontrolleres med tilvalget &do-not-compile;. Det virker på lignende måde som &checkout-only; som netop er beskrevet, på den måde at det blot er en liste med mapper som ikke skal kompileres.

Også ligesom &checkout-only; kræver dette tilvalg mindst at scriptet `configure` køres igen for modulet efter det er ændret. Dette gøres med kommandoen ``kdesvn-build` `&cmd-reconfigure;` `modul``.

For at fjerne mappen dcoppython fra byggeprocessen for kdebindings:

    module kdebindings
      &do-not-compile; dcoppython
    end module

##### Kompilér nogle få mapper fra et fuldstændigt modul

Du kan bruge tilvalget &inst-apps; for at angive at kun nogle få mapper i et helt modul skal bygges (men hele modulet hentes stadigvæk).

Dette tilvalg er som kombinationen af &checkout-only; og &do-not-compile;: det henter hele modulet som &do-not-compile;, men kompilerer kun mapperne du angiver, som &checkout-only;. På grund af dette er det oftest bedre blot at bruge &checkout-only; i stedet.

Samme advarsler gælder som for de to øvrige valgmuligheder. Du skal rekonfigurere modulet hvis du ændrer værdi på &inst-apps;.

#### Brugen af &unsermake;

unsermake er et program som er konstrueret til at kobles ind i KDE's byggesystem og forbedre byggeprocessen ved at erstatte visse af værktøjerne som normalt bruges (inklusive automake og make). Det er især nyttigt for dem som udfører distribuerede kompileringer, eftersom det er meget hurtigere end det normale byggesystem i den situationen. Imidlertid er unsermake også hurtigere end konkurrenterne også når man bygger med en enkelt maskine.

Desuden indeholder unsermake understøttelse for at estimere fremgangen af byggeprocessen som er i gang. &kdesvn-build; drager fordel af dette til at sørge for en byggefremgangsindikator ved kompilering. Se også .

&kdesvn-build; sørger automatisk for understøttelse for at bruge unsermake. &kdesvn-build; bruger som standard unsermake når det er muligt at bruge med et modul.

For at deaktivere understøttelse for unsermake i alle moduler, gøres følgende:

    global
      use-unsermake false
    end global

For at aktivere understøttelse for unsermake for et enkelt modul, også selvom det er globalt deaktiveret, gøres følgende:

    module modulnavn
      use-unsermake true

      # øvrige tilvalg angives her...
    end module

&kdesvn-build; opdaterer automatisk eller tjekker ud unsermake ud når øvrige opdateringer udføres. Hvis du foretrækker at håndtere unsermake selv, er det muligt at gøre dette ved at indstille værdien for &use-unsermake; til self i stedet for true.

Når dette er gjort, forsøger &kdesvn-build; stadigvæk at bruge unsermake, men udfører ikke opdateringer. Du kan enten ændre &binpath; til at pege på den rigtige unsermake-mappe, eller tjekke ud og opdatere unsermake selv fra dets modul (for øjeblikket kdenonbeta/unsermake).

#### Støtte for grene og mærker i &kdesvn-build;

##### Hvad er grene og mærker?

&svn; understøtter håndtering af historik for &kde;'s kildekode. &kde; bruger denne støtte til at oprette grene for udvikling, og at give arkivet et mærke af og til med udgivelsen af en ny version.

For eksempel kan udviklerne af &kmail; arbejde med en ny funktion i en anden gren for at undgå at forstyrre den version som bruges af de fleste udviklere. Denne gren har udvikling i gang, samtidigt som hovedgrenen (som kaldes /trunk) kan have udvikling i gang.

Et mærke er på den anden side et øjebliksbillede af kildekodearkivet på et bestemt tidspunkt. Dette bruges af &kde;'s administrationsgruppe til at markere en version af koden som er passende til en udgivelse og stadigvæk tillade at udviklere arbejder med koden.

Der er ingen forskel i koden mellem grene, mærker eller hovedgrenen i &svn;. Det er kun en konvention som bruges af udviklerne. Dette gør det svært at støtte grene og mærker i &kdesvn-build; på en god måde. Der er dog nogle ting som kan gøres.

##### Hvordan man bruger grene og mærker

Støtte for grene og mærker håndteres med et sæt tilvalg, som rækker fra en generel forespørgsel om en version, til en specifik URL at hente for avancerede brugere.

Den enkleste metode er at bruge valgmulighederne &branch; og &tag;. Du bruger helt enkelt dette tilvalg sammen med navnet på den ønskede gren eller mærket for et modul, så forsøger &kdesvn-build; at afgøre et passende sted i &kde;'s arkiv at hente ned fra. For de fleste moduler i &kde; virker dette meget godt.

For at hente kdelibs fra &kde; 3.5 (som simpelthen er kendt som grenen 3.5):

    module kdelibs
      branch 3.5
      # øvrige tilvalg...
    end module

Eller, for at hente kdemultimedia som det var da det blev udgivet med &kde; 3.4.3:

    module kdemultimedia
      tag 3.4.3
      # øvrige tilvalg...
    end module

Du kan indstille en global grenværdi, men hvis du gør det, så glem ikke at angive en anden gren for moduler som ikke skal bruge den globale gren.

##### Støtte for avancerede grentilvalg

&kdesvn-build; understøtter to tilvalg i situationer hvor &branch; og &tag; gætter forkert angående den rigtige søgesti: &module-base-path; og &override-url;

- Tilvalget module-base-path bruges for at hjælpe &kdesvn-build; med at udfylde de manglende dele af modulets søgesti. I &kde;'s arkiv er alle søgestier af formen svnRoot/modul-bassøgesti/modulnavn. Normalt kan &kdesvn-build; regne den passende del i midten ud selv. Når dette ikke går, kan du bruge module-base-path sådan her:

      module qt-copy
        # gren virker ikke her endnu
        module-base-path branches/qt/3.3
      end module

  Dette skulle gøre at &kdesvn-build; henter qt-copy fra (i dette eksempel) svn://anonsvn.kde.org/home/kde/branches/qt/3.3/qt-copy

- Tilvalget override-url kræver på den anden side at du angiver den nøjagtige søgesti at hente fra. Dette tillader dig imidlertid at hente fra søgestier som &kdesvn-build; ikke ville have nogen mulighed for at hente fra.

      module qt-copy
        # Angiv nøjagtig søgesti at hente.
        override-url svn://anonsvn.kde.org/home/kde/branches/qt/3.3/qt-copy
      end module

  &kdesvn-build; rører ikke eller korrigerer værdien som du angiver for override-url i det hele taget, så hvis du ændrer indstillingen &svn-server;, kan du også behøve at opdatere dette.

#### Hvordan &kdesvn-build; forsøger at sikre sig at en byggeproces lykkes.

##### Automatisk genbygget

På grund af diverse problemer med &kde;'s byggesystem, hvor visse mildnes ved at bruge unsermake, udfører &kdesvn-build; automatisk en serie skridt for automatisk at forsøge at få et modul til at genbygge hvis det mislykkes.

1. Ved første mislykkede forsøg, kører &kdesvn-build; simpelthen kommandoen `make` igen. Tro det eller ej, men dette virker virkelig sommetider, og mislykkes i øvrigt hurtigt hvis dette ikke virker.

2. Ved andet mislykkede forsøg, prøver &kdesvn-build; at rekonfigurere modulet og derefter bygge det igen. Det fanger ofte situationer hvor ændring af en byggesystemfil kræver rekonfigurering men byggesystemet ikke udførte dette skridt automatisk.

   Modulets byggemappe efterlades intakt i dette skridt, så udover indstillingsskridtet, mislykkes dette også hurtigt hvis byggeprocessen ikke kan gennemføres.

3. Hvis modulet alligevel mislykkes at bygges, giver &kdesvn-build; op og går videre med næste modul. Der er imidlertid ting du kan gøre for at forsøge at få modulet til at bygges manuelt.

&kdesvn-build; detekterer de fleste tilfælde hvor byggesystemet behøver at omkonfigureres og laver automatisk omkonfigurering i disse tilfælde.

Desuden, hvis &kdesvn-build; bygger modulet første gang, springes alle disse skridt over, eftersom en ren ombygning sædvanligvis ikke mislykkes undtagen hvis der er en virkelig fejl.

##### Byg et modul om manuelt

Hvis du laver en ændring i et moduls indstillingstilvalg, eller hvis modulets kildekode ændres på en måde som &kdesvn-build; ikke genkender, kan du behøve at bygge modulet om manuelt.

Du kan gøre dette ved simpelthen at køre ``kdesvn-build` `--refresh-build` `modul``

Hvis du vil at &kdesvn-build; i stedet automatisk bygger modulet om under næste normale byggeopdatering, kan du oprette en særlig fil. Hvert modul har en byggemappe. Hvis du laver en fil som hedder `.refresh-me` i et moduls byggemappe, bygger &kdesvn-build; modulet om næste gang byggeprocessen sker, også selvom det normalt ville udføre den hurtigere inkrementelle byggeproces.

Som standard er byggemappen `~/kdesvn/build/modul/`. Hvis du ændrer indstilling af tilvalget &build-dir;, bruges det i stedet for `~/kdesvn/build`.

Byg om med `.refresh-me` for modulet arts

    % touch ~/kdesvn/build/arts
    % kdesvn-build

##### Kontrollér ombygningsopførsel

Du ønsker måske ikke at &kdesvn-build; altid skal forsøge at bygge et modul om. Du kan deaktivere denne opførsel permanent ved at ændre tilvalget &no-rebuild-on-fail; til værdien `true`.

Du kan midlertidigt deaktivere denne opførsel (for en kommando) ved at bruge kommandolinjeflaget &cmd-no-rebuild-on-fail;.

    % kdesvn-build --no-rebuild-on-fail

#### Ændr indstilling af miljøvariabler.

&kdesvn-build; læser ikke miljøet fra kaldet som den store majoritet af programmer gør. I stedet bruger det indstillingerne som læses fra indstillingsfilen til at oprette miljøet. Dette gøres i hovedsagen for at sikre sig at når du bygger et modul, kan byggeprocessen gentages. Med andre ord, kan &kdesvn-build; bygge et modul også selvom du har glemt hvad du indstillede miljøvariablerne til i skallen du kører &kdesvn-build; fra.

Imidlertid kan du ville ændre indstilling af miljøvariabler som &kdesvn-build; ikke direkte sørger for et tilvalg for. Dette er muligt med tilvalget &set-env;.

I modsætning til de fleste tilvalg kan dette angives flere gange, og accepterer to værdier, adskilte med mellemrum. Den første er navnet på miljøvariablen som skal sættes, og resten af linjen er dens værdi.

Indstil DISTRO=BSD for alle moduler:

    global
      set-env DISTRO BSD
    end global

#### Genoptag byggeprocesser

##### Genoptag en mislykket eller afbrudt byggeproces

Du kan bede &kdesvn-build; om at begynde at bygge fra et andet modul end det normalt ville gøre. Dette kan være nyttigt når et sæt moduler mislykkedes, eller hvis du afbrød en kørsel i midten. Du kan kontrollere dette med flaget &cmd-resume-from;.

Ved at bruge &cmd-resume-from; springes opdatering af kildekode over.

Genoptag byggeprocessen med begyndelsen af kdebase.

    % kdesvn-build --resume-from=kdebase

##### Ignorér moduler i en byggeprocess

På samme måde som du kan genoptage byggeprocessen fra et modul, kan du i stedet vælge at opdatere og bygge normalt, men ignorere et sæt moduler.

Du kan gøre dette med flaget &cmd-ignore-modules;. Dette beder &kdesvn-build; om at ignorere alle følgende moduler på kommandolinjen når en opdatering og byggeproces udføres.

Ignorér extragear/multimedia og kdenonbeta under en fuldstændig kørsel.

    % kdesvn-build --ignore-modules extragear/multimedia kdenonbeta

#### Ændr tilvalg fra kommandolinjen

##### Ændr globale tilvalg

Du kan ændre måden som tilvalg som læses fra indstillingsfilen direkte fra kommandolinjen. Denne ændring sætter indstillingen i filen ud af kraft, men er kun midlertidig. Den gælder kun så længe den stadigvæk er til stede på kommandolinjen.

&kdesvn-build; tillader dig at ændre tilvalg navngivne som tilvalgsnavne ved at angive et flag på kommandolinjen på formen `--tilvalgsnavn=værdi`. &kdesvn-build; genkender om det ikke ved hvad dette tilvalg er, og søger efter navnet i sin liste med tilvalgsnavne. Hvis det ikke genkender navnet, får du en advarsel, ellers husker det værdien du indstillede det til og sætter en eventuel indstilling fra indstillingsfilen ud af kraft.

Indstil tilvalget &source-dir; til `/dev/null` for test.

    % kdesvn-build --pretend --kildekodemappe=/dev/null

Deaktivering af unsermake fra kommandolinjen. --refresh-build bruges for at tvinge til at ændringen af unsermake får virkning.

    % kdesvn-build --pretend --refresh-build --use-unsermake=false

##### Ændr modultilvalg

Det er også muligt kun at ændre tilvalg for et bestemt modul. Syntaksen er lignende: --modul,tilvalgsnavn=værdi.

Ændringen sætter eventuel duplikeret indstilling for modulet som findes i indstillingsfilen ud af kraft, og gælder kun når tilvalget sendes med på kommandolinjen.

Brug en anden byggemappe for modulet kdeedu:

    % kdesvn-build --kdeedu,byggemappe=temporær-byg

### Funktioner for &kde;-udviklere

#### Byg dokumentation af programmeringsgrænseflade

&kdesvn-build; kan automatisk installere yderligere dokumentation som laves fra kildekoden i et modul. Dette virker kun for visse moduler, og er kun nyttigt for udviklere af &kde;.

Denne funktion virker ikke for moduler som bygges med byggesystemet unsermake. Eftersom dette er standardbyggesystemet for moduler som kan bruge unsermake, skal du deaktivere understøttelse for unsermake. Se eksemplet nedenfor for mere information.

For at aktivere dette, sæt blot tilvalget &apidox; til true i indstillingsfilen for modulet hvor du vil have dokumentation. Ikke alle moduler har dokumentation. Moduler som har det omfatter kdelibs, kdebase og kdepim.

Hvis du har adgang til internettet, er der også dokumentation af programmeringsgrænsefladen for &kde; direkte. Du kan bruge genvejen kde:className i Konqueror.

Du kan også besøge netstedet for &kde;'s dokumentation på English Breakfast Network.

Endelig er det muligt at hente dokumentationen på arkiveret form fra &kde; Developer's Corner. Klik på versionen af &kde; som du vil have dokumenteret, og derefter kan du hente en kopi til at bruge i nedkoblet tilstand for det modul du vil.

Installér dokumentation af programmeringsgrænseflade for kdelibs.

    module kdelibs
      use-unsermake false    # unsermake kan ikke bygge apidox
      apidox        true     # byg og installeér apidox
    end module

#### Kontrol af SSH-agent

&kdesvn-build; kan sikre sig at &kde;-udviklere som bruger &ssh; til at komme til &kde;'s kildekodearkiv ikke ved en fejl glemmer at lade værktøjet &ssh;-agent være aktiveret. Det kan forårsage at &kdesvn-build; hænger for altid mens det venter på at udvikleren skal indtaste kodeordet for SSH, så normalt kontrollerer &kdesvn-build; at agenten kører inden det udfører opdateringer af kildekoden.

Dette gøres kun for &kde;-udviklere som bruger &ssh;. Dette skyldes at intet kodeord kræves for den almindelige anonyme udtjekning. &svn; håndterer kodeord for den anden mulige protokol for KDE-udviklere, https.

Du vil måske deaktivere kontrollen af &ssh;-agenten, i situationer hvor &kdesvn-build; detekterer tilstedeværelsen af en agent ved en fejl. For at deaktivere kontrol af agenten, sættes tilvalget `disable-agent-check` til `true`.

Deaktivér &ssh;-agentkontrol

    global
      disable-agent-check true
    end global

### Andre funktioner i &kdesvn-build;

#### Ændr mængden af uddata fra &kdesvn-build;

&kdesvn-build; har flere flag til at styre mængden uddata som scriptet laver. Under alle omstændigheder, kommer fejl altid til at blive vist.

- Flaget `--quiet` (den korte form er `-q`) gør at &kdesvn-build; i hovedsage er tavs. Kun vigtige meddelelser, advarsler eller fejl vises. Hvis det er tilgængeligt vises stadigvæk fremgangsinformation for byggeprocessen.

- Flaget `--really-quiet` (ingen kort form) gør at &kdesvn-build; kun viser vigtige advarsler eller fejl når det kører.

- Flaget `--verbose` (den korte form er `-v`) gør at &kdesvn-build; er meget detaljeret i uddata.

- Flaget `--debug` er kun til for fejlsøgningsformål. Det gør at &kdesvn-build; opfører sig som om `--verbose` er aktiveret, gør også at kommandoerne vises på terminalen, og viser fejlsøgningsinformation for mange funktioner.

#### Farveuddata

Når &kdesvn-build; køres fra &konsole; eller en anden terminal, vises normalt farvelagt tekst.

Du kan deaktivere dette ved at bruge flaget `--no-color` på kommandolinjen, eller indstille tilvalget &colorful-output; i indstillingsfilen til `false`.

Deaktivér farveuddata i indstillingsfilen

    global
      colorful-output false
    end global

#### Send e-mail med rapporter om en mislykket byggeproces

&kdesvn-build; kan sende en rapport via e-mail til en e-mail-adresse du vælger, når et modul mislykkes at bygge af en eller anden grund. Måden dette virker på er at du vælger en e-mail-adresse som &kdesvn-build; sender fra, og en e-mail-adresse at underrette når en fejl opstår.

&kdesvn-build; laver så et brev hvis der var et modul som det mislykkedes at bygge, i slutningen af en fuldstændig kørsel. Brevet vil indeholde en forkortet fejllog for hvert modul. Kun et brev sendes for hver kørsel, også selvom 15 moduler mislykkedes at bygges.

Denne funktion er ikke normalt aktiveret. For at aktivere den, skal du angive begge valgmuligheder &email-address; og &email-on-compile-error;. Tilvalget `email-address` kontrollerer adressen som &kdesvn-build; sender fra, og `email-on-compile-error` kontrollerer hvor brevet skal sendes hen.

&kdesvn-build; bruger standardmodulet Mail::Mailer i Perl til at sende e-mail. Det indgår i Perl 5.8, og kan installeres med Perl 5.6. Mail::Mailer understøtter Sendmail (inklusive e-mail-programmer som virker sammen med Sendmail), indbygget overførsel med SMTP, og qmail

Send e-mail fra byg@eksempel.dk til resultat@eksempel.dk ved byggefejl.

    global
      email-address          byg@eksempel.dk    # Fra: adresse for al kdesvn-build e-mail
      email-on-compile-error resultat@eksempel.dk    # Til: adresse for e-mail hvis mislykkedes at bygge
    end global

#### Fjern unødige mapper efter en byggeproces

Har du kun lidt diskplads men vil alligevel køre den allerseneste udtjekning af &kde;? &kdesvn-build; kan hjælpe dig med at reducere diskbrug mens du bygger &kde; fra &svn;.

Vær klar over at der går meget plads til for at bygge &kde;. Der er flere store dele som bruger plads når &kdesvn-build; bruges:

1. Selve udtjekningen af kildekoden kan optage en masse plads. Standardmodulerne optager cirka 1.6 Gbyte diskplads. Du kan reducere denne mængde ved at sikre dig t du kun bygger så mange moduler som du virkelig vil have. &kdesvn-build; fjerner ikke kildekode fra disken selvom du fjerner indgangen fra indstillingsfilen, så sørg for om at du fjerner ubrugte udtjekninger i kildekodemappen. Bemærk at kildekodefilerne hentes fra internettet, og du bør ikke fjerne dem hvis du faktisk bruger dem, i det mindste indtil du er færdig med at bruge &kdesvn-build;.

   Hvis du desuden har installeret &Qt; fra distributionen (og chancen er stor for at du har det), behøver du formodentlig ikke at installere modulet qt-copy. Dette barberer omkring 200 Mbyte væk fra kildekodestørrelsen på disk.

   En ting at observere er at på grund af måden som &svn; fungerer, er der i virkeligheden to filer på disken for hver fil som tjekkes ud fra arkivet. &kdesvn-build; har for øjeblikket ikke kode til at forsøge at minimere kildekodestørrelsen når kildekoden ikke bruges.

2. &kdesvn-build; laver en separat byggemappe til at bygge kildekoden. Sommetider må &kdesvn-build; kopiere en kildekodemappe for at oprette en falsk byggemappe. Når dette sker, bruges pladsbesparende symbolske link, så der skulle ikke være noget besvær med diskplads. Byggemappen er typisk meget større end et moduls kildekodemappe. Byggemappen for kdebase er for eksempel omkring 455 Mbyte, mens kildekoden for kdebase kun er omkring 195 Mbyte.

   Heldigvis kræves byggemappen ikke efter et modul er bygget og installeret med godt resultat. &kdesvn-build; kan automatisk fjerne byggemappen efter et modul er installeret. Se eksemplerne nedenfor for mere information. Bemærk at ved at udføre dette skridt, bliver det umuligt for &kdesvn-build; at udføre tidsbesparende inkrementelle byggeprocesser.

3. Endelig kræves diskplads for selve installationen af &kde;, som ikke køres fra byggemappen. Dette optager typisk mindre plads end byggemappen. Det er dog sværere at få nøjagtige tal frem.

Hvordan reducerer man pladsskravene for &kde;? En måde er at bruge rigtige oversætterflag for at optimere for reducering af plads i stedet for hastighed. Et anden måde, som kan have stor effekt, er at fjerne fejlsøgningsinformation fra det færdigbyggede &kde;.

Du bør være meget sikker på at du ved hvad du gør inden du bestemmer dig for at fjerne fejlsøgningsinformation. At køre det allerseneste programmel betyder at du kører programmel som potentielt har meget større sandsynlighed for at bryde sammen end stabile udgaver. Hvis du kører programmel uden fejlsøgningsinformation kan det være meget svært at lave en god fejlrapport for at få problemet løst, og du skal formodentlig aktivere fejlsøgning igen for programmet som påvirkes og bygge om for at hjælpe en udvikler til at rette sammenbruddet. Så fjern fejlsøgningsinformation på egen risiko!

Fjern byggemappen efter et modul er installeret. Kildekoden beholdes stadigvæk, og fejlsøgning er aktiveret.

    global
      configure-flags      --enable-debug
      remove-after-install builddir        # Fjern byggemappe efter installation
    end global

Fjern bygegmappen efter installation, uden fejlsøgningsinformation, med størrelsesoptimering.

    global
      cxxflags             -Os             # Optimér for størrelse
      configure-flags      --disable-debug
      remove-after-install builddir        # Fjern byggemappe efter installation
    end global

## CMake, byggesystemet for KDE 4.

### Introduktion til CMake

I marts 2006, slog programmet CMake flere konkurrenter ud og blev valgt som byggesystem for &kde; 4, og erstatter systemet baseret på autotools som &kde; har brugt fra begyndelsen.

En side med en introduktion til CMake er tilgængelig på KDE's wiki. I stedet for at køre make -f Makefile.cvs, derefter configure og tilsidst unsermake (eller make), kør vi helt enkelt cmake og derefter make.

&kdesvn-build; har initial understøttelse for CMake. Nogle få funktioner i &kdesvn-build; var i virkeligheden funktioner i det underliggende byggesystem, inklusive inst-apps, configure-flags og do-not-compile. Når de tilsvarende funktioner er tilgængelige, sørges der for dem. Det der svarer til tilvalget configure-flags er for eksempel cmake-options.

For visse tilvalg såsom inst-apps eller do-not-compile er der dog ingen direkte ækvivalente, så de er deaktiverede. Hvis jeg skulle finde en måde at implementere dem med CMake kommer jeg til at gøre det og aktivere disse valgmuligheder igen. Imidlertid fungerer stort set alting på samme måde.

Hele KDE er ikke overført til CMake for øjeblikket. For eksempel er tilvalget apidox ganske unyttigt indtil den tilsvarende infrastruktur er færdig. Jeg har forsøgt at advare mod sådanne ting, men alle fejl fanges måske ikke af &kdesvn-build; endnu.

## Medvirkende og licens

&underFDL;