A program az uhubuild-under-chroot csomag része.
Chroot rendszert épít fel, és azon belül fordítást végez.
Root-ként kell indítani.
Az alábbi környezeti változókat kell megadnunk:
Már ismerjük.
Amennyiben egy snapshotot szeretnénk folytatni, annak nevét kell itt megadnunk.
(A változó pontos neve függ a disztrib verziótól, lásd később.) Annak az apt.sources fájlnak a neve, amely a disztribhez passzoló csomagokhoz vezet minket.
A chroot környezet induló könyvtára.
Már ismerjük.
Már ismerjük.
Már ismerjük.
Már ismerjük. Ajánlott a /var/cache/uhubuild/ccache könyvtár választása, mivel ez a könyvtár pont ezen célra lett létrehozva a kinti fájlrendszerben uhubuild tulajdonossal.
Már ismerjük.
Már ismerjük.
Már ismerjük.
A fenti változók legnagyobb része úgy viselkedik, hogy ha nem volt beállítva, akkor az uhubuild-build szkript számára sem lesznek beállítva, de ha be voltak állítva, akkor egy, a régi értéktől független új értékre fogja azokat beállítani az uhubuild-chrootbuild, mielőtt az uhubuild-build-et meghívja. Például ha UHUBUILD_RESULTDIR be volt állítva, akkor a chroot alatt futó uhubuild-build szkript ezen változó értékeként mindenképp a /var/uhubuild/work/result könyvtárat fogja megkapni, és majd az uhubuild-build lefutása után másolja át innen a fájlokat a uhubuild-chrootbuild program az UHUBUILD_RESULTDIR változóban megadott helyre.
Az uhubuild-chrootbuild szkript először felépíti a chroot rendszert, ami az uhubuild-depends és az uhubuild-prepare-chroot szkriptek meghívásából áll. Az élet egy icipicit bonyolultabb. Az $UHUBUILD_APT_SOURCES változót (ha kapott) elfelejti, figyelmen kívül hagyja. Helyette az $UHUBUILD_APT_SOURCES_1_0 változó (ahova 1_0 helyébe helyettesítsd be az uhu fájlból szedett uhu verziót, a pontot aláhúzásra cserélve) értékét ülteti át $UHUBUILD_APT_SOURCES-ba. Ily módon sajnos kénytelenek vagyunk odafigyelni arra, hogy egy sources.list fájl bizony csak egy disztribhez passzol. Tehát kéretik az uhubuild-chrootbuild szkript meghívása előtt rendszeresen (mondjuk .profile-ból) beállítani az $UHUBUILD_APT_SOURCES_1_0, $UHUBUILD_APT_SOURCES_1_1, $UHUBUILD_APT_SOURCES_DEV stb. változókat, melyek mind-mind különböző sources.list fájlra mutatnak. Ez a szkript kiválasztja közülük az éppen használandót az uhu fájl tartalma alapján.
A chroot rendszer felépítése után ott biztosan lesz egy uhubuild felhasználó, valamint neki egy /var/uhubuild nevű home könyvtára. Itt fog zajlani a fordítás.
A /proc és /dev fájlrendszereket csatoljuk a chroot rendszeren belülre. Ugyancsak csatoljuk (mount --bind) a forrás könyvtárat (ugyebár $UHUBUILD_SRCDIR), méghozzá a /mnt/src könyvtár alá. Ha snapshotból folytatjuk a csomagkészítést, azt is csatoljuk /mnt/snapshot alá (mount --bind segítségével sima fájl is csatolható, nemcsak könyvtár).
Az $UHUBUILD_CCACHE_DIR könyvtárat is csatoljuk ily módon a belső /var/cache/uhubuild/ccache alá. Ha nincs megadva ez a változó, akkor nem használunk ccache-t.
Most következik a chroot rendszeren belül uhubuild felhasználóként a tényleges fordítás indítása. Ezt a már jól ismert uhubuild-build szkript végzi. Munkakönyvtárként a /var/uhubuild/work könyvtárat használja, a végeredmény csomagokat is ide pakolja (/var/uhubuild/work/result).
Az uhubuild-build szkript futásának végén két dolog van hátra. Az egyik a csatolt fájlrendszerek leválasztása. A másik az elkészült eredmények (bináris csomag, forráscsomag, napló stb.) kimásolása a chroot rendszeren belülről a környezeti változókban megadott könyvtárakba.