Komma igång

JHBuild kräver att ett antal inställningssteg genomförs innan man bygger programvara. JHBuild förutsätter viss programvara och det är nödvändigt att installera de krävda verktygen för att hämta och bygga programvarumodulerna.

2.1. Installera JHBuild

JHBuild kräver en Python-exekveringsmiljö. Verifiera att Python >= 2.3 är installerat.

Det rekommenderade sättet att hämta JHBuild är via versionshanteringssystemet git. Detta kan åstadkommas med följande kommando. Det rekommenderas att kommandot körs från en ny katalog där all källkod kommer att installeras, t.ex. ~/jhbuild/checkout.

$ git clone https://gitlab.gnome.org/GNOME/jhbuild.git
...
$

Detta kommer att hämta JHBuild till en ny mapp vid namn jhbuild under den aktuella katalogen. Bygg och installera nu JHBuild:

$ cd jhbuild
$ ./autogen.sh
...
$ make
...
$ make install
...
$

Om gnome-common, yelp-tools och autotools finns tillgängliga så kommer autogen.sh att konfigurera JHBuild att installera via autotools. Om gnome-common, yelp-tools och autotools inte finns tillgängliga kommer autogen.sh att konfigurera JHBuild att installera via en vanlig Makefil. För att alltid använda metoden med en vanlig Makefil ange --simple-install till autogen.sh.

Om stegen ovan avslutas framgångsrikt kommer ett litet skalskript att installeras i ~/.local/bin för att starta JHBuild. Lägg till ~/.local/bin i PATH:

$ PATH=$PATH:~/.local/bin
$

För att permanent lägga till ~/.local/bin till variabeln PATH, kör följande kommando:

$ echo 'PATH=$PATH:~/.local/bin' >> ~/.bashrc
$

2.2. Konfigurera JHBuild

JHBuild kan konfigureras via en konfigurationsfil. Standardplatsen är ~/.config/jhbuildrc. Om en konfigurationsfil inte existerar kommer standardvärden att användas. Konfigurationsfilen använder Python-syntax. Ett exempel finns, se examples/sample.jhbuildrc. Kopiera examples/sample.jhbuildrc till ~/.config/jhbuildrc och anpassa efter behov.

Exempelkonfigurationsfilen kommer att göra så att JHBuild bygger modulerna meta-gnome-core och meta-gnome-apps-tested och beroenden från moduluppsättningen gnome-apps. JHBuild kommer att packa upp källträden i ~/jhbuild/checkout/ och installera alla filer i underkatalog under ~/jhbuild/install/. De två katalogerna måste vara skrivbara.

Konfigurationsvariabler finns dokumenterade i Avsnitt 6 ― Referensmanual för konfigurationsfil. De vanligast använda variablerna är:

repos

En uppslagsbok som kan användas för att ange en alternativ arkivplats för ett visst arkiv. Denna konfigurationsvariabel är användbar för en modulutvecklare. Som standard kommer JHBuild att checka ut kod från arkiv via en anonym arkivplats. Upplagsverkets nycklar är korta arkivnamn och värdena är alternativa arkivplatssträngar. Till exempel:

repos['git.gnome.org'] = 'ssh://användarnamn@git.gnome.org/git/'
moduleset

En sträng eller lista av strängar som anger namn(en) för de moduluppsättningar som ska användas. Detta kan antingen vara filnamnet för en moduluppsättning inkluderad med JHBuild (exklusive sökvägen och filändelsen), eller en fullständig HTTP URL till en externt hanterad moduluppsättning. HTTP-URL-moduluppsättningar cachas lokalt. Om en modul med samma namn finns i mer än en moduluppsättning kommer den senast listade att ha högre prioritet. Moduluppsättningar som tillhandahålls av JHBuild uppdateras för att matcha aktuell GNOME-utvecklingsversion.

modules

En lista av strängar som ange vilka moduler som ska byggas. Listan av moduler som faktiskt byggts kommer att expanderas rekursivt till att inkludera alla beroenden om inte kommandot buildone används. Standardvärdet är ['meta-gnome-desktop'].

checkoutroot

En sträng som anger katalogen att packa upp källträden i. Om buildroot är inställt till None kommer byggen också att ske i denna katalog. Standardvärdet är ~/jhbuild/checkout.

prefix

En sträng som anger prefixet att installera moduler i. prefix måste vara en absolut sökväg. Denna katalog måste vara skrivbar. Standardvärdet är ”~/jhbuild/install”.

autogenargs

En sträng som innehåller argument som angetts till skriptet autogen.sh för alla moduler. Kan åsidosättas för specifika moduler via uppslagsboken module_autogenargs.

cmakeargs

En sträng som innehåller argument som angetts till cmake-anropet för alla moduler. Kan åsidosättas för specifika moduler via uppslagsboken module_cmakeargs.

makeargs

En sträng som listar ytterligare argument som ska anges till make. JHBuild kommer automatiskt att lägga till den parallella exekveringsflaggan (-j) baserat på antalet tillgängliga CPU-kärnor. Standardvärdet är ””.

mesonargs

En sträng som innehåller argument som angetts till meson-anropet för alla moduler. Kan åsidosättas för specifika moduler via uppslagsboken module_mesonargs.

ninjaargs

En sträng som listar ytterligare argument som ska skickas till ninja. Standardvärdet är ''.

2.3. Byggförutsättningar

Innan några moduler kan byggas är det nödvändigt att ha vissa byggverktyg installerade. Vanliga byggverktyg inkluderar GNU Autotools (autoconf, automake, libtool och gettext), GNU-verktygskedjan (binutils, gcc, g++), make, pkg-config och Python, beroende på vilka moduler som ska byggas.

JHBuild kan kontrollera att verktygen är installerade via kommandot sanitycheck:

$ jhbuild sanitycheck

Om detta kommando visar några meddelanden, installera paketet som krävs från din distributions arkiv. En lista över paketnamn för olika distributioner underhålls på GNOME:s wiki. Kör kommandot sanitycheck på nytt efter att du installerat distributionens paket för att säkerställa att verktygen är installerade.

2.4. Att använda JHBuild

Efter att installationen är avslutad kan JHBuild användas för att bygga programvara. För att bygga alla moduler som valts i filen ~/.config/jhbuildrc, kör följande kommando:

$ jhbuild build

JHBuild kommer att hämta, konfigurera, kompilera och installera varje modul. Om ett fel uppstår någonstans kommer JHBuild att visa en meny och fråga vad som ska hända. Alternativen inkluderar att öppna ett skal för att fixa problemet, köra om bygget från olika steg, hoppa över modulen eller ignorera felet och fortsätta.

Att hoppa över en modul kommer att förorsaka att de moduler som beror på modulen misslyckas.

Nedan finns ett exempel på menyn som visas:

  [1] Kör om fas byggnation
  [2] Ignorera fel och fortsätt installera
  [3] Hoppa över modul
  [4] Starta skal
  [5] Läsa om konfiguration
  [6] Gå till fas ”töm katalogen och börja om”
  [7] Gå till fas ”configure”
  [8] Gå till fas ”clean”
  [9] Gå till fas ”distclean”
val: 

Det är också möjligt att bygga en annan uppsättning moduler och deras beroenden genom att ange modulnamnen som argument till kommandot build. För att till exempel bygga gtk+:

$ jhbuild build gtk+

Om JHBuild avbryts halvvägs genom ett bygg är det möjligt att återuppta bygget för en specifik modul via flaggan --start-at:

$ jhbuild build --start-at=pango

För att bygga en eller flera moduler, utan deras beroenden, tillhandahåller JHBuild kommandot buildone. För att kommandot buildone ska kunna avslutas korrekt måste alla beroenden ha byggts och installerats tidigare eller tillhandahållas av distributionspaket.

$ jhbuild buildone gtk+

Under aktiv utveckling av en modul befinner du dig sannolikt i en arbetskatalog för källkoden. make kommer att starta byggsystemet och installera modulen. Detta kommer att vara en väsentlig del i cykeln redigera-kompilera-installera-testa.

$ jhbuild make

För att få en lista över modulerna och deras beroenden som JHBuild kommer att bygg och ordningen de kommer att byggas i, använd kommandot list:

$ jhbuild list

För att få information om en vissa modul, använda kommandot info:

$ jhbuild info gtk+

För att hämta eller uppdatera all programvarukällkod utan att bygga, använda kommandot update. Kommandot update erbjuder en möjlighet att modifiera källkoden innan den byggs och kan vara användbart om bandbredden till internet varierar.

$ jhbuild update

Senare kan JHBuild bygga allting utan att hämta ner eller uppdatera källkoden:

$ jhbuild build --no-network

För att köra ett särskilt kommando med samma miljö som används av JHBuild, använd kommandot run:

$ jhbuild run program

För att starta ett skal med samma miljö som används av JHBuild, använd kommandot shell:

$ jhbuild shell