# Skripti &kdesrc-build;; käsiraamat

## Sissejuhatus

&kdesrc-build; on skript, mis aitab kasutajatel paigaldada &kde; tarkvara otse &subversion;i ja &git;i lähtekoodi hoidlatest.

See tarkvara kandis varem nime kdesvn-build, mistõttu internetis või ka arvutisse paigaldatud dokumentatsioonis võib seda nimetust seniajani kohata.

See käsiraamat kujutab endast ülevaadet, mis kirjeldab skripti &kdesrc-build; tegevuse järgmisi aspekte:

- Tähtsamad omadused.

- Ülevaade alustamiseks vajalikest sammudest.

- Seadistustefaili süntaks ja valikud.

- Käsureavõtmed.

Samuti kirjeldatakse samme, mida tuleb ette võtta teiste tööriistadega (see tähendab samme, mida &kdesrc-build; ei soorita automaatselt).

## Alustamine

Käesolevas peatükis selgitame, kuidas kasutada &kdesrc-build;'i moodulite väljavõtmiseks &kde; hoidlast ja nende ehitamiseks. Me selgitame ka &kde; &subversion;i põhimõttelist struktuuri ning samme, mida on vaja ette võtta enne skripti käivitamist.

Kõiki peatükis vaadeldavaid teemasid käsitleb veelgi põhjalikumalt artikkel Building &kde; 4 from Source, mille leiab &kde; TechBase'i leheküljelt. Kui kompileerid &kde;-d esimest korda, tasuks seda lugeda kas või põgusalt. Sealt leiab põhjaliku info pakendamistööriistade ja nõuete kohta, levinud kompileerimisprobleemide ja -strateegiate kirjelduse ning juhiseid oma uue &kde; paigalduse kasutamiseks.

### Süsteemi ettevalmistamine &kde; ehitamiseks

#### Uue kasutajakonto loomine

Soovitatav on kasutada &kde; tarkvara ehitamiseks, paigaldamiseks ja kasutamiseks mõnda muud kasutajakontot, sest vaja läheb vähem õigusi ning samuti ei teki segadusi sinu distributsiooni pakettidega. Kui sul on juba &kde; paketid paigaldatud, oleks kõige mõistlikum luua spetsiaalne kasutaja uue &kde; ehitamiseks ja kasutamiseks.

Süsteemse &kde; puutumata jätmine võimaldab vajaduse korral kasutada seda varuvariandina, kui kompileeritud &kde; peaks mis tahes põhjusel osutuma ebastabiilseks.

Hiljem võid muidugi soovi korral paigaldada ka administraatori õigustes. Käesolevas käsiraamatus me seda siiski ei puuduta. Kui paigaldad süsteemselt, siis arvatavasti tead juba nagunii, mida ja kuidas teha. Kui mitte, siis tasuks uurida oma distributsiooni dokumentatsiooni või abimaterjale, et süsteem korrektselt ette valmistada ja süsteemne paigaldus õigesti läbi viia.

#### Süsteemi valmisoleku kontrollimine &kde; ehitamiseks lähtekoodist

Enne skripti &kdesrc-build; (või muude ehitamisstrateegiate) kasutamist tuleb paigaldada arendustööriistad ja teegid, mida &kde; vajab. Täieliku nimekirja toob ära KDE TechBase.

Loetleme siin mõningad vajalikud asjad:

- Vajalik on &cmake;. Nõutav versioon sõltub sellest, millise &kde; 4 versioonis ehitamise ette võtad, vaata täpsemaid asjaolusid TechBase'ist.

- Samuti on vajalik &subversion;i klientprogramm, mis toetab turvalist HTTP-d (https). Vajaliku toetuse tagamiseks anna käsk ``svn `--version``` ja uuri tulemust. Kui väljund teatab, et suudab käsitleda https skeemi (kirjutamisõigusega ligipääsuks svn.kde.org-is) või svn skeemi (kirjutuskaitstud ligipääsuks anonsvn.kde.org-is), siis on asi korras.

- Kui ehitad &Qt; või mis tahes &kde; mooduleid, mis leiduvad Gitoriouses, siis on vajalik paigaldada ka Giti lähtekoodi juhtimise haldur.

- Vajalik on C++ arenduskeskkond. Soovitatav on GCC 3.4 või uuem.

Enamik operatsioonisüsteemi distributsioone pakub võimalust vähese vaevaga paigaldada vajalikud arendustööriistad. Uuri TechBase'i Getting Started lehekülje sektsiooni Required Packages from your Distribution, kust peaks selguma, kas sellised juhised on juba olemas.

Üks nõutavate teekide erand on &Qt; teek. &kdesrc-build; paigaldab tavaliselt &Qt; koopia sõltumata sellest, kas see on sul paigaldatud või mitte, nii et selle eelnev olemasolu pole vajalik. Kui sa ei soovi kasutada &Qt; koopiat, talita nii:

- Eemalda moodul qt-copy oma seadistustefailist, sest seda ei lähe sul ju sel juhul vaja ning selle olemasolu seal pikendab lihtsalt ehitamisaega.

- Muuda seadistustefailis sätet qtdir, nii et see osutaks sinu süsteemi &Qt; peale. Enamasti on selleks keskkonnamuutuja $`QTDIR` määratlus.

- Kui sul pole veel &Qt; paigaldatud, paigalda see, kaasa arvatud kõik asjakohased -dev- või -devel-paketid. Vajalik on vähemalt &Qt; 4.6, kui ehitad &kde; 4.

Osa neist tarkvarapakettidest on jagatud teekide, programmide või utiliitide ja arenduspakettideks. Sul läheb vaja vähemalt programmi- või teegi- ja arenduspaketti. Kahtluse korral paigalda kõik. Vajalikud teegid sõltuvad moodulitest, mida kavatsed ehitada, sest igal moodulil on oma nõuded. Täpsemalt kõneleb paigaldamiseks vajalikest tööriistadest ja võtetest ning nõutud tarkvarast &kde; TechBase.

#### &kdesrc-build;'i häälestamine

##### &kdesrc-build;'i paigaldamine

Tõenäoliselt on skript &kdesrc-build; juba sinu süsteemi paigaldatud. Kui see aga nii ei ole, saad selle alla laadida &kdesrc-build;'i koduleheküljelt või &kde; lähtekoodi hoidlast.

&kdesrc-build; kuulub moodulisse kdesdk, mis on distributsioonidega enamasti juba vaikimisi kaasas. Kui oled &kdesrc-build;i alla laadinud, kontrolli, kas kasutad ikka allalaaditud versiooni. Seda saab kontrollida võtmega --version.

1. &kdesrc-build;i allalaadimiseks koduleheküljelt mine lihtsalt &kdesrc-build;'i koduleheküljele ja tõmba sealt uusim versioon. See on pakitud arhiivi, mille saab lahti pakkida rakendusega &ark; või programmiga `tar`. Arhiivi kuulub skript &kdesrc-build; ning näidisseadistustefail (`kdesrc-buildrc-sample`).

2. &kdesrc-build;i võib hankida ka lähtekoodi hoidlast aadressil http://websvn.kde.org/trunk/KDE/kdesdk/scripts/. See on &kde; tarkvaraarenduse komplekti skriptide kataloog, kus &kdesrc-build; pesitsebki. Klõpsates kirjele `kdesrc-build`, satud leheküljele, kus saad alla laadida uusima versiooni. Salvesta see oma kõvakettal meelepärasesse kohta. Soovi korral laadi alla ka `kdesrc-buildrc-sample`.

Igal juhul pead kontrollima, et fail `kdesrc-build` oleks käivitatav. Mugavuse huvides oleks hea, kui see asuks kataloogis, mida hõlmab keskkonnamuutuja `PATH`, vastasel juhul saad teate, et käsku ei leitud, või võid eksikombel käivitada varasema süsteemis leiduva versiooni.

##### Seadistustefaili häälestamine

Kuigi &kdesrc-build; ei nõua seadistustefaili loomist, on selle abil töö märksa lihtsam. Seadistustefailiga saad kontrollida, millised moodulid paigaldatakse, või eemaldada moodulid, mida sa ei soovi paigaldada. Vaikimisi paigaldab &kdesrc-build; tavapärase &kde; üsna üldiste paigaldusvõtmetega, mis ei pruugi sulle sobida. Seepärast ongi mõttekas kasutada seadistustefaili.

Seadistustefaili nimeks peab olema `.kdesrc-buildrc`. See peab asuma kodukataloogis (`~/`) ja sisaldama kõiki konfiguratsiooniandmeid, mida skript tööks vajab, näiteks konfiguratsioonivõtmeid, kompileerimisvõtmeid, lähtetekstide asukohti, paigalduse sihtkohta (prefiksit), ehitatavate moodulite nimekirja &etc; Vaikimisi konfiguratsiooniandmeid pakub fail `kdesrc-buildrc-sample`, mille võidki kopeerida nimega `~/.kdesrc-buildrc` ja seejärel vastavalt oma vajadustele redigeerida.

Rohkem infot seadistustefaili süntaksi kohta annavad configure-data ja kdesrc-buildrc.

### Konfiguratsiooniandmete määramine

Skripti &kdesrc-build; kasutamiseks peab sinu kodukataloogis asuma fail nimega `.kdesrc-buildrc`, mis määrab üldised võtmed ning moodulid, mida soovid alla laadida ja ehitada.

&kdesrc-build; võimaldab kasutada erinevaid seadistustefaile, sellest kõneleb lähemalt kdesrc-buildrc. Kui tahad kasutada erinevaid seadistusi, tutvu palun selle osaga. Siinkohal eeldame, et seadistustefail paikneb asukohas `~/.kdesrc-buildrc`.

Kasuta globaalsete võtmete ja ehitatavate moodulite määramisel eeskujuna faili `kdesrc-buildrc-sample`.

Vaikimisi seadistused peaksid üldiselt sobima &kde; ehitamiseks. Seadistused, mida võib olla mõttekas muuta, on järgmised:

- binpath võimaldab muuta kataloogide nimekirja, kust käske otsitakse. See võrdub shelli keskkonnamuutujaga `PATH`.

- kdedir võimaldab muuta sihtkataloogi, kuhu &kde; paigaldatakse. Vaikimisi on selleks `~/kde`, mis vastab üksikkasutaja paigaldusele.

- qtdir võimaldab määrata kasutatava &Qt; paigalduse asukoha. Vaikimisi kasutatakse &Qt;-d, mis on kompileeritud &kdesrc-build;'iga, kasutades spetsiaalset moodulit qt-copy ja uusimat lähtekoodi (`~/kdesrc/build/qt-copy`).

  See määrab ka asukoha, kuhu paigaldada qt-copy.

- svn-server võimaldab määrata &url;-i, kust lähtekood alla laadida. See on kasulik juhul, kui oled arendaja, kellel on &kde; &subversion;i konto.

Globaalse sektsiooni järel tuleb ehitatavate moodulite nimekiri kujul module ... end module. Kontrolli, kas kirjasolevad moodulid on ikka need, mida soovid ehitada. Faili `kdesrc-buildrc-sample` vaikevõtmed peaksid sobima üsna hästi korraliku &kde; paigalduse tekitamiseks. Salvesta lõplik `.kdesrc-buildrc` oma kodukataloogi.

Kui soovid faili `.kdesrc-buildrc` väga täpselt oma vajadustele kohandada, räägib konfiguratsioonivõtmetest lähemalt kdesrc-buildrc.

### Skripti &kdesrc-build; kasutamine

Nüüd oled valmis skripti käivitama. Logi terminaliaknas sisse selle kasutaja õigustega, kelle lõid &kde; kompileerimiseks, ning käivita skript:

    $kdesrc-build

Nüüd peaks skript hakkama lähtekoodi alla laadima ja kompileerima. Sõltuvalt sellest, kui palju mooduleid alla laadid, võib juhtuda, et &kdesrc-build; ei lõpeta esimesel korral &kde; kompileerimist edukalt. Kuid ära heida meelt!

&kdesrc-build; logib kõigi käivitatud käskude väljundi. Vaikimisi paiknevad logid asukohas `~/kdesrc/log`. Kui tahad näha, mis põhjustas viimase skripti &kdesrc-build; käsu korral moodulis vea, piisab enamasti sellest, kui uurida logi `~/kdesrc/log/latest/`mooduli-nimi`/error.log`.

Selles failis näed viga, mis põhjustas antud mooduli ehitamise nurjumise. Kui failis seisab kirjas, et mõned paketid puuduvad, ürita need paigaldada (kaasa arvatud vastavad -dev paketid), enne kui hakkad seda moodulit uuesti ehitama, ning kasuta pärast puuduvate pakettide paigaldamist võtit --reconfigure.

Kui aga tegemist on ehitamisveaga, on see arvatavasti &kde; lähtekoodi viga, mis usutavasti parandatakse mõne tunni või päeva jooksul. Kui seda ei juhtu, on mõttekas ehitamisveast teada anda postiloendis kde-devel@kde.org (eelnevalt on vaja ennast selle liikmeks registreerida).

Rohkem näiteid asjadest, mis võivad valesti minna, ning nende lahendusi, aga ka mitmeid üldiseid näpunäiteid ja soovitusi &kde; ehitamiseks leiab veebist: Building &kde; 4 from Source.

Täpsemalt kõneleb &kdesrc-build;i logimisvõimalustest kdesrc-build-logging.

### Värske &kde; töökeskkonna määramine

Eeldusel, et lõid &kde; ehitamiseks spetsiaalse kasutaja ja sul on juba paigaldatud &kde; versioon, on oma uue &kde; töölepanek mõnevõrra keerulisem, sest vana asemel peab ju käivituma uus &kde;. Selleks tuleb muuta keskkonnamuutujaid.

#### Käivitusprofiili seadistuste muutmine

Failis `.bash_profile` on kirjas sisselogimisseadistused paljudes &Linux; distributsioonides kasutatava shelli bash jaoks. Kui kasutad mõnda muud shelli, võib olla vajalik siinkohal antud näidet veidi kohandada.

Ava või loo kodukataloogis lemmikredaktoriga fail `.bash_profile` ja lisa selle lõppu juhul, kui ehitad moodulit qt-copy (nagu vaikimisi):

    QTDIR=(qtdir'i asukoht)   # Such as ~/kdesrc/build/qt-copy by default.
    KDEDIR=(kdedir'i asukoht) # Such as ~/kde by default.
    KDEDIRS=$KDEDIR
    PATH=$KDEDIR/bin:$QTDIR/bin:$PATH
    MANPATH=$QTDIR/doc/man:$MANPATH

    # Act appropriately if LD_LIBRARY_PATH is not already set.
    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

Kui sa ei ehita moodulit qt-copy, vaid kasutad oma süsteemi &Qt;, siis:

    KDEDIR=(kdedir'i asukoht)  # Such as ~/kde by default.
    KDEDIRS=$KDEDIR
    PATH=$KDEDIR/bin:$QTDIR/bin:$PATH

    # Act appropriately if LD_LIBRARY_PATH is not already set.
    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

Kui sa ei tarvita spetsiaalset kasutajat, määra oma failis `.bash_profile` uuele keskkonnale teistsugune $`KDEHOME`:

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

    # Create it if needed
    [ ! -e ~/.kde-svn ] && mkdir ~/.kde-svn

Kui hiljem peaks K-menüü tühi olema või hoopis liiga täis, võib olla vajalik failis `.bash_profile` kindlaks määrata ka XDG keskkonnamuutuja:

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

#### &kde; käivitamine

Kui keskkonnamuutujad on üle vaadatud, et kasutataks õiget &kde;-d, tuleb kontrollida, et ka skript `startkde` oleks õige.

Ava kodukataloogis tekstifail `.xinitrc` või loo see vajaduse korral. Lisa rida:

    exec ${KDEDIR}/bin/startkde

Mõne distributsiooni korral võib olla vajalik sama samm ette võtta samuti kodukataloogis paikneva failiga `.xsession`. See on eriti vajalik siis, kui kasutusel on graafiline sisselogimishaldur, näiteks &kdm;, gdm või xdm.

Nüüd käivita oma uus &kde;: virtuaalsete terminalide toetusega &BSD; ja &Linux; süsteemides kasutatakse klahvikombinatsioone &Ctrl;&Alt;F1 ... &Ctrl;&Alt;F12 lülitumiseks vastavalt virtuaalsele konsoolile 1 kuni 12. See võimaldab korraga panna tööle enam kui ühe töökeskkonna. Esimesed kuus on tekstiterminalid, viimased kuus graafilised kuvad.

Kui sind ootab arvuti käivitamisel ees graafiline sisselogimishaldur, võid ometi kasutada uut &kde; keskkonda ka juhul, kui seda ei leidu halduri loendis. Enamik kuvahaldureid, sealhulgas &kdm;, pakuvad kohandatud seansi võimalust. Sel juhul laaditakse seansi seadistused sinu kodukataloogis asuvast failist `.xsession`. Kui oled seda juba muutnud, nagu eespool kirjeldatud, võimaldabki see sul laadida oma uue &kde; paigalduse.

Kui see miskipärast siiski ei õnnestu, võib proovida veel üht asja, mis enamasti peaks aitama: vajuta &Ctrl;&Alt;F2, mis avab tekstiterminali. Logi sisse vajaliku kasutaja õigustes ja kirjuta:

    startx -- :1

Lähtekoodist paigaldatud &kde; ja sinu vana &kde; võivad töötada ka üheaegselt! Logi sisse tavalise kasutajana ning käivita oma stabiilne &kde; töölaud. Vajuta &Ctrl;&Alt;F2 (või F1, F3 jne.), mis avab tekstiterminali. Logi sisse &kde;&subversion;i kasutajana ja kirjuta:

    startx -- :1

Oma tavalise kasutaja &kde; töölauale pääsed tagasi, kui vajutad juba töötava töölaua kiirklahvi. Tavaliselt on see &Ctrl;&Alt;F7, aga võimalik, et vajalik on kasutada näiteks F6 või F8. Oma &kdesrc-build;iga ehitatud &kde; juurde naasmiseks tuleb teha sedasama, ainult et funktsiooniklahv peab olema numbrilt ühe võrra suurem. Kui näiteks sul on vaja vajutada &Ctrl;&Alt;F7 tavalisele &kde; töölauale lülitumiseks, siis &kdesrc-build;i &kde; juurde viib tagasi &Ctrl;&Alt;F8.

## Skripti omadused

### Omaduste ülevaade

&kdesrc-build;i peamised omadused on järgmised:

- Väljundi teadete tasemete toetus alates väga vaiksest kuni täieliku silumistasemeni.

- &kdesrc-build; võimaldab &kdesrc-build;i veebilehekülje ja &kde; FTP-serveri (FTP alates versioonist &kdesrc-build; 1.4) abiga mõningate moodulite kiiret väljavõtmist. Kui soovitud moodul on veebilehel juba pakendatud, laadib &kdesrc-build; alla hetktõmmise ja valmistab selle ette sinu arvutis kasutamiseks.

  See on sinu jaoks palju kiirem ning aitab vähendada koormust kde.org-i anonüümse &subversion;i serverites.

- Teine asju kiirendav tegur on mooduli ehitamise alustamine kohe pärast seda, kui mooduli lähtekood on alla laaditud (alates versioonist 1.6).

- Suurepärane qt-copy mooduli toetus, sealhulgas vajaduse korral vigu parandavate ja optimeerivate paikade rakendamine qt-copy moodulile.

- &kdesrc-build;il on värviline väljund.

- &kdesrc-build; ei vaja töötamiseks graafilist kasutajaliidest (GUI), mis tähendab, et võid &kde; ehitada ilma alternatiivse graafilise keskkonna vajaduseta.

- Kõigi moodulite vaikevõtmete määramise (näiteks kompileerimise seadistused või seadistusvõtmed) määramise toetus. Neid võtmeid saab muuta ka iga konkreetse mooduli korral.

  &kdesrc-build; lisab vajaduse korral standarsed lipud, mis vähendab sinu vaeva ja võimalust, et kirjutad neid käsitsi kogemata valesti.

- &kdesrc-build; võib teha väljavõtte mooduli konkreetse haru või sildi järgi. Samuti on võimalik välja võtta mooduli konkreetne versioon.

- &kdesrc-build;võib automaatselt vahetada lähtekataloogi, et teha väljavõte mõnest teisest hoidlast või mõne teise haru või sildi järgi. See toimub automaatselt, kui muudad võtit, mis muudab hoidla &url;-i, kuid sa pead kasutama võtit --src-only, et &kdesrc-build; teaks, et ta tohib ümber lülituda.

- &kdesrc-build; võib teha väljavõtte ainult osast moodulist, näiteks juhul, kui vajad mõnest suurest moodulist ainult üht programmi.

- &kdesrc-build; võib kiirendada mõningate moodulite esialgset allalaadimist, sest ta laadib, kui võimalik, automaatselt &kde; peeglitest alla mooduli hetktõmmise ja kasutab seda esialgse väljavõtte häälestamisel. See salvestab aega ja ribalaiust nii sinu süsteemile kui ka &kde; serveritele.

- Arendajatele: &kdesrc-build; tuletab meelde, kui kasutad svn+ssh://, aga ssh-agent ei tööta, sest vastasel juhul küsib &ssh; parooli korduvalt.

- Võib saata kasutajale vigade kohta e-postiga aruandeid.

- Võib kustutada ehitamiskataloogi pärast mooduli paigaldamist, et hoida kokku ruumi, ehkki samas pikendab see edaspidi kompileerimisaega.

- &kdesrc-build;i kasutatavad kataloogide asukohad on seadistatavad (seda isegi mooduli kaupa).

- Võib kasutada &sudo;-d või mõnda muud kasutaja määratud käsku moodulite paigaldamisel, mistõttu &kdesrc-build;i ei pea käivitama tingimata administraatori õigustes.

- &kdesrc-build; töötab vaikimisi vähendatud prioriteediga, mis lubab arvutit edukalt kasutada ka ajal, mil &kdesrc-build; töötab.

- &kde; &subversion;i siltide ja harude kasutamise toetus.

- &kdesrc-build; kasutab mitmeid viise eduka ehitamise tagamiseks.

- Määratud mooduli ehitamise taasalustamise toetus. Võimalik on isegi konkreetse ehitamise korral eirata teatavaid mooduleid.

- &kdesrc-build; võib kiirest sooritada mooduli osalise ehitamise otse käsurealt, kui vajad ainult osa mooduli uuendamist.

- &kdesrc-build; näitab ehitamise edenemist &cmake;'i kasutamisel ning mõõdab alati ehitamise aega, nii et saad hiljem teada, kui palju selleks tegelikult kulus.

- Püüab automaatselt ümber ehitada mooduleid, mis kasutavad kasvavat make'i (tõsi, see ei pruugi alati õnnestuda).

- Pakub omalt poolt välja mõistliku valiku vaikevõtmeid &kde; elementaarse ühekasutajapaigalduse tekitamiseks anonüümse &subversion;i hoidla lähtekoodi põhjal.

- Võimaldab tildega seadistusvõtmeid laiendada. Nii võib näiteks määrata:

      qtdir ~/kdesrc/build/qt-copy

- Loob automaatselt ehitamissüsteemi, kus lähtekoodikataloog ja ehitamiskataloog erinevad, et lähtekoodikataloog oleks kindlasti puutumatu.

- Võimaldab määrata globaalsed võtmed kõigile väljavõetavale moodulile, samuti võtmed igale moodulile eraldi.

- Kuna auto-tööriistad ei suuda mõnikord käia kaasas lähtekoodipuu muudatustega, saab mooduli ümberehitamise peale sundida, luues vajaliku mooduli ehituskataloogis faili .refresh-me või käivitades &kdesrc-build;i võtmega `--refresh-build`.

- Võimaldab määrata mitmesuguseid ehitamise ajal kasutatavaid keskkonnamuutujaid, sealhulgas `KDEDIR`, `QTDIR`, `DO_NOT_COMPILE` ja `CXXFLAGS`.

- Käskude logimine. Logid dateeritakse ja nummerdatakse, nii et iga skripti käivitamise kohta on alati omaette logi. Samuti osutab spetsiaalne link nimega latest alati logikataloogi kõige uuemale logile.

- Kui ehitad &kde; kasutajale, mitte süsteemsena (viimaseks peab olema administraator), saab lasta skriptil enda eest paigaldamine ära teha. See kood ei ole küll saanud vajalikku tähelepanu ning kasutab ohtralt funktsiooni `system()` väljakutseid, mistõttu hetkel ei ole ilmselt soovitatav seda administraatorina tarvitada.

- Võimaldab kasutada make-install-prefix, et anda käsule ``make` `install`` prefiks omaette käsuna, mis on kasulik näiteks &sudo; pruukimisel.

- Välja võib võtta ainult osa &kde; &subversion;i moodulist. Näiteks võib välja võtta ainult taglib moodulist kdesupport või ainult K3B moodulist extragear/multimedia. Skript võtab automaatselt välja kde-common, kui seda on ehitamiseks vaja.

- Võimalik on teeselda millegi tegemist. Käsureal võtit `--pretend` või `-p` andes pakub skript väga põhjaliku käivitatavate käskude kirjelduse ilma neid tegelikult käivitatamata.

### &kdesrc-build;i ehitamislogi

#### Logimise ülevaade

Logimine on &kdesrc-build;i omadus, millega kõigi käskude väljund, mida &kdesrc-build; käivitab, salvestatakse faili, kus seda saab hiljem vajaduse korral uurida. Nimelt on sageli vaja just programmide väljundit, eriti kui ehitamine nurjub, sest sellel võib olla väga palju ja väga erinevaid põhjusi.

##### Logimiskataloogi struktuur

Logid salvestatakse alati logimiskataloogi. Logimiskataloogi sihtkoha määrab võti log.dir, milleks vaikimisi on `${source-dir}/log` (kus ${source-dir} on võtme source-dir väärtus. Allpool räägitaksegi sellest väärtusest kui ${log-dir}).

${log-dir} all paikneb rida katalooge vastavalt ajale, mil &kdesrc-build; töötas. Kataloogide nimi kajastab kuupäeva ja käivitamise järjenumbrit. Näiteks 26. mail 2004. aasta teise &kdesrc-build;i käivitamise korral luuakse kataloog nimega `2004-05-26-02`, kus 2004-05-26 tähistab kuupäeva ja -02 on käivitamise järjenumber.

Puhtalt mugavuse huvides loob &kdesrc-build; ka lingi viimase käivitamise logidele, mille nimeks on `latest`. Niisiis leiab &kdesrc-build;i viimase käivitamise logid alati asukohast `${log-dir}/latest`.

Iga &kdesrc-build;i käivitamise kataloog sisaldab omakorda rida katalooge, üks iga &kde; mooduli kohta, mida &kdesrc-build; üritas ehitada. Samuti leidub kataloogis fail `build-status`, mis võimaldab määrata, milliste moodulite ehitamine õnnestus ja milliste mitte.

Kui moodulil endal on alammooduleid (näiteks extragear/multimedia, playground/utils või KDE/kdelibs), siis kajastub see ka logimiskataloogi struktuuris. Nii leiab näiteks KDE/kdelibs logi viimase &kdesrc-build;i käivitamise ajal asukohas `${log-dir}/latest/KDE/kdelibs`, mitte aga asukohas `${log-dir}/latest/kdelibs`.

Iga mooduli logimiskataloogis leiab rea faile kõigi toimingute kohta, mida &kdesrc-build; ette võtab. Kui &kdesrc-build; uuendab moodulit, näeb selliseid failinimesid, nagu `svn-co.log` (mooduli väljavõtmine) või `svn-up.log` (juba varem välja võetud mooduli uuendamine). Kui tööle pandi käsk `configure`, leiab kataloogist faili `configure.log`.

Kui tekkis vigu, näeb nende selgitust mõnes samuti failides. Et saaksid kindlaks määrata, milline fail sisaldab viga. loob &kdesrc-build; lingi, mis osutab viga sisaldavale failile (näiteks faililt `build-1.log` failile `error.log`).

Lühidalt öeldes tuleb selleks, et näha, miks viimane &kdesrc-build;i käivitamine ei suutnud moodulit ehitada, kõigepealt uurida faili `${log-dir}/latest/`mooduli-nimi`/error.log`.

Kui fail `error.log` on tühi (eriti pärast paigaldamist), siis vahest vigu ei esinenudki. Mõned &kde; ehitamissüsteemi tööriistad annavad mõnikord ekslikult veast teada ka siis, kui viga ei olnudki.

Samuti võivad mõned käsud vältida &kdesrc-build;i väljundi ümbersuunamist ning teatavates oludes mitte sattuda logifaili (sagedamini siis, kui tehakse esimene &subversion;i väljavõte). Sellisel juhul ei väljastata viga mitte logifaili, vaid seda näitab hoopis &konsole; või terminal, kus pandi tööle &kdesrc-build;.

## &kdesrc-build;i seadistamine

### &kdesrc-build;i seadistamise ülevaade

Skripti kasutamiseks peab sul kodukataloogis olema fail `.kdesrc-buildrc`, mis kirjeldab mooduleid, mida soovid alla laadida ja ehitada.

See algab globaalsete võtmetega umbes nii:

    global
    võtme-nimi võtme-väärtus
    [...]
    end global

Sellele järgneb üks või enam moodulisektsiooni, mis näeb välja umbes nii:

    module mooduli-nimi
    võtme-nimi võtme-väärtus
    [...]
    end module

`mooduli-nimi` peab olema &kde; &subversion;i hoidlas leiduva mooduli nimi (näiteks kdelibs või kdebase). Mõned võtmed tühistavad globaalsed võtmed, mõned täiendavad globaalseid võtmeid, mõningaid globaalseid võtmeid aga ei saagi millegagi tühistada.

Järgnevalt toome ära levinumate võtmete nimekirja. Klõpsuga võtme nimele näeb selle kohta rohkem infot. Kõigi võtmete nägemiseks vaata osa conf-options-table.

- branch teeb väljavõtte harust, mitte aga tüvest (trunk).

- build-dir määrab ehitamiskataloogi.

- cmake-options määrab, milliste lippudega moodulit konfigureerida &cmake;'i kasutades.

- configure-flags määrab, milliste lippudega moodulit konfigureerida.

- cxxflags määrab muutuja `CXXFLAGS`.

- kdedir määrab kataloogi, kuhu &kde; paigaldada.

- kde-languages määrab kataloogi, kuhu alla laadida ja paigaldada tõlkepaketid.

- make-options edastab võtmed programmile &make;.

- qtdir määrab &Qt; asukoha.

- set-env määrab keskkonnamuutuja.

- source-dir muudab asukohta, kuhu laaditakse alla lähtekood.

- svn-server muudab serverit, kust lähtekood alla laaditakse.

### Saadaolevate seadistamisvalikute tabel

Mitmesuguste võtmete tabel, mis sisaldab järgmist teavet:

- Võtme nimi

- Kirjeldus, kuidas &kdesrc-build; reageerib mooduli ehitamisel, kui võti on määratud nii seadistustefaili globaalses kui ka mooduli sektsioonis.

- Erikommentaarid võtme eesmärgi ja kasutamise kohta.

### Võtmete tabel

Võtme nimi | Mooduli ja globaalse võtme suhe | Märkused
apidox |  | Selle võtmega sai lubada KDE mooduli API dokumentatsiooni ehitamise. See eemaldati &kdesrc-build;i versioonist 1.6.3, sest KDE 4 seda enam ei toetanud. API dokumentatsioon on saadaval võrgus aadressil org. Lisaks saab ehitada ka KDE 4 API dokumentatsiooni, kasutades skripti, mille leiab moodulist kdesdk (kataloogis /scripts). Täpsemalt kõneleb sellest KDE TechBase. Vanematele moodulitele saab muidugi endiselt API dokumentatsiooni käsitsi ehitada.
apply-qt-patches |  | See valik eemaldati kdesrc-buildi versioonis 1.10. Sama tulemuse saavutamise kohta vaata using-qt-copy ja võtit repository.
async | Ei ole tühistatav | Selle võtmega saab sisse lülitada asünkroonse režiimi, mille puhul lähtekoodi uuendamine ja ehitamine käib paralleelselt, mitte ei oodata kogu lähtekoodi allalaadimist, enne kui alustada ehitamist. Vaikimisi on asünkroonne režiim sisse lülitatud. Kui sa seda ei soovi, määra võtme väärtuseks `false`. Võti on kasutatav alates versioonist 1.6.
binpath | Mooduli seadistus tühistab globaalse | Selle võtmega saab ehitamiseks määrata keskkonnamuutuja PATH. Seda ei saa moodulivõtmega tühistada. Vaikimisi on väärtuseks $`PATH`, mis määratakse skripti käivitamisel. Keskkonnamuutuja peab koolonitega eraldatult sisaldama sinu arendustööriistade asukohti. Asukohad `$`KDEDIR`/bin` ja `$`QTDIR`/bin` lisatakse automaatselt. Selle võtme juures võib iga asukoha määramisel tarvitada ka tildet (~).
branch | Mooduli seadistus tühistab globaalse | Selle võtmega saab määrata &kde; haru väljavõtmise, mitte aga vaikimisi väljavõetava tüve (`trunk`), kus üldiselt käib põhiline arendustegevus. Näiteks &kde; 4.5 haru väljavõtmiseks määra võtme väärtuseks `4.5`. Kui &kdesrc-build; ei suuda antud võtmega haru korralikult alla laadida, võib olla vajalik käsitsi määrata allalaadimiskoha &url; võtmega module-base-path või override-url Märkus: see valik toimib ka lähtekoodi moodulitega, mis kasutavad &subversion;i asemel &git;i.
build-dir | Mooduli seadistus tühistab globaalse | Selle võtmega saab muuta ehitamiseks kasutatava lähtekoodikataloogi asukohta. Seda saab määrata kolmel viisil: Suhteline &kde; &subversion;i lähtekoodikataloogi suhtes (vaata võtit source-dir). See on vaikevalik ja valitakse juhul, kui annad kataloogi nime, mille alguses ei seisa tilde (~) või kaldkriips (/). Vaikeväärtus on `build`. Absoluutne asukoht. Kui määrad asukoha, mille alguses seisab kaldkriips (/), kasutatakse täpselt määratud asukohta. Näide: `/tmp/kde-obj-dir/`. Suhteline kodukataloogi suhtes. Kui määrad asukoha, mille alguses seisab tilde (~), arvestatakse seda asukohta sinu kodukataloogist lähtudes. Näide: `~/builddir` määrab ehitamiskataloogiks `/home/user-name/builddir`. Mõnevõrra üllatuslikult saab seda võtit muuta ka igas moodulis eraldi.
build-when-unchanged | Mooduli seadistus tühistab globaalse | Selle võtmega saab määrata, kas &kdesrc-build; peab alati püüdma ehitada moodulit, mille lähtekoodi pole uuendatud. Andes võtmele `build-when-unchanged` väärtuseks `true`, püüab &kdesrc-build; alati moodulit ehitada, isegi kui mooduli lähtekoodis pole mingeid uuendusi. See on vaikimisi sisse lülitatud, sest tagab tõenäoliselt korrektsema ehitamise. Andes võtmele `build-when-unchanged` väärtuseks `false`, püüab &kdesrc-build; moodulit ehitada ainult siis, kui mooduli lähtekoodi on uuendatud, või teistes olukordades, kus tõenäoliselt on vajalik ümberehitamine. See võib säästa aega, eriti kui kasutad skripti &kdesrc-build; igapäevaselt või veelgi sagedamini. See võimalus on mõeldud ainult optimeerimiseks. Nagu optimeerimise puhul ikka, on tasakaalustavaks elemendiks paigalduse korrektsus. Näiteks muudatused moodulis qt-copy või kdelibs võivad muuta vajalikuks teiste moodulite ümberehitamise, ehkki lähtekood ei pruugi olla üldse muutunud.
checkout-only | Mooduli seadistus tühistab globaalse | Selle võtmega saab määrata &subversion;i lähtekoodi väljavõtmise jupphaaval. Võtme väärtus kujutab endast tühikutega eraldatud väljavõetavate kataloogide nimekirja. Ehkki see võti tühistab globaalse võtme, pane tähele, et selle määramine globaalse võtmena pole just eriti mõttekas. Pane tähele, et see seadistus ei avalda mõju &git;i moodulitele &git;i lähtekoodi haldussüsteemi tegevuse tõttu. Vaata näiteks checking-out-parts.
cmake-options | Täiendab globaalset võtit (v.a. qt-copy korral) | Selle võtmega saab määrata, millised lipud edastada &cmake;'ile mooduli ehitamissüsteemi loomisel. Kasutamisel globaalse võtmena rakendatakse seda kõigile moodulitele, mida skriptiga ehitatakse. Mooduli võtmena lisatakse see globaalsete võtmete lõppu. See võimaldab määrata globaalses sektsioonis üldised &cmake;'i võtmed. See võti ei käi qt-copy kohta (sest see ei kasuta &cmake;'i). Selle asemel tuleks kasutada configure'i lippe. Et need võtmed edastatakse otse &cmake;'ile, tuleb need anda nii, nagu olekski nad kirjutatud otse &cmake;'i, näiteks:
    cmake-options -DCMAKE_BUILD_TYPE=RelWithDebInfo
Selle segaduse tõttu püüab &kdesrc-build; igati tagada, et kui ülejäänud võtmed on korrektselt määratud, saaks selle üldse andmata jätta (teisisõnu määratakse nõutavad &cmake;'i parameetrid sinu eest automaatselt).
colorful-output | Ei ole tühistatav | Määra väärtuseks `false`, kui soovid keelata &kdesrc-build;i värvilise väljundi. Vaikimisi on väärtuseks `true`. Pane tähele, et &kdesrc-build; saadab värvikoodid ainult terminali (näiteks xterm, &konsole; või tavaline &Linux; konsool).
configure-flags | Mooduli seadistus tühistab globaalse | Selle võtmega saab määrata, millised lipud edastada käsule ./configure mooduli ehitamissüsteemi loomisel. Kasutamisel globaalse võtmena rakendatakse seda kõigile moodulitele, mida skriptiga ehitatakse. See võti käib ainult qt-copy kohta. KDE 4 moodulite konfigureerimisseadistuste muutmise kohta vaata cmake-options.
cxxflags | Täiendab globaalset võtit | Selle võtmega saab määrata, milliseid lippe kasutada mooduli ehitamisel. See võti on siin võtme configure-flags või cmake-options asemel, sest see määrab ka ehitamise ajal keskkonnamuutuja `CXXFLAGS`. Pane tähele, et &kde; 4 ja kõigi teiste moodulite korral, mille puhul on kasutusel &cmake;, tuleb mooduli konfigureerimisel võtme CMAKE_BUILD_TYPE väärtuseks määrata "none". Seda saab teha võtmega cmake-options.
dest-dir | Mooduli seadistus tühistab globaalse | Selle võtmega saab muuta moodulile kettal antavat nime. Kui moodul on näiteks extragear/network, võib sellele käesoleva võtmega anda nimeks extragear-network. Pane tähele, et kuigi see muudab mooduli nime kettal, ei ole sugugi hea mõte kasutada nimes katalooge või kataloogide eraldajaid, sest see häiriks võtmete build-dir või source-dir kasutamist.
disable-agent-check | Ei ole tühistatav | Kui kasutad &subversion;i lähtekoodi allalaadimiseks &ssh;-d (näiteks protokolli svn+ssh puhul), siis &kdesrc-build; püüab tavaliselt kontrollida, et ssh-agent haldaks tõepoolest mingeid &ssh; identiteete. Nii saab vältida seda, et &ssh; päriks iga mooduli korral paroolifraasi. Soovi korral võib selle kontrolli välja lülitada, andes võtmele `disable-agent-check` väärtuseks `true`.
do-not-compile | Mooduli seadistus tühistab globaalse | Selle võtmega saab määrata kindlad kataloogid, mida mooduli korral ei ehitata. Ehitamata jäävad kataloogid tuleb eraldada tühikuga. Pane tähele, et programmide lähtekood laaditakse sellele vaatamata alla. Määramaks, milliseid katalooge alla laaditakse, kasuta võtit checkout-only. Kui näiteks soovid jätta kdemultimedia moodulis kompileerimata rakendused &juk; ja &kscd;, lisagi kdemultimedia seadistustele "do-not-compile juk kscd". Vaata näiteks not-compiling.
email-address | Ei ole tühistatav | Selle võtmega saab määrata e-posti aadressi, mida &kdesrc-build; kasutab, kui tal peaks tekkima vajadus e-kirja saata. Selle üle ei peaks muret tundma, kui sa ei kasuta mõnda e-posti võimalusega omadust (vaikimisi on need välja lülitatud). Praegu vajab seda võtit ainult võti email-on-compile-error.
email-on-compile-error | Ei ole tühistatav | Selle võtmega võib määrata e-posti aadressi, kuhu saata kiri, kui mooduli ehitamine nurjub. &kdesrc-build; ootab, kuni kõigi moodulite ehitamine on lõppenud ja koondab siis kõik tulemused raportisse. Raport saadetakse ainult siis, kui mooduli ehitamine nurjus. Võtmega email-address saab määrata aadressi, mida &kdesrc-build; saatmisel kasutab. Kontrolli seda, sest vaikimisi ei ole see arvatavasti sugugi selline, nagu vaja.
inst-apps |  | See valik eemaldati versioonis 1.10
install-after-build | Mooduli seadistus tühistab globaalse | Selle võtmega saab paketi paigaldada pärast edukat ehitamist. Vaikimisi on see sisse lülitatud. Kui soovid seda keelata, määra selle võtme väärtuseks konfiguratsioonifailis `false`. Samuti võib tarvitada käsurealippu `--no-install`.
kdedir | Mooduli seadistus tühistab globaalse | Selle võtmega määratakse kataloog, kuhu &kde; pärast ehitamist paigaldatakse. Vaikimisi on selleks `~/kde`. Kui määrad siin kataloogi, mille ligipääs nõuab administraatori õigusi, tasuks tutvuda ka võtme make-install-prefix kirjeldusega.
kde-languages | Ei ole tühistatav | See võti võimaldab &kde; kõrval alla laadida ja paigaldada lokaliseerimispaketid. See on eriti mõttekas, kui sa ei ela näiteks Ameerika Ühendriikides ja soovid, et &kde; oleks tõlgitud ka sinu emakeelde. Võtme kasutamisel tuleb tühikutega eraldatult määrata paigaldatavad keeled. Iga keelega on seotud kindel keelekood, mille leiab näiteks veebilehelt http://i18n.kde.org/teams/. Valida võib ka ainult ühe keele. Vaikimisi ei laadita alla ühtegi keelt, mis ühtlasi tähendab, et &kde; on Ameerika inglise keeles. Näiteks prantsuse keele paigaldamiseks peaks võti välja nägema umbes nii: ``kde-languages` `fr``. Aga ka pärast seda tuleb Süsteemi seadistustes prantsuse keele kasutamine sisse lülitada.
libpath | Mooduli seadistus tühistab globaalse | Selle võtmega saab määrata ehitamise ajal kasutatava keskkonnamuutuja `LD_LIBRARY_PATH`. Seda ei saa moodulivõtmega tühistada. Vaikimisi on see tühi, kuid asukohad `$`KDEDIR`/lib` ja `$`QTDIR`/lib` lisatakse automaatselt. Võtme juures võib iga asukoha määramisel kasutada tildet (~).
log-dir | Mooduli seadistus tühistab globaalse | Selle võtmega saab muuta kataloogi, kus hoitakse skripti tekitatud logifaile.
make-install-prefix | Mooduli seadistus tühistab globaalse | Selle võtmega saab tühikutega eraldatult määrata nimekirja, mida tõlgendatakse käsu ja selle võtmetena, mis lisatakse moodulite paigaldamiseks kasutatava käsu ``make` `install`` ette. See on kasulik näiteks pakettide paigaldamisel &sudo;'ga, kuid palun ole ettevaatlik, kui tegemist on administraatori õigustega.
make-options | Mooduli seadistus tühistab globaalse | Selle muutujaga saab edastada käsule `make` käsureavõtmeid. See on kasulik sellistele programmidele nagu distcc või süsteemides, kus on enam kui üks protsessorituum.
manual-build | Mooduli seadistus tühistab globaalse | Määra võtme väärtuseks `true`, kui soovid, et ehitamisel ei ehitataks antud moodulit. &subversion;ist uuendamisel seda siiski uuendatakse. See on samaväärne käsureavõtmega `--no-build`.
manual-update | Mooduli seadistus tühistab globaalse | Määra võtme väärtuseks `true`, kui soovid, et ehitamisel ei üritataks moodulit uuendada (ja seeläbi ka ehitada ega paigaldada). Kui määrad selle võtme moodulile, siis tähendab see sisuliselt selle kõrvalejätmist ehitamisest.
module-base-path | Mooduli seadistus tühistab globaalse | Selle võtmega saab tühistada &kdesrc-build;i vaikimisi kataloogiasukoha antud moodulile. Seda saab kasutada näiteks konkreetse haru või sildi väljavõtmiseks. Õige asukoha määratlemisel on kindlasti hindamatuks abiks &kde; lähtekoodi hoidla veebis. Pane tähele, et &kdesrc-build; loob lõpliku asukoha järgmise malli põhjal: ``$svn-server`/home/kde/`$module-base-path``. Vaikeväärtus on sõltuvalt mooduli nimest `trunk/`$module`` või `trunk/KDE/`$module``. Võimaluse korral kasuta selle asemel võtmeid branch või tag.
niceness | Ei ole tühistatav | Selle võtme väärtus on arv vahemikus 20 kuni 0. Mida suurem arv, seda väiksem on prioriteet, mida &kdesrc-build; endale omistab. Vaikeväärtus on 10.
no-svn | Mooduli seadistus tühistab globaalse | Kui võtme väärtuseks on määratud 'true', ei uuenda &kdesrc-build; automaatselt mooduli lähtekoodi. Siiski püütakse moodul ehitada, kui see on muidu ette nähtud.
no-rebuild-on-fail |  | See valik eemaldati versioonis 1.10, sest ehitussüsteemi paranduste tõttu ei ole sel käitumisel enam mõtet.
override-url | Mooduli seadistus tühistab globaalse | Selle võtme kasutamisel tarvitab &kdesrc-build; selle väärtust &url;-ina, mis edastatakse &subversion;ile täiesti muutmatult. Üldiselt tuleks seda kasutada siis, kui soovid alla laadida konkreetset väljalaset, kuid &kdesrc-build; ei suuda sinu soovidest võtme branch põhjal aru saada.
prefix | Mooduli seadistus tühistab globaalse | See võti määrab, kuhu paigaldada moodul (tavaliselt kasutatakse seadistust `kdedir`). Selle võtmega saab mooduli paigaldada muusse kataloogi kui see, kuhu on paigaldatud KDE platvormi teegid, mis on abiks juhul, kui kasutad &kdesrc-build;i ainult rakenduste ehitamiseks.
purge-old-logs | Mooduli seadistus tühistab globaalse | See valik määrab, kas vanad logikataloogid automaatselt kustutada või mitte. Vaikeväärtus on `false`. Isegi kui sa ei ole määranud seda valikut tõeseks, võid käsitsi kõrvaldada vanad logikataloogid käsuga: `kdesrc-build --no-src --no-build --purge-old-logs `kdelibs`` Eeltoodud käsus võib kasutada mis tahes mooduli nime, see ei pea olema kdelibs.
qtdir | Mooduli seadistus tühistab globaalse | Selle võtmega saab määrata ehitamisel kasutatava keskkonnamuutuja `QTDIR`. Seda ei saa moodulivõtmega tühistada. Kui see pole määratud, kasutatakse vaikimisi asukohta `$(source-dir)/build/qt-copy`, mis kasutab &kde; lähtekoodihoidlas leiduvat qt-copy moodulit. Kodukataloogi tähistamiseks võib kasutada tildet (~).
remove-after-install | Mooduli seadistus tühistab globaalse | Kui sul napib kõvakettal ruumi, võib selle võtmega lasta automaatselt kustutada ehitamiskataloogi (või ka korraga nii lähtekoodi- kui ka ehitamiskataloogi) pärast mooduli edukat paigaldamist. Võtme võimalikud väärtused on järgmised: none - midagi ei kustutata (vaikimisi). builddir - kustutatakse ehitamiskataloog, aga mitte lähtekoodikataloog. all - kustutatakse nii lähtekoodi- kui ehitamiskataloog. Pane tähele, et selle võtme kasutamine mõjutab päris negatiivselt nii sinu tekitatavat võrgukoormust (kui kasutad väärtust `all`) kui ka &kde; kompileerimiseks kuluvat aega, sest &kdesrc-build; ei saa sel juhul kasutada inkrementehitamist.
repository | Mooduli seadistus tühistab globaalse | See valik ilmus versioonis 1.10 ning seda kasutatakse &git;i hoidla määramiseks, kust laadida alla mooduli lähtekood. Seda valikut vajavad &Qt; (ja seega ka qt-copy) ning mitmed &kde; moodulid, mis tasapisi lähevad üle &git;i kasutamisele.
revision | Mooduli seadistus tühistab globaalse | Kui võtmele on antud muu väärtus kui 0 (null), sunnib &kdesrc-build; &subversion;i uuendama, et saada mooduli täpselt nõutud versioon, isegi kui toimib mõni selline võti nagu branch. Kui mooduli versioon on juba nõutav, seda enam ei uuendata, kui just võtit ei muudeta või ei eemaldata seadistusest.
run-tests | Mooduli seadistus tühistab globaalse | Kui väärtuseks on määratud `true`, ehitatakse moodul testkomplekti käivitamise toetusega, mis käivitatakse osana ehitusprotsessist. &kdesrc-build; näitab lihtsat testitulemuste aruannet. See on abiks arendajatele või inimestele, kes tahavad olla kindlad, et nende süsteem on korrektselt üles ehitatud.
set-env | Mooduli seadistus tühistab globaalse | Selle võtme juures saab anda tühikuga eraldatult väärtuste nimekirja, mille esimene väärtus on määratav keskkonnamuutuja ja ülejäänud selle muutuja väärtused. Näiteks muutujale `RONALD` väärtuse McDonald andmine käib nii:
    set-env RONALD McDonald
See võti on eriline selle poolest, et seda võib korrata ilma varasemaid set-env määratlusi konfiguratsioonifaili samas sektsioonis tühistamata. Sel moel võid moodulis (või ka globaalselt) määrata mitu keskkonnamuutujat.
source-dir | Mooduli seadistus tühistab globaalse | Selle võtmega saab määrata kataloogi oma arvutis, kuhu salvestatakse &kde; &subversion;i lähtekood. Kui see pole määratud, kasutatakse vaikeväärtusena `~/kdesrc`. Kodukataloogi tähistamiseks võib kasutada tildet (~).
stop-on-failure | Mooduli seadistus tühistab globaalse | Määra selle võtme väärtuseks `true`, kui soovid, et skript peataks töö pärast vea tekkimist ehitamisel või paigaldamisel. Vaikimisi on see välja lülitatud.
svn-server | Mooduli seadistus tühistab globaalse | Selle võtmega saab määrata serveri, kust &subversion; välja võetakse. Vaikimisi on see anonüümne &subversion;i hoidla `svn://anonsvn.kde.org/`. Kui tegeled KDE arendamisega, kasuta &subversion;i hoidlat, mis pakuti sule välja arendaja konto saamiselt, mitte aga anonüümset hoidlat.
tag | Mooduli seadistus tühistab globaalse | Selle võtmega saab alla laadida mooduli konkreetse väljalaske. Märkus: on üsna usutav, et sa ei soovi seda võtit kasutada. &kde; väljalasked asuvad tar-failidena &kde; FTP-saidil ning selle peegelsaitidel.
use-cmake |  | See võti eemaldati &kdesrc-build;i versioonis 1.4, sest kõigi &kde; 4 moodulite puhul on vajalik &cmake; ning &cmake;'i kasutamine ei ole lubatud ühegi teise mooduli puhul.
use-idle-io-priority | Ei ole tühistatav | See valik, mis ilmus &kdesrc-build;i versioonis 1.12, annab ketta ja muule sisendi-väljundi kasutamisele madalama prioriteedi, mis enamasti parandab tunduvalt ülejäänud süsteemi reageerimist, ehkki pikendab mõnevõrra &kdesrc-build;i tööaega. Vaikimisi on see keelatud, ketta madalama prioriteedi lubamiseks määra väärtuseks `true`.
use-qt-builddir-hack | Mooduli seadistus tühistab globaalse | See võti on eemaldatud &Qt; ehitamissüsteemi paranduste tõttu.
use-stable-kde |  | See valik eemaldati versioonis 1.10, mis piirab toetuse KDE 4-ga.

## Käsureavõtmed ja keskkonnamuutujad

### Toetatud keskkonnamuutujad

&kdesrc-build; ei kasuta keskkonnamuutujaid. Kui sul on vaja ehitamiseks või paigaldamiseks määrata keskkonnamuutujaid, uuri võtme set-env kirjeldust.

### Toetatud käsureaparameetrid

Skript tunnistab järgmisi käsureavõtmeid:

`--async`

- Lülitab sisse asünkroonse režiim, mis lubab lähtekoodi uuendada ja mooduleid ehitada ühel ja samal ajal. Vaikimisi on see sisse lülitatud, see vajab määramist ainult siis, kui keelad selle seadistuses.

`--help`

- Näitab lihtsat abiinfot skripti kohta.

`--version`

- Näitab programmi versiooni.

`--author`

- Näitab autori kontaktinfot.

`--color`

- Värvilise väljundi lubamine (vaikimisi interaktiivsete terminalide puhul).

`--nice=`väärtus``

- See väärtus kohandab &kdesrc-build;i nõutavat arvuti protsessori kasutamise prioriteeti ning peab olema vahemikus 0 kuni 20. 0 on kõrgeim prioriteet (sest see on vähem viisakas), 20 madalaim. &kdesrc-build;i vaikeväärtus on 10.

`--no-async`

- Keelab uuendamisel asünkroonse režiimi. Uuendamine võetakse sel juhul enne ehitamist ette täielikult. See aeglustab protsessi tervikuma, aga kui sul esineb &kdesrc-build;i kasutamisel IPC vigu, võiks seda võtit tarvitada ning ühtlasi esitada ka veateate.

`--no-color`

- Keelab värvilise väljundi.

`--pretend` (või `-p`)

- &kdesrc-build; sooritab uuendamise ja ehitamise, kuid tegeliku uuendamise ja ehitamise asemel annab teada, mida skript oleks ette võtnud, kui see oleks tegelikult toimunud (millised käsud käivitati, üldised sammud jne.).

  Märkus: käivitada võidakse siiski lihtsaid kirjutuskaitstud käske (näiteks failiteabe lugemine), et väljund oleks asjakohasem (näiteks korrektne matkimine, kas lähtekood võetakse välja või seda uuendatakse).

`--quiet` (või `-q`)

- Väljund on väheminformatiivsem, näidatakse ainult kõige olulisemaid teateid.

`--really-quiet`

- Väljund näitab ainult hoiatusi ja veateateid.

`--verbose` (või `-v`)

- Väljund näitab põhjalikult kõike, mis toimub ja mida &kdesrc-build; teeb.

`--src-only` (või `--svn-only`)

- Võetakse ette ainult lähtekoodi uuendamine (`svn-only` on toetatud ainult ühilduvuse nimel vanemate skriptidega).

`--build-only`

- Võetakse ette ainult ehitamine.

`--ignore-modules`

- Uuendamisse/ehitamisse ei kaasata ülejäänud käsureal antud mooduleid (see on abiks, kui soovid ehitada enamiku seadistustefailis määratud moodulitest, mõned üksikud aga vahele jätta).

`--no-src` (või `--no-svn`)

- Ei looda ühendust &subversion;i serveriga. (`--no-svn` on kasutusel ainult ühilduvuse nimel skripti vanemate versioonidega).

`--no-build`

- Ehitamine jäetakse vahele.

`--no-install`

- Pakette ei paigaldata pärast ehitamist automaatselt.

`--no-build-when-unchanged`

`--force-build`

- See võti keelab otseselt ehitamisprotsessi vahelejätmise (optimeerimise, mida kontrollib võti build-when-unchanged). See on kasulik selleks, et panna &kdesrc-build; ehitama, kui oled muutnud midagi, mida &kdesrc-build; ei suuda kontrollida.

  `--force-build` täidab täpselt sama funktsiooni, aga on võib-olla paremini meelde jäetav.

`--debug`

- Lülitab sisse silumisrežiimi. Praegu tähendab see seda, et lisaks logimisele logikataloogi saadetakse kogu väljund ka standardväljundisse (STDOUT). Samuti annavad paljud funktsioonid silumisrežiimis märksa enam infot oma tegevuse kohta.

`--no-rebuild-on-fail`

- Ei üritata algusest peale ümber ehitada mooduleid, mille ehitamine nurjus. &kdesrc-build; ei ürita seda kunagi mooduli korral, mida on juba püütud algusest peale ehitada.

`--refresh-build`

- Taasluuakse ehitamissüsteem ja alustatakse algusest peale.

`--reconfigure`

- `cmake`'i (&kde; moodulite puhul) või `configure`'i (&Qt; puhul) käivitamine uuesti ilma ehituskataloogi puhastamata. Seda ei ole tavaliselt tarvis, sest &kdesrc-build; tuvastab ise, kui muudad asjakohaseid valikuid, ning käivitab ehitamise automaatselt uuesti. Selle valikuga arvestatakse vaikimisi, kui kasutatakse parameetrit `--refresh-build`.

`--resume-from`

- Selle võtmega taasalustatakse ehitamist alates määratud moodulist, mis ongi käsureal järgmine võti. See eeldab võtit `--no-src`. Käsureal ei tohi määrata teisi moodulinimesid.

  Vaata ka: cmdline-resume-after ja resuming-failed. Seda käsureavõtit tasuks kasutada, kui oled parandatud ehitamisvea ja soovid, et &kdesrc-build; lõpetaks ehitamise.

`--resume-after`

- Selle võtmega taasalustatakse ehitamist alates pärast määratud moodulit, mis ongi käsureal järgmine võti. See eeldab võtit `--no-src`. Käsureal ei tohi määrata teisi moodulinimesid.

  Vaata ka: cmdline-resume-from ja resuming-failed. Seda käsureavõtit tasuks kasutada, kui oled parandanud ehitamisvea ning samuti ehitanud ja paigaldanud ise mooduli ning soovid, et &kdesrc-build; alustaks uuesti järgmise mooduliga.

`--rc-file`

- Järgmist käsureal antud parameetrit tõlgendatakse failina, millest lugeda konfiguratsioonivõtmed. Vaikeväärtus on `kdesrc-buildrc` (välja võetud aktiivsesse kataloogi), kui see on olemas, teistel juhtudel `~/.kdesrc-buildrc`. Vaata ka kdesrc-buildrc.

`--run`

- See võti tõlgendab järgmiste käsurea elementi programmina, mis tuleb käivitada, ning &kdesrc-build; lõpetab seejärel konfiguratsioonifaili lugemise, uuendab tavapäraselt keskkonda ja käivitab määratud programmi.

  Siiski ei sobi see enamasti shelli käivitamiseks &kdesrc-build;i keskkonnas, sest interaktiivsed shellid lähtestavad käivitusjadas tavaliselt vähemalt osa keskkonnamuutujaid (näiteks `PATH` ja `KDEDIRS`).

  Kui soovid näha keskkonda, mida &kdesrc-build; kasutab, tuleb anda käsk `printenv`:

      $ kdesrc-build --run printenv
      KDE_SESSION_VERSION=4
      SDL_AUDIODRIVER=alsa
      LANGUAGE=
      XCURSOR_THEME=Oxygen_Blue
      LESS=-R -M --shift 5
      QMAIL_CONTROLDIR=/var/qmail/control
      ... jne.

`--prefix=</kde/asukoht>`

- Võimaldab muuta kataloogi, kuhu &kde; paigaldatakse. See eeldab võtit `--reconfigure`, kuid siiski võib nõutav olla `--refresh-build` kasutamine.

`--revision`

- See valik sunnib &kdesrc-build;i tegema konkreetse numbri järgi väljavõtte igast &subversion;i moodulist, jättes arvestamata kõik moodulitele eelnevalt määratud valikud branch, tag või revision

  Seda valikut pole just kõige mõistlikum kasutada ning see on toetatud ainult ühilduvuse nimel vanemate skriptidega.

`--build-system-only`

- See valik sunnib &kdesrc-build;i loobuma mooduli ehitamisest vahetult enne seda, kui oleks käivitatud käsk `make`. See on toetatud ainult ühilduvuse nimel vanemate versioonidega, &kde; praeguse ehitamissüsteemi puhul ei ole see sugugi mõttekas.

`--install`

- Kui see on ainus käsureavõti, üritatakse paigaldada kõik edukalt ehitatud moodulid, mida sisaldab `log/latest/build-status`. Kui pärast võtit `--install` esineb veel käsureavõtmeid, tõlgendatakse neid paigaldatavate moodulitena (isegi kui neid ei õnnestunud eelmisel korral edukalt ehitada).

`--purge-old-logs`

- See valik sunnib &kdesrc-build;i kettaruumi säästmiseks kustutama pärast ehitamist ebavajalikud logikataloogid. Kustutatakse kõik logikataloogid, mida ei ole vaja failiga `log/latest` seotud linkidele. Vaikimisi on see keelatud. Valiku vaikimisi lubamise kohta vaata valikut purge-old-logs.

`--no-snapshots`

- Selle valiku määramine sunnib &kdesrc-build;i alati eelistama mooduli &subversion;i esialgset väljavõtet mooduli &subversion;i hetktõmmisele.

  Mooduli hetktõmmised on tõelised &subversion;i väljavõtted. Seda valikut ei ole vaja määrata, see on mõeldud kasutamiseks ainult probleemide ilmnemisel.

`--<võtme-nimi>=`

- Selle võtmega saab kõigi moodulite jaoks tühistada konfiguratsioonifailis leiduva võtme. Kui näiteks soovid tühistada võtit log-dir, siis see käib nii: ``--log-dir=``/kataloogi/asukoht````.

`--<mooduli-nimi>,<võtme-nimi>=`

- Selle võtmega saab konkreetse mooduli jaoks tühistada konfiguratsioonifailis leiduva võtme.

Kõiki muid käsureavõtmeid tõlgendatakse uuendatavate ja ehitatavate moodulitena. Palun ära aja ehitamist segamini paigaldamisega.

## &kdesrc-build;i kasutamine

### Eessõna

Tavaliselt on &kdesrc-build;i kasutamine pärast seda, kui läbi on töötatud getting-started, äärmiselt lihtne, piirdudes lihtsalt terminalis antava käsuga:

    % kdesrc-build

&kdesrc-build; laadib seejärel alla &kde; lähtekoodi, püüab seda konfigureerida ja ehitada ning ka paigaldada.

Loe edasi, kuidas &kdesrc-build; seda teeb, ja mida kõike selle tööriistaga veel annab ette võtta.

### &kdesrc-build;i põhiomadused

#### qt-copy toetus

&kdesrc-build; toetab kasutajate elu lihtsustamiseks &kde; tarkvaras kasutatava &Qt; tööriistakomplekti ehitamist. Selle toetusega tegeleb spetsiaalne moodul qt-copy.

&Qt; arendatakse &kde; tarkvarast eraldi hoidlas asukohaga http://qt.gitorious.org/qt.

&Qt; ehitamiseks tuleb kontrollida, et qtdir seadistuses on määratud kataloog, kuhu soovid &Qt; paigaldada, nagu räägib configure-data.

Seejärel tuleks kontrollida, et qt-copy moodul on lisatud faili `.kdesrc-buildrc` enne kõiki teisi mooduleid. Kui kasutad näidisseadistustefaili, tuleb lihtsalt olemasoleva qt-copy mooduli kirje eest eemaldada kommentaarimärge.

Nüüd tuleks kontrollida, kas võtmed repository ja branch on korrektselt määratud.

1. Esimene valik on ehitamine nii, et rakendataks ka soovitatavaid veaparandusi ja optimeerimispaiku (seda määrati varem valikuga apply-patches). Neid arendatakse eraldi hoidlas aadressiga http://gitorious.org/+kde-developers/qt/kde-qt. Kui soovid ehitamisel rakendada paiku (enamik &kde; arendajaid seda soovib), siis tuleb valikule repository määrata väärtuseks `git://gitorious.org/+kde-developers/qt/kde-qt.git`

2. Vastasel juhul määra standardse &Qt; ehitamiseks valiku repository väärtuseks `git://gitorious.org/qt/qt.git`.

Mõlemal juhul tuleb valiku branch väärtuseks määrata `master` (kui sa just ei soovi ehitada mõnda muud haru).

Mõnel juhul ei suuda lähtekoodi juhtimise tarkvara töötada, kui ta pannake tööle &kdesrc-build;ist, kuid töötab siiski kenasti käivitamisel käsurealt. Vea põhjused on praegu selgitamisel.

#### &kdesrc-build;i lisatavad standardsed lipud

Sinu aja säästmiseks lisab &kdesrc-build; sinu keskkonnale mõned standardsed asukohad:

- &kde; ja &Qt; teekide asukoht lisatakse automaatselt muutujale `LD_LIBRARY_PATH`. See tähendab, et nende kaasamiseks ei ole vaja enam muuta &libpath;'i.

- &kde; ja &Qt; arendusprogrammide asukoht lisatakse automaatselt muutujale `PATH`. See tähendab, et nende kaasamiseks ei ole vaja enam muuta &binpath;'i.

- &kde; pakutava pkg-config asukoht lisatakse automaatselt muutujale `PKG_CONFIG_PATH`. See tähendab, et nende lisamiseks ei ole enam vajalik kasutada võtit &set-env;.

- &kdedir; määratlus edastatakse ehitamise ajal automaatselt keskkonnamuutujale `KDEDIR` (see ei puuduta muutujat `KDEDIRS`).

- &qtdir; määratlus edastatakse ehitamise ajal automaatselt keskkonnamuutujale `QTDIR`.

#### &kdesrc-build;i ehitamisprioriteedi muutmine

Tänapäeva operatsioonisüsteemides (sealhulgas &Linux; ja &BSD;) võivad programmid töötada erineva prioriteediga. See võimaldab süsteemil eraldada eri programmidele aega vastavalt nende tähtsusele.

&kdesrc-build; prioriteet on üldiselt väike, nii et sinu süsteemi teised programmid saavad rahumeeli edasi töötada. Sel moel saab &kdesrc-build; kasutada protsessori lisavõimsust siis, kui seda jagub.

&kdesrc-build;i prioriteet on siiski piisavalt kõrge, et talle pööratakse tähelepanu enne rutiinseid taustaprotsesse ja selliseid samuti protsessori jääkidest elatuvaid programme nagu Seti@Home.

&kdesrc-build;i muutmiseks, et ta kasutaks püsivalt suuremat või väiksemat prioriteeti, tuleb muuta konfiguratsioonifailis leiduvat viisakust (&niceness;). See määrab, kui viisakas on &kdesrc-build; teiste programmide suhtes. Teisisõnu, mida suurem viisakus, seda väiksem on &kdesrc-build;i prioriteet. Seepärast tuleb &kdesrc-build;i prioriteedi suurendamiseks viisakust vähendada (ning vastupidi). Viisakus võib olla vahemikus 0 (täiesti ebaviisakas, suurim prioriteet) kuni 20 (üliviisakas, väikseim prioriteet).

&kdesrc-build;i prioriteeti võib ajutiselt muuta käsureavõtmega &cmd-nice;. Võtmele antav väärtus määrabki viisakuse.

Mõningatel programmidel, mis on käivitatud administraatori õigustes, võib olla isegi negatiivne viisakuse väärtus, mis annab neile väga suure prioriteedi. Negatiivse või isegi nullväärtuse määramine &kdesrc-build;ile pole siiski kuigi hea mõte, sest see ei aita kuigi palju vähendada käitusaega, küll aga muudab muu tegevuse arvutis õige venivaks.

&kdesrc-build;i käivitamine viisakusega 15 (tavalisest väiksem prioriteet):

    % kdesrc-build --nice=15

Soovi korral võib muuta seadistustefaili, et muuta see püsivaks:

    &niceness; 15

Valik niceness mõjutab ainult arvuti protsessori(te) kasutamist. Üks tähtsamaid arvuti jõudlust mõjutavaid tegureid on see, kui ohtralt kasutab programm andmete sisestamist või väljastamist (I/O). Määramaks, kui palju programm võib I/O-d kasutada, toetavad tänapäeva &Linux; operatsioonisüsteemid samalaadset tööriista ionice. &kdesrc-build; toetab samuti tööriista ionice (kuid ainult selle täieliku sisse- või väljalülitamise mõttes) valikuga use-idle-io-priority, mis on kasutusel alates &kdesrc-build;i versioonist 1.12.

#### Paigaldamine administraatorina

&kdesrc-build;i saab enesestmõistetavalt käivitada ka administraatori õigustes, näiteks kui soovid teha süsteemse paigalduse (mis ei ole siiski soovitatav). Aga sellest võib olla kasu ka &kde; ehitamisel ühele kasutajale: nimelt paigaldavad mõned moodulid, eriti kdebase, programme, mis vajavad töötamisel lühiajaliselt suuremaid õigusi. See ei ole aga võimalik, kui nad ei ole juba paigaldatud suuremate õigustega.

&kdesrc-build;i võib kohe algusest peale käivitada administraatori õigustes, aga see pole siiski soovitatav, sest programmi ei ole seni selles osas põhjalikult üle vaadatud ja nii võib see kujutada turvariski. Seepärast oleks mõttekam programmi otseselt administraatori õigustes mitte käivitada.

Sellest aitab üle saada &kdesrc-build;i võti &make-install-prefix;. Sellega saab määrata käsu, mida kasutatakse paigaldamisel teise kasutaja õigustes. Kõige soovitavam on kasutada seda käsku koostöös programmiga &sudo;, mis käivitab paigaldamiskäsu administraatori õigustes.

Näiteks kõigi moodulite paigaldamiseks &sudo; abil võib talitada nii:

    global
      &make-install-prefix; sudo
      # Teised võtmed
    end global

&make-install-prefix; kasutamiseks ainult ühe mooduli puhul peaks talitama nii:

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

#### Mooduli ehitamise edenemise näitamine

See võimalus on alati olemas ning lülitatakse automaatselt sisse, kui vähegi võimalik. See näitab mooduli ehitamise ajal selle hinnangulist edenemist, andes teada, kui kaua tõenäoliselt veel kulub ehitamise lõpuni.

### Muud omadused

#### Mooduli osaline ehitamine

Võimalik on ehitada ka ainult osa mõnest &kde; moodulist, kui näiteks soovid kasutada ainult üht moodulisse kuuluvat programmi. &kdesrc-build;i abil on see õige lihtne. Selleks on isegi mitu võimalust.

##### Mooduli üksikute osade väljavõte

See on vahest parim viis. Kui see toimib, säästab see nii allalaadimise aega kui ka kettaruumi. Sel juhul laadib &kdesrc-build; alla ainult osa määratud moodulist. Seda tehakse võtit &checkout-only; kasutades, mis määrab kindlaks allalaaditavad kataloogid.

Kui sa veel ei tea, mida moodul õieti sisaldab, tasuks esmalt uurida selle &subversion;i struktuuri näiteks WebSVN-i vahendusel.

Ainult programmide &kuser; ja KSystemLog hankimiseks moodulist kdeadmin tuleb võtit &checkout-only; kasutada nii:

    module kdeadmin
      &checkout-only; kuser ksystemlog
    end module

Kataloogid ehitatakse selles järjekorras, nagu nad on parameetritena loetletud. Kui mõni kataloog vajab kompileerimiseks moodulist veel midagi, tuleb kontrollida, et mõlemad oleks määratud &checkout-only; real ja et sõltuvus paikneks enne kataloogi, mis seda vajab.

Mõnikord võib rakendus vajada ka teisi katalooge, mille selgitamine ei pruugi olla nii lihtne. Seepärast vajab selline võimalus sageli lihtsalt proovimist katse-eksituse meetodil ning vajalike kataloogide lisamist võtmele. See võti sõltub mooduli ehitamissüsteemi toetusest, mistõttu see on kasulik ainult moodulite korral, mis koonsevad üksikute rakenduste kogust.

Veel üks märkus antud võtme kohta. Selle väärtust muutes tuleks anda ka käsk ``kdesrc-build` `&cmd-refresh-build;` ``moodul```, mis tagab mooduli korrektse ümberseadistamise. Lisaks ei eemalda &kdesrc-build; kunagi olemasolevaid faile, kui eemaldad näiteks katalooge võtme &checkout-only; alt või lisad võtme moodulile, mille väljavõtte oled juba varem teinud.

##### Kataloogide eemaldamine ehitamisest

Allalaadimise piiramise asemel võib ka kõik alla laadida, kuid lasta ehitamissüsteemil jätta ehitamise ajal teatavad kataloogid välja. See võib olla kasulik näiteks juhul, kui mõne kataloogiga tekib pidevalt vigu ning see ei ole ülejäänud mooduli jaoks iseenesest vajalik.

Seda saab määrata võtmega &do-not-compile;. See toimib sarnaselt äsja kirjeldatud võtmega &checkout-only; selles mõttes, et kujutab endast lihtsalt loendit kataloogidega, mis tuleb kompileerimisel arvestamata jätta.

Nagu &checkout-only;, nõuab ka see võti vähemalt mooduli ehitamissüsteemi ümberseadistamist pärast selle muutmist. Seda saab teha käsuga ``kdesrc-build` `&cmd-reconfigure;` ``moodul```.

Kataloogi `python` eemaldamine mooduli kdebindings ehitamisest:

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

See funktsioon sõltub mõningatest standardsetest konventsioonidest, mida kasutab enamik &kde; mooduleid. Seepärast ei pruugi see toimida kõigi programmide puhul.

#### Harude ja siltide toetus &kdesrc-build;is

##### Mis on harud ja sildid?

&subversion; toetab &kde; lähtekoodi ajalo haldamist. &kde; kasutab seda ära harude loomiseks arendamise käigus ning hoidla sildistamiseks teatava ajavahemiku järel uute väljalasete tarbeks.

Näiteks võivad mõned &kmail;i arendajad töötada omaette harus mõne uue võimaluse kallal, et vältida võimalikke probleeme versioonis, mida kasutab enamik arendajaid. Selles harus käib arendus omaette, sõltumata sellest, kuidas kulgeb arendustegevus põhiharus (/trunk).

Silt on aga nii-öelda hetkvõte lähtekoodihoidlast teataval ajahetkel. Seda kasutab &kde; haldusmeeskond väljalaskeks sobiva versiooni tähistamiseks, mis samal ajal võimaldab arendajatel jätkata tööd koodi kallal.

&subversion; õieti ei erista koodi mõttes harusid, silte ega tüve (trunk). Need on mõeldud ainult arendajate elu lihtsustamiseks. Sel põhjusel on ka harude ja siltide toetus &kdesrc-build;is mõnevõrra raskendatud, aga siiski võimalik.

##### Harude ja siltide kasutamine

Harude ja siltide toetust tagab rida võtmeid, mis ulatuvad konkreetse versiooni väljavõttest kuni kindlate &url;-ideni, kust kogenenumad kasutajad saavad vajalikke asju alla laadida.

Kõige lihtsam ongi tarvitada võtmeid &branch; ja &tag;. Piisab, kui lisada neile võtmetele soovitud haru või sildi nimi, ning &kdesrc-build; püüab ise &kde; hoidlas üles leida koha, kust nõutu alla laadida. Enamiku &kde; moodulite puhul sellest täiesti piisab.

&kde; 4.5 (ehk 4.5 haru) mooduli kdelibs allalaadimine:

    module kdelibs
      branch 4.5
      # teised võtmed...
    end module

&kde; 4.5.1 väljalaske mooduli kdemultimedia allalaadimine:

    module kdemultimedia
      tag 4.5.1
      # teised võtmed...
    end module

Võib kindlaks määrata ka haru globaalse väärtuse. Kuid sel juhul ei tohi unustada määramast konkreetset haru, kui soovid moodulit, mida ei leidu globaalses harus, või selle uuemat või vanemat versiooni!

##### Muud harudega seotud võtmed

&kdesrc-build; toetab veel kaht võtit juhtudeks, kus &branch; ja &tag; ei suuda õiget asukohta tuvastada: &module-base-path; ja &override-url;.

- &module-base-path; aitab &kdesrc-build;il tuvastada mooduli asukoha puuduvad lülid. &kde; hoidlas on kõik asukohad kujul `svnRoot/module-base-path/`moodulinimi``. Tavaliselt suudab &kdesrc-build; keskmise osa ise välja selgitada. Kui see aga miskipärast ei õnnestu, võib kasutada võtit &module-base-path;:

      module kdesupport
          # kdesupport toetab erinevaid silte antud KDE platvormi väljalaske
          # nõutava tarkvara hõlpsamaks korraldamiseks.
          module-base-path tags/kdesupport-for-4.5
      end module

  See sunnib &kdesrc-build;i qt-copy alla laadima asukohast `svn://anonsvn.kde.org/home/kde/`tags/kdesupport-for-4.5``.

  &kdesrc-build;i eelnevates versioonides käsitleti võtit &module-base-path; teistmoodi. Kui sul tekib probleeme võtme module-base-path vana definitsiooniga, siis tasuks arvatavasti kontrollida, kas tegelik asukoht on ikka selline, nagu eeldab &kdesrc-build;, kasutades võtit --pretend.

- Võti &override-url; aga nõuab, et määraksid täpse asukoha, kust alla laadida. Samas võimaldab see alla laadida kohtadest, kust &kdesrc-build; seda ise kindlasti ei teeks. Praegu peaks igale Subversioni lähtekoodi URL-ile piisama võtmest &module-base-path;.

  &kdesrc-build; ei muuda mingil moel väärtust, mille annad võtmele &override-url;, nii et kui muudad võtme &svn-server; määratlust, tuleb ka seda uuendada.

#### &kdesrc-build; ja edukas ehitamine

##### Automaatne taasehitamine

&kdesrc-build; sisaldas varem võimalusi mooduli automaatseks ümberehitamiseks pärast nurjumist (toonase ehitamissüsteemi vigade tõttu niisugune ümberehitamise katse võis isegi mõnikord toimida). Lülitumise tõttu &cmake;'ile ei taba ehitamissüsteemi enam niisugused vead, mistõttu ka &kdesrc-build; ei püüa mooduleid ehitada rohkem kui ühe korra. Esineb aga olukordi, kus &kdesrc-build; võtab automaatselt midagi ette:

- Kui muudad mooduli configure'i lippe või cmake'i valikuid, tuvastab &kdesrc-build; selle ning käivitab automaatselt uuesti moodulile configure'i või cmake'i.

- Kui ehitamissüsteemi ei ole (isegi kui &kdesrc-build; ei kustutanud seda), loob &kdesrc-build; selle automaatselt uuesti. See on abiks täieliku --refresh-build sooritamisel konkreetsele moodulile ilma vajaduseta võtta sama ette teiste moodulite puhul.

##### Mooduli taasehitamine käsitsi

Kui oled muutnud mooduli võtmeid või on mooduli lähtekood sedavõrd muutunud, et &kdesrc-build; ei tunne seda enam ära, võib olla vajalik mooduli taasehitamine käsitsi.

Selleks piisab ka käsust ``kdesrc-build` `--refresh-build` ``moodul```.

Kui soovid, et &kdesrc-build; ehitaks järgmise ehitamise uuendamise ajal mooduli automaatselt uuesti, võid luua spetsiaalse faili. Igal moodulil on oma ehitamiskataloog. Kui lood mooduli ehitamiskataloogis faili `.refresh-me`, ehitab &kdesrc-build; mooduli uuesti järgmise ehitamise ajal isegi siis, kui muidu võetakse ette märksa kiirem inkrementehitamine.

Vaikimisi on ehitamiskataloogiks `~/kdesrc/build/`moodul`/`. Kui muudad võtme &build-dir; seadistusi, kasuta aga `~/kdesrc/build`.

Mooduli `kdelibs` taasehitamine `.refresh-me` abil:

    % touch ~/kdesrc/build/kdelibs.refresh-me
    % kdesrc-build

#### Keskkonnamuutujate seadistuste muutmine

Tavaliselt kasutab &kdesrc-build; programmide käivitamisel uuenduste sooritamiseks ja ehitamiseks keskkonda, mis oli saadaval käivitamise ajal. See on abiks, kui käivitad &kdesrc-build;i käsurealt.

Kuid võib esineda juhuseid, kus tekib vajadus määrata kindlaks keskkonnamuutujad, mille jaoks &kdesrc-build;il puudub vahetu võti. (Näiteks määramaks mis tahes nõutavat keskkonnamuutujat, kui &kdesrc-build; käivitatakse mõne taimeriga, näiteks &cron;.) See on võimalik võtmega &set-env;.

Erinevalt enamikust võtmetest saab seda määrata mitu korda ning see tunnustab kaht kirjet, mida eraldab tühik. Esimene neist on määratava keskkonnamuutuja nimi ja teine selle väärtus.

Kõigile moodulitele ``DISTRO`=`BSD`` määramine:

    global
      set-env DISTRO BSD
    end global

#### Ehitamise jätkamine

##### Nurjunud või katkestatud ehitamise jätkamine

&kdesrc-build;ile võib anda korralduse alustada ehitamist mõnest muust moodulist kui tavaliselt. See võib olla mõttekas näiteks siis, kui mitme mooduli ehitamine on nurjunud või kui katkestasid ehitamise poole pealt. Seda saab määrata võtmetega &cmd-resume-from; ja &cmd-resume-after;.

Ükspuha kumba võtme kasutamisel lähtekoodi ei uuendata.

Ehitamise jätkamine alates moodulist kdebase:

    % kdesrc-build --resume-from=kdebase

Ehitamise jätkamine alates pärast moodulit kdebase (juhul kui oled ise käsitsi parandanud probleemi ja paigaldanud mooduli):

    % kdesrc-build --resume-after=kdebase

##### Moodulite eiramine ehitamisel

Nii nagu võib jätkata ehitamist kindlast moodulist, võib ka kõike uuendada ja ehitada nagu tavaliselt, kuid eirata teatavaid mooduleid.

Selleks on mõeldud võti &cmd-ignore-modules;. See annab &kdesrc-build;ile korralduse eirata uuendamisel ja ehitamisel kõiki määratud mooduleid.

extragear/multimedia ja kdereview eiramine:

    % kdesrc-build --ignore-modules extragear/multimedia kdereview

#### Võtmete muutmine käsureal

##### Globaalsete võtmete muutmine

Seadistustefailist loetavate võtmete seadistusi saab muuta otse käsurealt. See tühistab seadistustefailis määratu ainult ajutiselt, mõjudes vaid nii kaua, kuni töötab käsk, millega muutus rakendati.

&kdesrc-build; võimaldab anda võtmetele, mis on esitatud `võtmenimena`, argumente otse käsureal kujul ``--`võtmenimi`=väärtus``. &kdesrc-build; tuvastab võtme ning otsib sellele vastet võtmete loendist. Kui nime ära ei tunta, näidatakse hoiatust, kui aga tuntakse, jäetakse meelde määratud väärtus ning jäetakse arvestamata samale võtmele seadistustefailis määratud väärtus.

Võtmele &source-dir; testimiseks väärtuse `/dev/null` määramine:

    % kdesrc-build --pretend --source-dir=/dev/null

##### Mooduli võtmete muutmine

Võtmeid võib muuta ka ainult kindla mooduli puhul. Süntaks on samasugune: --`moodul`,`võtmenimi`=`väärtus`.

See tühistab igasuguse moodulile määratud samalaadse seadistuse seadistustefailis ja rakendub ainult siis, kui võti edastatakse käsureal.

Teistsuguse ehitamiskataloogi määramine moodulile kdeedu:

    % kdesrc-build --kdeedu,build-dir=temp-build

### Võimalused &kde; arendajatele

#### &ssh; agendi kontrollimine

&kdesrc-build; võib kontrollida, et &kde; arendajad, kes tarvitavad ligipääsuks &kde; lähtekoodihoidlale &ssh;-d, ei unustaks väljumisel kogemata &ssh; agenti tööle. See paneb &kdesrc-build;i sõna otseses mõttes hanguma, sest ta muudkui ootab, kuni arendaja kirjutab oma &ssh; parooli. Seepärast kontrollib &kdesrc-build; enne lähtekoodi uuendamist, kas agent töötab või mitte.

Seda tehakse ainult nende &kde; arendajate korral, kes kasutavad &ssh;-d, sest vaikimisi anonüümse väljavõtte jaoks ei ole mingit parooli vaja. &subversion; tuleb toime paroolidega ka &kde; arendajate teise võimaliku protokolli ehk https korral.

&ssh; agendi kontrollimise võib ka välja lülitada, eriti juhtudel, kus &kdesrc-build; kipub selle tegelikku olemasolu eirama. Agendi kontrollimise vältimiseks tuleb võtme `disable-agent-check` väärtuseks määrata `true`.

&ssh; agendi kontrollise keelamine:

    global
      disable-agent-check true
    end global

### &kdesrc-build;i lisaomadused

#### &kdesrc-build;i väljundi mahu muutmine

&kdesrc-build;il on mitu võtit, millega saab kindlaks määrata skripti loodava väljundi mahu. Igal juhul näidatakse alati vigu.

- Võti `--quiet` (lühemal kujul `-q`) paneb &kdesrc-build;i peaaegu vaikima: näidatakse ainult olulisi teateid, hoiatusi ja vigu. Võimaluse korral näidatakse siiski ka ehitamise edenemise teavet.

- Võti `--really-quiet` sunnib &kdesrc-build;i näitama ainult olulisi hoiatusi ja vigu.

- Võti `--verbose` (lühemal kujul `-v`) muudab &kdesrc-build;i väljundi väga üksikasjalikuks.

- Võti `--debug` on mõeldud ainult silumiseks, pannes &kdesrc-build;i tööle nii, nagu oleks sisse lülitatud võti `--verbose`. Samuti saadavad käsud oma väljundi terminali ning lisaks on näha paljude funktsioonide silumisteave.

#### Värviline väljund

Käivitamisel &konsole;'ist või mõnest muust terminalist näitab &kdesrc-build; tavaliselt värvilist teksti.

Selle saab keelata, kui anda käsureal võti `--no-color` või määrata seadistustefailis võtme &colorful-output; väärtuseks `false`.

Värvilise väljundi keelamine seadistustefailis:

    global
      colorful-output false
    end global

#### Teatamine ehitamise nurjumisest e-kirjaga

&kdesrc-build; võib saata sinu valitud e-posti aadressile aruande, kui mõne mooduli ehitamine mis tahes põhjusel nurjub. Selleks tuleb sul määrata e-posti aadress, millelt &kdesrc-build; aruande saadab, ning aadress, kuhu aruanne vea korral saadetakse.

Seejärel koostab &kdesrc-build; iga töökorra lõpul e-kirja, kui leidus mooduleid, mille ehitamine ei õnnestunud. E-kiri sisaldab lühidalt iga mooduli nurjumise kohta käivat logi. Ühe töökorra kohta saadetakse ainult üks e-kiri ka siis, kui nurjus näiteks 15 mooduli ehitamine.

Vaikimisi ei ole see võimalus sisse lülitatud. Selle lubamiseks tuleb määrata võtmed &email-address; ja &email-on-compile-error;. Võti `email-address` määrab kindlaks aadressi, mille alt &kdesrc-build; kirja saadab, ning võti `email-on-compile-error` aadressi, kuhu kiri saadetakse.

&kdesrc-build; kasutab kirja saatmiseks Perli standardset moodulit Mail::Mailer. Perl 5.8 sisaldab seda, Perl 5.6 korral tuleb see eraldi paigaldada. Mail::Mailer toetab järgmisi programme: Sendmail (kaasa arvatud Sendmailiga ühilduvad e-posti kliendid), loomupärane SMTP ning qmail.

Ehitamise veast teatava e-kirja saatmine aadressilt jama@kuskil.ee aadressile suva@kuskil.ee:

    global
      email-address          jama@kuskil.ee    # Saatja: kõigi kdesrc-buildi e-kirjade aadress
      email-on-compile-error suva@kuskil.ee    # Saaja: ehitamisveast teatamise aadress
    end global

#### Ebavajalike kataloogide eemaldamine pärast ehitamist

Sul ei ole küll kettal palju ruumi, aga tahad siiski tööle panna kõige-kõige uuema &kde;? &kdesrc-build; aitab vähendada kettakasutust ka &kde; ehitamisel &subversion;ist.

Arvesta, et &kde; ehitamine nõuab tublisti ruumi. &kdesrc-build;i kasutamisel tuleb ruumi osas silmas pidada järgmisi asju:

1. Lähtekoodi väljavõte võtab päris palju ruumi. Ainuüksi vaikimisi moodulid hõivavad umbes 1.6 gigabaiti. Seda saab küll vähendada, kui ehitada ainult need moodulid, mida sul tõepoolest vaja läheb. &kdesrc-build; ei kustuta lähtekoodi kettalt isegi siis, kui kustutad vastava kirje seadistustefailist, nii et kindlasti tuleks ise kustutada lähtekoodikataloogist kogu ebavajalik lähtekood. Pane tähele, et lähtekoodi failid laaditakse alla internetist, mistõttu neid ei tasu kustutada, kui sa neid ikkagi kasutad - vähemalt seni, kuni töötab &kdesrc-build;.

   Kui sul on juba nagunii paigaldatud &Qt;, ei ole erilist mõtet paigaldada qt-copy moodulit. Sellest loobumine hoiab kokku umbes 200 megabaiti.

   Tähele tasub panna üht iseärasust &subversion;i töös: iga hoidlast välja võetud faili kohta on kettal tegelikult kaks faili. &kdesrc-build; ei võimalda praegu minimeerida lähtekoodi suurust juhtudel, kus seda ei kasutata.

2. &kdesrc-build; loob lähtekoodi ehitamiseks eraldi ehitamiskataloogi. Mõnikord peab &kdesrc-build; kopeerima lähtekoodikataloogi, et luua liba-ehitamiskataloog. Sel juhul kasutatakse ruumisäästlikke nimeviitu, nii et see ei vähenda kettaruumi. Ehitamiskataloog on reeglina palju suurem kui sama mooduli lähtekoodikataloog. Näiteks mooduli kdebase ehitamiskataloog on umbes 1050 megabaiti, samas kui lähtekoodi ennast on vaid 550 megabaidi jagu.

   Õnnekombel ei ole pärast mooduli edukat ehitamist ja paigaldamist enam mingit vajadust ehitamiskataloogi järele. &kdesrc-build; võib pärast mooduli paigaldamist automaatselt eemaldada ehitamiskataloogi (vaata lähemalt allpool olevaid näiteid). Pane siiski tähele, et see muudab &kdesrc-build;il võimatuks teostada aega kokkuhoidvat inkrementehitamist.

3. Lõpuks nõuab oma osa kettaruumist ka &kde; paigaldus. Reeglina on vajalik ruum väiksem kui ehitamiskataloogil, aga siin on raske tuua konkreetseid arve.

Kuidas siis vähendada &kde; ruuminõudeid? Üks võimalus on kasutada vastavaid kompileerimislippe, mis võimaldavad kiiruse arvel ruumi kokku hoida. Teine ja enamasti märksa tõhusam viis on eemaldada &kde; ehitamisest silumisteave.

Enne silumisteabe eemaldamist peaksid oma sammu siiski väga tõsiselt kaaluma. Uhiuue tarkvara kasutamine sisaldab endas väga suurt tõenäosust, et see jookseb kokku palju kergemini kui stabiilne väljalase. Kui kasutad seda aga ilma silumisteabeta, on väga keeruline koostada veateateid ning sul tuleb tõenäoliselt silumisteave vähemalt krahhi üle elanud rakenduse puhul uuesti sisse lülitada ning rakendus uuesti ehitada, et saaksid aidata arendajatel viga parandada. Niisiis, silumisteabe eemaldamine jääb vaid sinu enda südametunnistusele!

Ehitamiskataloogi eemaldamine pärast mooduli paigaldamist. Lähtekoodikataloog jääb alles ning silumine on sisse lülitatud:

    global
      configure-flags      --enable-debug
      remove-after-install builddir        # Ehitamiskataloogi eemaldamine pärast paigaldamist
    end global

Ehitamiskataloogi eemaldamine pärast ehitamist. Silumine on välja lülitatud ning suurust optimeeritakse.

    global
      cxxflags             -Os             # Suuruse optimeerimine
      configure-flags      --disable-debug
      remove-after-install builddir        # Ehitamiskataloogi eemaldamine pärast paigaldamist
    end global

## &cmake; - &kde; 4 ehitamissüsteem

### &cmake;'i sissejuhatus

2006. aasta märtsis võitis &cmake; mitmeid konkurente ning valiti &kde; 4 ehitamissüsteemiks, asendades muidu &kde; algusest peale kasutatud autotoolsi-põhise süsteemi.

&cmake;'i sissejuhatuse leiab &kde; TechBase'ist. Põhimõtteliselt võib selle kokku võtta nii: selle asemel, et käivitada ``make` `-f` `Makefile.cvs``, siis `configure` ja siis &make;, tuleb nüüd käivitada &cmake; ja siis &make;.

&kdesrc-build; toetab &cmake;'i. Mõned &kdesrc-build;i omadused õieti kuuluvadki selle aluseks olevale ehitamissüsteemile, sealhulgas configure-flags ja do-not-compile. Samaväärsete omaduste korral saab neid ka kasutada. Näiteks võtme configure-flags vaste on cmake-options ning võti do-not-compile on alates &kdesrc-build;i versioonist 1.6.3 toetatud ka &cmake;'i puhul.

## Autorid ja litsents

Tõlge eesti keelde: Marek Laanebald@smail.ee

&underFDL;