Syntax pro soubor sady modulů
JHBuild používá k popisu závislostí mezi moduly soubory XML. Schéma RELAX-NG a definici typu dokumentu DTD má JHBuild uložené v rámci složky modulesets/. Schéma RELAX-NG můžete použít k úpravám sady modulů pomocí režimu nxml-mode v editoru Emacs.
Prvek nejvyšší úrovně v souboru sady modulů je moduleset. Nepoužívá se žádný jmenný prostor XML. Prvky pod hlavní úrovní jsou tří typů: zdroje modulů, vložené sady modulů a definice modulů.
Obsah v souboru sady modulů může být podmíněně vkládán pomocí značky <if> obalující podmíněný obsah. V současnosti je možné rozhodovat o vložení pouze na základě toho, jestli je, nebo není, nastaven konkrétní podmíněný příznak, a to pomocí konstrukce <if condition-set='podmínka'> nebo <if condition-unset='podmínka'>. Podmínky jsou nastavené jako výchozí podle operačního systému, ale mohou být ovlivněny proměnnou conditions v jhbuildrc nebo argumentem příkazového řádku --conditions=.
- 7.1. Zdroje modulů
- 7.2. Vložení dalších sad modulů
- 7.3. Definice modulů
- 7.4. Zavržené prvky
7.1. Zdroje modulů
Než abyste vypisovali celou cestu pro každý modul, můžete v každé sadě modulů uvést několik „zdrojů modulů“ a pak se v definicích modulů odkazovat na jejich názvy. Nejenže se tím omezí množství nadbytečných informací v sadě modulů, ale pro uživatel je snazší i určit alternativní zdroj pro tyto moduly (u CVS a Subversion je běžné používat jinou metodu přístupu k repozitáři pro vývojáře a jinou pro uživatele).
Prvek repozitory se používá k popisu všech typů repozitářů. Prvek branch se používá uvnitř definice modulu k určení dodatečných nastavení.
<repository name="název" type="typ" [ default="výchozí" ] [ password="heslo" ] [ cvsroot="kořen_cvs" ] [ archive="archiv" ] [ href="odkaz" ] [ server="server" ] [ database="databáze" ] [ defbranch="výchozí_větev" ] [ trunk-template="šablona_kmene" ] [ branches-template="šablona_větve" ] [ tags-template="šablona_štítků" ] [ developer-href-example="příklad_odkazu_pro_vývojáře" ] />
Atribut name je jedinečný identifikátor pro repozitář.
Atribut default určuje, jestli je tento repozitář výchozím zdrojem pro tento modul.
Atribut type určuje typ repozitáře. Může se jednat o jednu z hodnot: bzr, cvs, darcs, fossil, git, hg, mnt, svn a tarball. Ostatní atributy závisí na konkrétním typu, stejně jako u prvku branch uvnitř definice modulu. Popsané jsou níže v částech věnovaných jednotlivým typům repozitářů.
Atribut developer-href-example se používá k určení formátu adresy URL pro repozitáře používané vývojáři. Slouží jen k informačním účelům.
Prvek branch je použit uvnitř definicí modulů.
<branch [ repo="repozitář" ] [ module="název_modulu" ] [ checkoutdir="složka_pro_stažení" ] [ revision="revize" ] [ tag="štítek" ] [ update-new-dirs="složka_pro_nové_aktualizace" ] [ override-checkoutdir="přepsat_složku_pro_stažení" ] [ subdir="podsložka" ] [ branch="větev" ] [ version="verze" ] [ size="velikost" ] [ source-subdir="podsložka_zdrojových_kódů" ] [ hash="haš" ]/>
Všechny atributy ve výchozím nastavení reagují podle definice modulu a repozitáře. Běžné atributy jsou popsány zde.
Atribut repo se používá k určení jiného názvu repozitáře, než je výchozí.
Atribut module se používá k určení názvu modulu, který se má stáhnout z repozitáře. Výchozí je id modulu.
Atribut checkoutdir se používá k určení názvu složky pro stažení. Výchozí hodnotu je id modulu.
Ostatní atributy jsou popsány níže
7.1.1. Bazaar
Tento typ repozitáře je použit k definici repozitáře Bazar. Je doporučováno mít Bazaar 1.16 nebo novější.
<repository type="bzr" name="launchpad.net" href="lp:"/>
Dalšími atributy jsou: trunk-template (výchozí hodnota je "%(module)s") a branches-template (výchozí hodnota je "%(module)s/%(branch)s"). Tyto atributy se používají jako šablony pro vytvoření adresy URL. Prvek branch v definici modulu může obsahovat atributy branch a user. Tyto hodnoty budou nahrazeny do šablony. Když je některá z nich definovaná, použije se branches-template, jinak se použije trunk-template. Tímto způsobem můžete přepsat repozitáře pro sestavení modulů z vaší soukromé větve nebo pro sestavení několika modulů z repozitáře s nestandardním rozvržením.
Prvek branch navíc přijímá atribut revspec pro ukotvení konkrétní revize. Přijímáno je jakékoliv platné bzr revspec, například date:yesterday, -5, tag:0.1 pro první revizi od včerejška, 5 zařazení od konce nebo štítku „0.1“. Možné hodnoty viz bzr help revisionspec.
Příklad repozitáře s uvedeným atributem template:
<repository type="bzr" name="launchpad.net" href="lp:" trunk-template="~bzr-pqm/%(module)s/bzr.dev" branches-template="~bzr-pqm/%(module)s/%(branch)s"/>
Příklad prvků branch pro repozitář uvedený výše:
<branch repo="launchpad.net" module="bzr" checkoutdir="bzr-next"/>
<branch repo="launchpad.net" module="bzr" branch="2.2" checkoutdir="bzr-beta"/>
7.1.2. CVS
Tento typ repozitáře je použit k definici repozitáře CVS.
Atribut password se používá k určení hesla pro repozitář.
Atribut svsroot se používá k určení kořene repozitáře.
<repository type="cvs" name="tango.freedesktop.org" cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/tango" password=""/>
Dodatečné atributy jsou: revision, update-new-dirs a override-checkoutdir.
7.1.3. Darcs
Tento typ repozitáře je použit k definici repozitáře Darcs.
<repository type="darcs" name="telepathy.freedesktop.org" href="http://projects.collabora.co.uk/darcs/telepathy/"/>
7.1.4. Git
Tento typ repozitáře je použit k definici repozitáře Git.
<repository type="git" name="git.freedesktop.org" href="git://anongit.freedesktop.org/git/"/>
U prvku branch jsou možné následující atributy:
Atribut revision se používá k určení místní nebo vzdáleně sledované větve, do které se má přepnout v kroku aktualizace. Výchozí hodnota je 'master'. Tento atribut je možné přepsat pomocí proměnné nastavení branches. Přepnutí bude provedeno, jen když je aktuální větev sledováním vzdálené větve, aby nedošlo k narušení vaší vlastní práce.
Atribut tag se používá k určení revize, která se bezpodmínečně stáhne v kroku aktualizace. Přepisuje atribut revision.
<branch repo="git.freedesktop.org" module="swfdec/swfdec" checkoutdir="swfdec" revision="local-or-remote-branch" tag="tree-ish"/>
7.1.5. Mercurial
Tento typ repozitáře je použit k definici repozitáře Mercurial.
<repository type="hg" name="hg.gtk-vnc" href="http://gtk-vnc.codemonkey.ws/hg/" />
<branch repo="hg.gtk-vnc" module="vystup.hg" checkoutdir="gtk-vnc"/>
7.1.6. Monotone
Tento typ repozitáře je použit k definici repozitáře Monotone.
Atribut server se používá k určení serveru s repozitářem.
Atribut database se používá k určení databáze, která se má použít pro repozitář.
Atribut defbranch se používá k určení větve repozitáře, která se má použít.
<repository type="mtn" name="pidgin.im" server="pidgin.im" database="pidgin.im.mtn" defbranch="im.pidgin.pidgin"/>
7.1.7. Subversion
Tento typ repozitáře je použit k definici repozitáře Subversion.
<repository type="svn" name="svn.gnome.org" default="yes" href="http://svn.gnome.org/svn/"/>
Umožňuje zadat revizi revision v prvku branch. Určuje větev, která se má stánout, nebo, pokud se jedná o číslo, revizi, která se má stáhnout.
<branch revision="gnome-2-20"/>
Pomocí trunk-template (výchozí hodnota je '%(module)s/trunk'), branches-template (výchozí hodnota je '%(module)s/branches/%(branch)s') a tags-template (výchozí hodnota je '%(module)s/tags/%(tag)s') je možné určit vlastní rozvržení svn.
7.1.8. System
Tento typ repozitáře se používá k definici falešných systémových repozitářů. Systémový repozitář je vyžadován pro vytvoření systemmodules.
<repository type="system" name="system"/>
7.1.9. Tarball
Tento typ repozitáře je použit k definici repozitáře tarball.
<repository type="tarball" name="dbus/dbus-python" href="http://dbus.freedesktop.org/releases/dbus-python/"/>
U prvku branch jsou možné následující atributy:
Atribut module určuje soubor, který se má stáhnout a zkompilovat, atribut version určuje verzi modulu.
Atributy size a hash, stejně jako zastaralý atribut md5sum, jsou volitelné. Pokud jsou přítomny, použijí se ke kontrole, jestli byl balíček se zdrojovými kódy stažen v pořádku.
Atribut rename-tarball můžete použít k přejmenování archivního souboru tarball při stahování v situaci, kdy je původní název v konfliktu s jiným modulem.
Uvnitř prvku branch může být vnořený libovolný počet prvků patch. Tyto prvky určují záplaty, které se použijí v zadaném pořadí na strom se zdrojovými kódy po té, co je rozbalen. Atribut file poskytuje název souboru se záplatou a atribut strip říká, do jaké úrovně složek se má při použití záplaty jít.
Pro sady modulů šířené v rámci JHBuildu se soubory se záplatami hledají ve složce jhbuild/patches/. Pro sady modulů dané pomocí adresy URI se hledají ve stejné složce, jako soubor sady modulů nebo v její podsložce patches/. Je také možné pomocí atributu file určit adresu URI a pak budou záplaty staženy z příslušného umístění.
<branch module="dbus-python-0.80.2.tar.gz" version="0.80.2" repo="dbus/dbus-python" hash="md5:2807bc85215c995bd595e01edd9d2077" size="453499"> <patch file="dbus-glib-build.patch" strip="1" /> </branch>
Prvek branch u repozitáře typu tarball může obsahovat také prvek quilt, který určuje vnořenou větev branch, která se má importovat.
7.2. Vložení dalších sad modulů
JHBuild umožňuje, aby jedna sada modulů obsahovala jinou sadu modulů, na kterou odkazuje prvek include.
<include href="URI"/>
Atribut href je odkaz v podobě adresy URI, který odkazuje na sadu modulů, která se má vložit, a to relativně k souboru obsahujícímu prvek include.
Z odkazované sady modulů se naimportují jen definice modulů – zdroje modulů ne. Je možné i víceúrovňové vložení, ale nesmí dojít k uzavřené smyčce (zatím neexistuje kód, který by takovou smyčku ošetřil).
7.3. Definice modulů
Existuje řada typů definicí modulů, které mohou být použity v souboru sady modulů, a seznam lze jednoduše rozšiřovat. Zde jsou zmíněné jen ty nejběžnější.
Všechny jsou v podstatě založeny na prvku branch popisujícím, jak modul získat, a prvcích dependencies, suggests a after deklarujících závislosti mezi moduly.
Moduly uvedené v prvku dependencies budou přidány do seznamu modulů pro jhbuild build, pokud v něm již nejsou, a zajistí se, aby moduly závislostí byly sestaveny jako první.
Po vytvoření seznamu modulů budou moduly uvedené v prvku suggestes použity k dalšímu seřazení seznamu modulů (ačkoliv nevloží žádné další moduly). To je pro případy, kdy moduly mají volitelné závislosti v jiném modulu.
- 7.3.1. autotools
- 7.3.2. cmake
- 7.3.3. Meson
- 7.3.4. distutils
- 7.3.5. linux
- 7.3.6. perl
- 7.3.7. systemmodule
- 7.3.8. waf
- 7.3.9. testmodule
- 7.3.10. metamodule
7.3.1. autotools
Prvek autotools se používá k definici modulu, který se kompiluje pomocí systému sestavení Autotools.
<autotools id="id" [ autogenargs="argumenty_pro_autogen" ] [ makeargs="argumenty_pro_make" ] [ makeinstallargs="argumenty_pro_makeinstall" ] [ autogen-sh="autogen-sh" ] [ makefile="makefile" ] [ skip-autogen="přeskočit-autogen" ] [ skip-install="přeskočit-install" ] [ uninstall-before-install="před_instalací_odinstalovat" ] [ autogen-template="šaplona_pro_autogen" ] [ check-target="cíl_pro_stažení" ] [ supports-non-srcdir-builds="podporuje_sestavení_mimo_zdrojovu_složku" ] [ force-non-srcdir-builds="vynutit_sestavení_mimo_zdrojovou_složku" ] [ supports-unknown-configure-options="podporuje_neznámé_volby_nastavení" ] [ supports-static-analyzer="podporuje_statickou_analýzu" ]> <branch [ … ] > […] </branch> <dependencies> <dep package="název_modulu"/> … </dependencies> <after> <dep package="název_modulu"/> … </after> </autotools>
Atributy autogenargs, makeargs a makeinstallargs se používají k určení dodatečných argumentů, které se předávají do autogen.sh respektive make respektive make install.
Atribut autogen-sh určuje název skriptu autogen.sh, který se má spustit. Pokud váš modul nemá odpovídající skript autogen.sh, je možné použít hodnotu autoreconf. V takovém případě JHBuild spustí autoreconf -fi následovaný příslušným configure. skip-autogen volí, jestli spustit či nespustit autogen.sh. skip-install je pravdivostní hodnota říkající, jestli v modulu přeskočit příkaz make install. makefile určuje název souboru makefile, který se má použít.
Atribut uninstall-before-install říká, jestli se mají před spuštěním instalačního kroku odstranit staré nainstalované soubory z modulu. To se může hodit k obejití problému, kdy libtool zkouší linkovat jednu instalovanou knihovnu vůči jiné instalované knihovně, ale protože JHBuilt používá DESTDIR, najde místo toho starou nainstalovanou knihovnu. Nevýhodou tohoto řešení ale může být, že mohou nastat problémy, když má uživatel právě spuštěný kód, který spoléhá na soubory nainstalované z modulu.
Atribut supports-non-srcdir-builds se používá k označení modulů, které nemohou být čistě sestavené pomocí odděleného stromu se zdrojovými kódy.
Atribut force-non-srcdir-builds se používá k označení modulů, které nemohou být čistě sestavené ze stromu se zdrojovými kódy, ale mohou být sestavené mimo něj.
Atribut autogen-template můžete použít, když potřebujete podrobnější kontrolu nad příkazovým řádkem pro autogen. Jedná se o řetězec formátovaný ve stylu jazyka Python a jsou v něm nahrazeny následující proměnné: srcdir, autogen-sh, prefix, libdir a autogenargs. Zde je například výchozí autogen-template:
%(srcdir)s/%(autogen-sh)s --prefix %(prefix)s --libdir %(libdir)s %(autogenargs)s
Atribut check-target musí být uveden (s hodnotou flase) pro moduly, které nemají cíl make check.
Atribut supports-static-analyzer musí být uveden (s hodnotou false) pro moduly, které nepodporují sestavení pod nástroji statické analýzy, jako je třeba scan-build.
Atribut supports-unknown-configure-options se používá k označení modulů, které se dostanou do chybového stavu, když je příkazu configure předána neznámá volba. Pro tento modul se nebudou používat globální konfigurační volby.
7.3.2. cmake
Prvek cmake se používá k definici modulu, který se sestavuje pomocí sestavovacího systému CMake.
<cmake id="nazev_modulu" [ cmakeargs="argumenty_cmake" ] [ ninjaargs="argumenty_ninja" ] [ makeargs="argumenty_make" ] [skip-install="preskocit_instalaci"] [cmakedir="složka_cmake"]> [ use-ninja="použít_ninja" ] [ force-non-srcdir-builds="vynutit_sestavení_bez_zdrojové_složky" ]> <branch […] > […] </branch> <dependencies> <dep package="nazev_modulu"/> ... </dependencies> <after> <dep package="nazev_modulu"/> … </after> </cmake>
Atribut cmakeargs je použit k určení dodatečných argumentů, které se předají příkazu cmake.
Atribut ninjaargs je použit k určení dodatečných argumentů, které se předají příkazu ninja.
Atribut makeargs je použit k určení dodatečných argumentů, které se předají příkazu make.
Atribut cmakedir určuje podsložku, vekteré se spustí cmake relativně ke složce se zdrojovými kódy.
Atribut force-non-srcdir-builds se používá k označení modulů, které nemohou být čistě sestavené ze stromu se zdrojovými kódy, ale mohou být sestavené mimo něj.
Atribut use-ninja se používá k označení modulů, které by měly být sestaveny pomocí nástroje Ninja pro cmake, namísto Make. Výchozí je použití nástroje Ninja.
7.3.3. Meson
Prvek meson se používá k definici modulu, který používá sestavovací systém Meson a je sestavován pomocí sestavovacího nástroje Ninja.
<meson id="nazev_modulu" [ mesonargs="argumenty_meson" ] [ ninjaargs="argumenty_ninja" ] [skip-install="preskocit_instalaci"]> <branch […] > […] </branch> <dependencies> <dep package="nazev_modulu"/> ... </dependencies> <after> <dep package="nazev_modulu"/> … </after> </meson>
Atribut mesonargs je použit k určení dodatečných argumentů, které se předají příkazu meson.
Atribut ninjaargs je použit k určení dodatečných argumentů, které se předají příkazu ninja.
7.3.4. distutils
Prvek distutils se používá k definici modulu, který se sestavuje pomocí distutils od Pythonu.
<distutils id="název_modulu" [ supports-non-srcdir-builds="yes|no" ]> <branch [ … ] > […] </branch> <dependencies> <dep package="název_modulu"/> … </dependencies> <after> <dep package="název_modulu"/> … </after> </distutils>
7.3.5. linux
Prvek linux definuje modul používaný k sestavení linuxového jádra. Navíc lze zvolit oddělené nastavení jádra pomocí podřízeného prvku kconfig.
<linux id="id" [ makeargs="argumenty_pro_make" ]> <branch [ … ] > […] </branch> <dependencies> <dep package="název_modulu"/> … </dependencies> <after> <dep package="název_modulu"/> … </after> <kconfig [ repo="repozitář" ] version="verze" [ module="modul" ] [ config="nastavení" ] /> </linux>
7.3.6. perl
Prvek perl je použit k sestavení modulů jazyka Perl.
Atribut makeargs je použit k určení dodatečných argumentů, které se předají příkazu make.
<perl id="nazev_modulu" [ makeargs="argumenty_pro_make" ]> <branch [ … ] > […] </branch> <dependencies> <dep package="nazev_modulu"/> … </dependencies> <after> <dep package="nazev_modulu"/> … </after> </perl>
7.3.7. systemmodule
Prvek systemmodule se používá k určení modulů, které musí být poskytnuté systémem. Moduly by měly být nainstalované skrze systém správy balíčků vaší distribuce.
<systemmodule id="nazev_modulu"> <pkg-config>pkg-config.pc</pkg-config> <branch repo="system" version="verze" /> </systemmodule>
V případě, že systémový modul neposkytuje soubor pkg-config, lze použít k určení závislostí značku systemdependencies. Podporované jsou dvě hodnoty pomocí atributu type značky dep:
-
Hodnota path. V této cestě se hledají odpovídající názvy programů.
-
Hodnota c_include. V této cestě se hledají příslušné hlavičkové soubory. Součástí name může být vložení podsložky. Cesta pro vkládání souborů v jazyce C může být změněna nastavením CPPFLAGS v rámci proměnné nastavení cflags nebo pomocí module_autogenargs.
<systemmodule id="název_modulu"> <branch repo="systém" version="verze" /> <systemdependencies> <dep type="path" name="název-spustitelného-souboru" /> </systemdependencies> </systemmodule> <systemmodule id="název_modulu"> <branch repo="systém" version="verze" /> <systemdependencies> <dep type="c_include" name="název-hlavičkového-souboru" /> </systemdependencies> </systemmodule>
V případě, že může být systémový modul nainstalován v jiném umístění nebo nainstalován jinou distribucí pod jiným názvem, můžete použít značku altdep jako podřízený prvek značky dep k určení alternativního umístění nebo názvu. Značka altdep podporuje stejné atributy jako značka dep.
<systemmodule id="název_modulu"> <branch repo="systém" version="verze" /> <systemdependencies> <dep type="path" name="název-spustitelného-souboru"> <altdep type="path" name="název-alternativního-spustitelného-souboru-1" /> <altdep type="path" name="název-alternativního-spustitelného-souboru-2" /> … <dep> </systemdependencies> </systemmodule> <systemmodule id="název_modulu"> <branch repo="systém" version="verze" /> <systemdependencies> <dep type="c_include" name="název-hlavičkového-souboru"> <altdep type="c_include" name="název-alternativního-hlavičkového-souboru-1" /> <altdep type="c_include" name="název-alternativního-hlavičkového-souboru-2" /> … <dep> </systemdependencies> </systemmodule>
7.3.8. waf
Prvek waf se používá k definici modulu, který je sestavován pomocí systému sestavení Waf.
Atribut waf-command se používá k určení příkazového skriptu waf, který se má použít. Výchozím je waf.
Atribut python-command se používá k určení spustitelného souboru pro Python. Výchozím je python. Hodí se to při sestavování modulu v jazyce Python verze 3.
<waf id="název_modulu"> [ python-command="příkaz-python" ] [ waf-command="příkaz-waf" ]> <branch [ … ] > […] </branch> <dependencies> <dep package="název_modulu"/> … </dependencies> <after> <dep package="název_modulu"/> … </after> </waf>
7.3.9. testmodule
Prvek testmodule se používá k vytvoření modulu, který spustí sadu testů používající LDTP nebo Dogtail.
<testmodule id="id" type="typ"> <branch [ … ] > […] </branch> <dependencies> <dep package="název_modulu"/> … </dependencies> <after> <dep package="název_modulu"/> … </after> <testedmodules> <tested package="balíček" /> </testedmodules> </testmodule>
Atribut type poskytuje typ testů, které se mají v modulu spustit. „dogtail“ používá Python k vyvolání všech souborů .py. „ldtp“ vyvolá „ldtprunner run.xml“.
Pokud není nastavena volba noxvfb, je spuštěn server Xvfb, aby se v něm provedly testy.
7.3.10. metamodule
Prvek metamodule definuje modul, který ve skutečnosti nic nedělá. Jediným účelem takového modulu jsou jeho závislosti.
Například meta-gnome-desktop závisí na všech klíčkových komponentách uživatelského prostředí GNOME, a proto říká, ža má JHBuild ve skutečnosti nainstalovat kompletní uživatelské prostředí.
<metamodule id="název_modulu"> <dependencies> <dep package="název_modulu"/> … </dependencies> <suggests> <dep package="název_modulu"/> … </suggests> </metamodule>
Atribut id poskytuje názve modulu. Synovské prvky jsou obsluhovány podobně jako u autotools.
7.4. Zavržené prvky
- 7.4.1. Zdroje modulů
- 7.4.2. Zavržené typy modulů
7.4.1. Zdroje modulů
7.4.1.1. cvsroot
Prvek cvsroot je nyní zavržený, místo něj by se měl použít prvek repository.
Prvek csvroot je použit k popisu repozitáře CVS.
<cvsroot name="název_kořene" [ default="yes|no" ] root="kořen-anonymního-cvs" password="heslo-anonymního-cvs"/>
Atribut name by měl být jedinečný identifikátor pro repozitář CVS.
Atribut default říká, jestli se jedná o výchozí zdroj modulu pro tento soubor sady modulů.
Atribut root uvádí kořen CVS použitý pro anonymní přístup do tohoto repozitáře a atribut password poskytuje heslo použité pro anonymní přístup.
7.4.1.2. svnroot
Prvek svnroot je zavržený, místo něj by se měl použít prvek repository.
Prvek svnroot je použit k popisu repozitáře Subversion.
<svnroot name="název_kořene" [ default="yes|no" ] href="kořen-anonymního-svn"/>
Atribut name by měl být jedinečný identifikátor pro repozitář Subversion.
Atribut default říká, jestli se jedná o výchozí zdroj modulu pro tento soubor sady modulů.
Atribut href uvádí základní adresu URL pro repozitář. Bude se nejspíše jednat o URL typu http nebo https nebo svn.
7.4.2. Zavržené typy modulů
Tento oddíl popisuje zavržené prvky, které je sice stále možné použít ve stávajících sadách modulů, ale není doporučováno je používat napříště.
- 7.4.2.1. tarball
7.4.2.1. tarball
Tento zastaralý prvek je jen lehkým obalením okolo typu modulu autotools a typem repozitáře tarball.
Prvek tarball se používá k definici modulu, který je sestavován z archivu tarball.
<tarball id="název_modulu" [ version="verze" ] [ checkoutdir="složka_pro_stažení" ] [ autogenargs="argumenty_pro_autogen" ] [ makeargs="argumenty_pro_make" ] [ autogen-sh="autogen-sh" ] [ supports-non-srcdir-builds="yes|no" ]> <source href="url_zdrojových_kódů" [ size="velikost_zdrojových_kódů" ] [ hash="algoritmus:haš_zdrojových_kódů" ] [ md5sum="md5sum_zdrojových_kódů" ]/> <patches> <patch file="název_souboru" strip="level"/> … </patches> <dependencies> <dep package="název_modulu"/> … </dependencies> <suggests> <dep package="název_modulu"/> … </suggests> </tarball>
Atributy id a version se používají k identifikaci modulu.
Prvek source určuje soubor, který se má stáhnout a zkompilovat. Atribut href je povinný, zatímco atributy size a hash, stejně jako zastaralý atribut md5sum, jsou volitelné. Pokud se objeví poslední dva zmíněné atributy, použijí se ke kontrole, že byl balíček se zdrojovými kódy stažen v pořádku.
Prvek patches se používá k určení jedné nebo více záplat, které se mají použít na strom se zdrojovými kódy po jeho rozbalení. Atribut file poskytuje název souboru se záplatou a atribut strip říká, do jaké úrovně složek se má při použití záplaty jít.
Pro sady modulů šířené v rámci JHBuildu se soubory se záplatami hledají ve složce jhbuild/patches/. Pro sady modulů dané pomocí adresy URI se hledají ve stejné složce, jako soubor sady modulů nebo v její podsložce patches/. Je také možné pomocí atributu file určit adresu URI a pak budou záplaty staženy z příslušného umístění.
Ostatní atributy a prvky dependencies, suggests a after jsou zpracovány stejně jako v autotools.