A JHBuild egy egyszerű keretrendszer a Gnome egyes kiadásainak vagy aktuális fejlesztői (SVN) változatának forráskódból való lefordításához. Ha a fejlesztői verzióval szeretnénk dolgozni, bekapcsolódni a fejlesztésbe, igen hasznos lehet egy naprakész Gnome példány.

Előfeltételek

Mi kell ahhoz, hogy egy friss Gnome kerüljön a gépünkre? Elsősorban némi idő, mivel a tekintélyes méretű források lefordítása akár fél napot is felemészthet. Másodsorban körülbelül 10 GB szabad hely a források és a binárisok számára. Harmadsorban pedig egy viszonylag korszerű számítógép, hogy a fordítási idő ne tartson a végtelenbe. Az egyszerűség kedvéért a forrásból való fordítás általános módszerének ismeretét adottnak tételezzük.

Első lépések

A jhbuild beszerzése előtt javasolt létrehozni egy teszt felhasználót, akinek nevében a források fordítását végezzük és a végeredményül kapott programcsomagot használjuk. A cikk további részeiben szereplő minden parancsot ezen felhasználó nevében kell kiadni.
Noha egyes disztribúciók csomagként is szállítják, ez eléggé elavult lehet, így mindenképp a forrásból telepítés a javasolt. Adjuk ki a következő parancsot:
$ svn co http://svn.gnome.org/svn/jhbuild/trunk jhbuild
Telepítése a Gnome programok esetén szokásos módon történik:
$ cd jhbuild
$ ./autogen.sh
...
$ make
...
$ make install
...
$

Ezután létre kell hozni a ~/.jhbuildrc nevű konfigurációs fájlt. Ennek alapjaként felhasználható a jhbuild könyvtárban található sample.jhbuildrc fájl:
$ cp jhbuild/sample.jhbuildrc ~/.jhbuildrc
Ebben a legtöbb beállítás megfelelő, egyet érdemes igazán megváltoztatni, de csak ha a gépben több processzormag dolgozik:
# On SMP systems you may use something like this to improve compilation time:
# be aware that not all modules compile correctly with make -j2
#makeargs = '-j2'

Ubuntun valamiért ez nem működött, így egy másik trükköt alkalmaztam:
os.environ['MAKEFLAGS'] = '-j2'
Ebben a szakaszban a makeargs előtti # eltávolításával érhető el két szál használata, több processzormag esetén a 2 helyére értelemszerűen behelyettesíthető a magok száma. Ezzel gyorsítható az egész folyamat, azonban egyes modulok nem feltétlenül fognak lefordulni, ami kézi beavatkozást igényel.

Ha megvan a konfigurációs fájl, fel lehet tenni a disztribúció a fordításhoz szükséges csomagjait, amelyek jellemzően fejlesztőeszközök és függvénytárak fejlesztői csomagjai. Hogy pontosan melyek ezek, a Gnome wikije disztribúciókra lebontva tartalmazza.

További hasznos lépés a ccache használatának beállítása, amely a későbbi újrafordítást gyorsíthatja fel. Ehhez a ccache csomag telepítése szükséges, majd a méretének megnövelése:
$ ccache -M 2G
Illetve szimbolikus linkek létrehozása a ~/bin alatt:
cd ~/bin
for cmd in cc gcc c++ g++; do
ln -s /usr/bin/ccache $cmd
done

További teendő a célkönyvtár létrehozása, ez alapértelmezésben a /opt/gnome2:

sudo mkdir -p /opt/gnome2
sudo chown username:usergroup /opt/gnome2

Akció!

Most pedig már tényleg kezdődhet a fordítás:
$ jhbuild build
Ennek futása során valószínűleg lesz néhány olyan modul, amely éppen nem fordul le – az egyszerűség kedvéért most feltételezzük hogy nagyjából minden rendben ment, az egyéb esetekkel a következő cikk foglalkozik.

Ha a fordítás befejeződött, fel kellene venni a frissen készült környezetet a GDM menüjébe. Ehhez két fájlt kell létrehozni. Az első a /usr/bin/jhbuild-session, ez indítja el a GDM-ből a munkamenetet, a tartalma:
#!/bin/sh
exec jhbuild --file=/etc/jhbuild.conf run gnome-session

A második a /usr/share/xsessions/jhbuild.desktop, amely a GDM által látott bejegyzésfájl, a tartalma:
[Desktop Entry]
Encoding=UTF-8
Name=Jhbuild GNOME
Comment=Bejelentkezés a Jhbuild GNOME környezetbe
Exec=/usr/bin/jhbuild-session
Icon=
Type=Application

Néhány további parancsot kell még kiadni:
$ sudo chmod a+x /usr/bin/jhbuild-session
$ sudo ln -s /home/jhbuildfelhasználó/.jhbuildrc /etc/jhbuild.conf
mkdir -p /opt/gnome2/var/run
ln -s /var/run/dbus/ /opt/gnome2/var/run/dbus/

Majd kijelentkezés után a bejelentkezéskezelőből beléphetünk a frissen készült fejlesztői GNOME környezetbe.