Következő Előző Tartalomjegyzék Kilépés

6. uhubuild-build

A program az uhubuild-here csomag része.

Az uhubuild-build szkript végzi a tényleges csomagkészítést.

Az alábbi környezeti változókat kell megadnunk:

UHUBUILD_SRCDIR

Ebben a könyvtárban keresi a lefordítandó csomag forrás fáját. A változó értékét felülbírálja a szkriptnek adott argumentum. Ha se argumentum, se ilyen változó, akkor az aktuális munkakönyvtár játszik.

UHUBUILD_WORKDIR

Itt zajlik a fordítás teljes egésze. Ha nincs megadva, akkor egy ideiglenes könyvtárat választ magának a szkript /tmp alatt.

UHUBUILD_COMPILESNAPSHOTDIR

Ezen könyvtár alá kerül a compile snapshot. Ha nincs ilyen változó, vagy üres az értéke, akkor nem készül compile snapshot.

UHUBUILD_INSTALLSNAPSHOTDIR

Ugyanez, csak az install snapshotra.

UHUBUILD_SNAPSHOTDIR

Közös default érték adható meg a compile és az install snapshot helyére.

UHUBUILD_CCACHE_DIR

A ccache progi cache könyvtárának útvonala. Ha nincsen megadva, nem használunk ccache-t.

UHUBUILD_RESULTDIR

Ide kerülnek az elkészült bináris csomagok. Ha nincs megadva, nem készülnek bináris csomagok.

UHUBUILD_SRCPACKDIR

Ezen könyvtár alá kerül a forráskód csomag (majd egyszer). Ha nincs megadva, nem készül forráskód csomag.

UHUBUILD_LOGPACKDIR

Ezen könyvtár alá kerül a fordítás naplócsomagja. Ha nincs beállítva, nem készül ilyen naplócsomag.

A forrás fát csak olvashatónak tételezi fel, ezért egy "uhubuild-check --copy" paranccsal nemcsak leellenőrzi, hogy szintaktikailag helyesek-e a fájlok, és megvan-e minden szükséges fájl, hanem rögtön át is másolja azokat $UHUBUILD_WORKDIR/.src alá. Mostantól ezt a könyvtárat hívjuk $UHUBUILD_SRCDIR-nek.

Ezt követően nincs más hátra, mint adott sorrendben végrehajtani a /usr/lib/uhubuild/steps alatti kis progikat, amelyek a teljes csomagkészítést végzik. Ezek a szkriptek a következő környezeti változókat kapják meg:

UB_SOURCENAME

Source Name.

UB_VERSION, UB_RELEASE, UB_UHU

Értelemszerűen.

UB_PACKAGES

Whitespace-szel elválasztva a készítendő bináris csomagok nevei.

UB_WORKDIR

Ahol dolgozunk.

UB_SRCDIR

Az átmásolt forrás fa kezdete.

UB_TMPDIR

Ideiglenes cuccokat tárolhat itt egy szkript. Az itteni fájlokat lehetőleg csak az a szkript használja, amelyik elhelyezte azokat ott. Két szkript egymás közötti kommunikációra használja az UB_ADMINDIR-t.

UB_ADMINDIR

Olyan dolgokat tárolhat itt egy szkript, amelyre később másik szkript által még szükség lehet, például telepített csomagok listája vagy fordítási idő, illetve egyéb adminisztratív adatok.

UB_COMPILEDIR

A forráskód ide tömörítődik ki. Általában itt zajlik a fordítás, de ha nem, akkor

UB_OBJECTDIR

itt.

UB_INSTALLDIR

Ide kell telepíteni a fájlokat.

UB_COMPILESNAPSHOTDIR, UB_INSTALLSNAPSHOTDIR

Ide kerülnek a snapshotok.

UB_PACKAGEDIR

Az UB_INSTALLDIR alatti fájlok lesznek alcsomagokra szétrobbantva ide mozgatva.

A fentiek közül egy konkrét csomagot készítő embernek valószínűleg csak keveset kell ismernie. Egy tipikus "compile" szkript a fentiek egyikét sem használja, míg egy tipikus "install" szkript csak az $UB_INSTALLDIR értéket veszi figyelembe: ide kell a fájlokat telepítenie.

A szkriptek, amelyek meghívódnak, időrendi sorrendben a következők:

acquire

A forrás kicsomagolása, patch-ek alkalmazása.

compile

A compile szkript meghívása, vagyis a tényleges fordítás.

compile-snapshot

Snapshot készítése a compile utáni helyzetről (admin, compile és object könyvtárak, valamint egy-két egyéb adminisztratív infók), hogy lehessen itt folytatni a csomagkészítést.

install

Az install szkript meghívása, vagyis a tényleges telepítés az $UB_INSTALLDIR-ként átadott könyvtár alá. $UB_INSTALLDIR alatt a leggyakoribb könyvtárak már létre vannak hozva.

strip

Strip.

doc

A forráskód alól a doc fájlban alatt megnevezett fájlok telepítése /usr/share/doc/<sourcename> alá. Ezt muszáj az install-snapshot-create előtt csinálni, különben egy snapshot-ból visszaállítás után a doksi fájlokat már nem tudnánk elérni.

install-snapshot

Második snapshot készítése, ezúttal az install könyvtárról, plusz adminisztratív infók. Innen is lehet folytatni a csomagkészítést. Ez a snapshot általában jóval kisebb méretű az előzőnél (nyilván), és pont emiatt van a strip fázis mögé rakva. Mostantól a compile és object könyvtárak alatti fájlokhoz nem nyúlunk (hiszen azok ott sincsenek egy install snapshot visszaállítás után).

addons

Az addons alatti cuccok bemásolása.

split

A files konfigurációs fájl alapján a csomag szétrobbantása. Ezt követően minden egyes csomag alatt az üresen maradt könyvtárak törlése. A DEBIAN könyvtár létrehozása.

dirs

Az üres könyvtárak törlése, majd a dirs fájlban felsorolt könyvtárak létrehozása.

users-groups

Ha van users és/vagy groups fájl, bemásoljuk a DEBIAN könyvtár alá.

suid_wrapper

Ha van suid_wrapper fájl, bemásolja a DEBIAN könyvtár alá, és ellenőrzi, hogy csak létező fájlnevek legyenek benne.

daemons

A daemons fájl bemásolása a DEBIAN könyvtár alá.

perms

Tulajdonos, csoport és hozzáférési jog megváltoztatása a perms fájlban felsorolt fájlokra és könyvtárakra.

scripts

Standard postinst, prerm és postrm szkript készítése minden csomaghoz. Az egyéni postinst, prerm és postrm szkript átmásolása, ha van ilyen.

man

man page-ek rendberakása.

info

info fájlok rendberakása, /usr/share/info/dir törlése.

depends

Dependencia keresése: ki kell ennek a csomagnak.

shlibs

shlibs fájl készítése: milyen library-ket tartalmaz ez a csomag. (Fogalmam sincs, hogy ez mire jó, de a Debian csinál ilyet, úgyhogy csinálunk mi is.)

fhs

A kapott fájlrendszer FHS-nek megfelel-e.

conffiles

A conffiles fájl bemásolása.

uhuinfo

Az uhuinfo fájl előállítása.

control

A control fájl elkészítése.

pack

Utolsó simítás a jogok terén, csomagolás, a kész csomag .deb-ről .uhu-ra átkeresztelése.

srcpack

Forrás csomag készítése lesz majd egyszer.

logpack

Ez az utolsó lépés, ez akkor is lefut, ha valahol előbb hiba volt. A napló csomagot készíti el.


Következő Előző Tartalomjegyzék Kilépés