|
|
Rivi 462: |
Rivi 462: |
|
| |
|
| == CDBS == | | == CDBS == |
| Edellä tehtiin paketti käyttäen Debhelperiä, jolloin <tt>rules</tt>-tiedoston kirjoittaminen oli hyvinkin työlästä. CDBS (''Common Debian Build System'') on toinen lähestymistapa pakettien luomiseen: sitä käytettäessä [[Autotools]]ia käyttävän paketin <tt>rules</tt>-tiedosto vaatii vain 4 riviä! | | Edellä tehtiin paketti käyttäen Debhelperiä, jolloin <tt>rules</tt>-tiedoston kirjoittaminen oli hyvinkin työlästä. CDBS (''Common Debian Build System'') on toinen lähestymistapa pakettien luomiseen: se yksinkertaistaa rutiinitehtäviä jolloin esimerkiksiä [[Autotools]]ia käyttävän paketin <tt>rules</tt>-tiedosto vaatii periaatteessa vain 4 riviä! |
|
| |
|
| CDBS on modulaarinen apuohjelma paketin tekemiseen. Sitä käytettäessä <tt>rules</tt>-tiedostossa sisällytetään halutut moduulit, jotka hoitavat esimerkiksi pakettin kääntämisestä ja patchien käyttöönotosta. Ideana on, että monissa paketeissa samoina toistuvat osiot (esim. paketin kääntäminen ja patchien käsittely) on siirretty yhteen paikkaan, eikä niitä tarvitse aina kirjoittaa uudestaan.
| | Lisätietoja CDBS:n käytöstä löytyy artikkelista [[CDBS]]. |
| | |
| CDBS:ää käytettäessä paketin käännösaikaisiin riippuvuuksiin on lisättävä <tt>cdbs</tt>.
| |
| | |
| Esimerkiksi edellä paketoimamme <tt>hello</tt>-ohjelman <tt>rules</tt>-tiedostona riittäisi seuraava:
| |
| <pre>
| |
| #!/usr/bin/make -f
| |
|
| |
| include /usr/share/cdbs/1/rules/debhelper.mk
| |
| include /usr/share/cdbs/1/class/autotools.mk
| |
| </pre>
| |
| Kuten huomaat, CDBS:ää käytetään sisällyttämällä <tt>.mk</tt>-päätteisiä Makefile-tiedostoja. Näitä tiedostoja tulee CDBS:n mukana useita ja niitä voi asentaa myös muista paketeista lisää (jolloin kyseinen paketti on lisättävä käännösaikaiseksi riippuvuudeksi).
| |
| | |
| Eräitä CDBS:n <tt>.mk</tt>-tiedostoja ovat:
| |
| {| border=1
| |
| |'''Tiedosto'''
| |
| |'''Kuvaus'''
| |
| |-
| |
| |<tt>rules/debhelper.mk</tt>
| |
| |Käyttää Debhelperiä tarvittavissa kohdissa
| |
| |-
| |
| |<tt>rules/dpatch.mk</tt><br><tt>rules/simple-patchsys.mk</tt>
| |
| |Patch-järjestelmiä
| |
| |-
| |
| |<tt>class/autotools.mk</tt>
| |
| |Käyttää Autotoolsia tarvittavissa kohdissa
| |
| |-
| |
| |<tt>class/gnome.mk</tt>
| |
| |Rakentaa paketin [[GNOME]]-ohjelmalle
| |
| |-
| |
| |<tt>class/kde.mk</tt>
| |
| |Rakentaa paketin [[KDE]]-ohjelmalle
| |
| |-
| |
| |<tt>class/python-distutils.mk</tt>
| |
| |[[Python]]-ohjelmien paketointiin
| |
| |}
| |
| | |
| CDBS:n kanssa ei kuitenkaan tarvitse rajoittua vain <tt>.mk</tt>-tiedostoihin. Jos vaikkapa asennuksen aikana on tehtävä joitain harvinaisempia toimenpiteitä, ne voidaan lisätä <tt>rules</tt>-tiedostoon hieman samaan tyyliin kuin käytettäessä debhelperiä. Esimerkiksi jos paketin <tt>hello</tt> asennuksen yhteydessä on muutettava jonkin tiedoston oikeuksia, se onnistuu lisäämällä <tt>rules</tt>-tiedostoon kohta
| |
| binary-install/hello::
| |
| chmod o+x /usr/bin/hello
| |
| Mahdollisia kohtia ovat mm.
| |
| {| border=1
| |
| |'''Toiminto'''
| |
| |'''Suoritus'''
| |
| |-
| |
| |<tt>binary-install/paketti::</tt>
| |
| |Paketin luomisen yhteydessä
| |
| |-
| |
| |<tt>build/paketti::</tt>
| |
| |Kääntämisen yhteydessä
| |
| |-
| |
| |<tt>clean::</tt>
| |
| |Siivottaessa käännöshakemistoa
| |
| |}
| |
| | |
| ===Patchit===
| |
| Kuten edellä jo mainittiin, CDBS helpottaa myös patchien käyttöä. Sen mukana tulee useita erilaisia <tt>.mk</tt>-tiedostoja, jotka toteuttavat hieman erilaiset patch-järjestelmät.
| |
| | |
| ''Simple patchsys'' on nimensä mukaisesti yksinkertainen patch-järjestelmä. Sitä käytettäessä ennen lähdekoodin kääntämistä otetaan käyttöön hakemistossa <tt>debian/patches</tt> olevat patchit aakkosjärjestyksessä (yleensä tiedostot ovat nimeltään muotoa <tt>numero-nimi.patch</tt>, esim. <tt>10-korjaa_makefile.patch</tt>, jolloin ne otetaan käyttöön numerojärjestyksessä). Myöskään sillä ei ole väliä, kuinka monta polkua patchin tiedostopoluista on jätettävä huomiotta (<tt>[[patch]]in</tt> valitsin <tt>-p</tt>), sillä simple patchsys yrittää eri tasoja, kunnes patchin käyttöönotto onnistuu. Myös patchien poistaminen lähdekoodista siivouksen (''clean'') yhteydessä tapahtuu automaattisesti.
| |
| | |
| Simple patchsys otetaan käyttöön lisäämällä <tt>rules</tt>-tiedostoon rivi
| |
| include /usr/share/cdbs/1/rules/simple-patchsys.mk
| |
| | |
| Järjestelmään kuuluu myös <tt>cdbs-edit-patch</tt>-työkalu, joka mahdollistaa patchien luomisen ja muokkaamisen interaktiivisesti. Esimerkiksi jos haluamme luoda uuden patchin tai muokata vanhaa, jonka nimi on <tt>10-korjaa_makefile.patch</tt>, se onnistuu seuraavasti:
| |
| #Ajetaan komento <tt>cdbs-edit-patch 10-korjaa_makefile.patch</tt>, jolloin CDBS luo projektihakemistosta väliaikaisen kopion, johon ottaa käyttöön kaikki luotavaa patchia aiemmin käyttöön otettavat patchit (joiden numero on pienempi kuin 10). Jos tällä nimellä on jo patchi olemassa, otetaan myös se käyttöön.
| |
| #CDBS siirtää komentorivin tähän väliaikaiseen hakemistoon, jonka tiedostoja voidaan nyt muokata aivan normaalisti esimerkiksi [[vim]]illä. Tehdään tässä tilassa halutut muutokset.
| |
| #Poistutaan väliaikaisesta työskentelytilasta näppäinyhdistelmällä ''Ctrl+D''. CDBS luo uuden patchin <tt>debian/patches</tt>-hakemistoon (tai päivittää vanhaa, jos muokkasimme jo olemassa olevaa patchia) ja palaa takaisin projektihakemistoon.
| |
| #Nyt luotu patchi on normaalisti käytössä kun pakettia käännetään.
| |
| | |
| ===Lisätietoja===
| |
| *[https://perso.duckcorp.org/duck/cdbs-doc/cdbs-doc.xhtml CDBS:n dokumentaatio]
| |
|
| |
|
| ==Aiheesta muualla== | | ==Aiheesta muualla== |