Σύνταξη αρχείου ορισμού ενότητας

Το JHBuild χρησιμοποιεί αρχεία XML για να περιγράψει τις εξαρτήσεις μεταξύ ενοτήτων. Ένα σχήμα RELAX-NG και ένας ορισμός τύπου εγγράφου περιλαμβάνονται με το JHBuild στον κατάλογο modulesets/. Το σχήμα RELAX-NG μπορεί να χρησιμοποιηθεί για επεξεργασία αρχείων ομάδας ενοτήτων χρησιμοποιώντας το nxml-mode στο Emacs.

Το στοιχείο κορυφαίου επιπέδου σε ένα αρχείο ομάδας ενοτήτων είναι το στοιχείο moduleset. Καμία ονοματοθεσία XML δεν χρησιμοποιείται. Τα στοιχεία κάτω από το κορυφαίο επίπεδο έρχονται σε τρεις τύπους: πηγές ενότητας, περιλαμβανομένων των ορισμών προτάσεων και ενοτήτων.

Content in the moduleset file can be conditionally included by use of the <if> tag to surround the conditional content. It is currently only possible to predicate the inclusion on whether a particular condition flag is set or not, using <if condition-set='cond'> or <if condition-unset='cond'>. Conditions are set by default on a per-OS basis but can be influenced by way of the conditions variable in jhbuildrc or the --conditions= commandline argument.

7.1. Πηγές ενότητας

Αντί για λίστες της πλήρους θέσης κάθε ενότητας, ένας αριθμός από "πηγές ενότητες" καταχωρίζονται στην ομάδα ενοτήτων και έπειτα αναφέρονται κατ' όνομα στους ορισμούς ενοτήτων. Επίσης μειώνουν την ποσότητα των περιττών πληροφοριών στην ομάδα ενοτήτων, διευκολύνοντας έναν χρήστη να ορίσει μια εναλλακτική πηγή για αυτές τις ενότητες (για CVS και Subversion, είναι συνηθισμένο οι προγραμματιστές και οι χρήστες να χρησιμοποιούν διαφορετικές μεθόδους πρόσβασης αποθετηρίων).

Το στοιχείο repository χρησιμοποιείται για να περιγράψει όλους τους τύπους του αποθετηρίου. Το στοιχείο branch χρησιμοποιείται μέσα στον ορισμό ενότητας για να ορίσει πρόσθετες ρυθμίσεις.

<repository name="name"
  type="type"
  [ default="default" ]
  [ password="password" ]
  [ cvsroot="cvsroot" ]
  [ archive="archive" ]
  [ href="href" ]
  [ server="server" ]
  [ database="database" ]
  [ defbranch="defbranch" ]
  [ trunk-template="trunk-template" ]
  [ branches-template="branches-template" ]
  [ tags-template="tags-template" ]
  [ developer-href-example="developer-href-example" ] />

Το γνώρισμα name είναι ένας μοναδικός ταυτοποιητής για το αποθετήριο.

Το γνώρισμα default καθορίζει αν αυτό το αποθετήριο είναι η προεπιλεγμένη πηγή για αυτήν την ομάδα ενοτήτων.

Το γνώρισμα type καθορίζει τον τύπο του αποθετηρίου. Μπορεί να είναι ένα από τα: bzr, cvs, darcs, fossil, git, hg, mnt, svn, tarball. Άλλα γνωρίσματα εξαρτώνται από τον type, καθώς και από τον χρησιμοποιούμενο branch μέσα στους ορισμούς της ενότητας. Αυτά περιγράφονται παρακάτω στις υποενότητες τύπου αποθετηρίου.

Το γνώρισμα developer-href-example χρησιμοποιείται για να ορίσει τη μορφή του URL για το χρησιμοποιούμενο αποθετήριο από τους προγραμματιστές. Αυτί είναι μόνο πληροφοριακό.

Το στοιχείο branch χρησιμοποιείται μέσα στους ορισμούς ενοτήτων.

<branch
  [ repo="repository" ]
  [ module="module name" ]
  [ checkoutdir="checkoutdir" ]
  [ revision="revision" ]
  [ tag="tag" ]
  [ update-new-dirs="update-new-dirs" ]
  [ override-checkoutdir="override-checkoutdir" ]
  [ subdir="subdir" ]
  [ branch="branch" ]
  [ version="version" ]
  [ size="size" ]
  [ source-subdir="source-subdir" ]
  [ hash="hash" ]/>

Όλα τα γνωρίσματα έχουν λογικές προεπιλογές και εξαρτώνται από την ενότητα και τους ορισμούς αποθετηρίου. Συνηθισμένα γνωρίσματα περιγράφονται εδώ.

Το γνώρισμα repo χρησιμοποιείται για να ορίσει μη προεπιλεγμένο όνομα αποθετηρίου.

Το γνώρισμα module χρησιμοποιείται για να ορίσει όνομα ενότητας για έλεγχο εξόδου από το αποθετήριο. Προεπιλογή το αναγνωριστικό ενότητας.

Το γνώρισμα checkoutdir χρησιμοποιείται για να ορίσει το όνομα καταλόγου του ελέγχου εξόδου. Προεπιλογή το αναγνωριστικό ενότητας.

Άλλα γνωρίσματα περιγράφονται παρακάτω

7.1.1. Bazaar

Αυτός ο τύπος αποθετηρίου χρησιμοποιείται για να ορίσει ένα αποθετήριο Bazaar. Συνιστάται να έχετε Bazaar 1.16 ή μεγαλύτερο.

<repository type="bzr" name="launchpad.net"
      href="lp:"/>
        

Πρόσθετα γνωρίσματα είναι: trunk-template (προεπιλογή το "%(module)s") και branches-template (προεπιλογή το "%(module)s/%(branch)s"). Αυτά τα γνωρίσματα χρησιμοποιούνται για να ορίσουν πρότυπα για κατασκευή URL. Ένα στοιχείο branch στους ορισμούς ενότητας μπορεί να ορίσει γνωρίσματα branch και user. Αυτές οι τιμές θα στα πρότυπα. Αν ένα από αυτά ορίζεται χρησιμοποιείται το branches-template, αλλιώς χρησιμοποιείται το trunk-template. Έτσι μπορείτε να αντικαταστήσετε το αποθετήριο για να δομήσετε ενότητες από τον προσωπικό σας κλάδο ή να δομήσετε πολλές ενότητες από ένα αποθετήριο με άτυπη διάταξη.

Μια πρόσθεση στοιχείου branch δέχεται το γνώρισμα revspec να αγκυρωθεί σε μια συγκεκριμένη αναθεώρηση. Οποιοδήποτε έγκυρο bzr revspec γίνεται δεκτό, για παράδειγμα date:yesterday, -5, tag:0.1 για να πάρετε την πρώτη αναθεώρηση από χτες, το 5 υποβάλλει πίσω από την άκρη ή ετικέτα "0.1". Δείτε bzr help revisionspec για όλες τις δυνατές τιμές.

Παράδειγμα αποθετηρίου με ορισμένα γνωρίσματα είναι 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"/>
        

Παράδειγμα στοιχείων branch για το παραπάνω αποθετήριο:

<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

Αυτός ο τύπος αποθετηρίου χρησιμοποιείται για να ορίσει ένα αποθετήριο CVS.

Το γνώρισμα password χρησιμοποιείται για να ορίσει τον κωδικό του αποθετηρίου.

Το γνώρισμα cvsroot χρησιμοποιείται για να ορίσει το ριζικό του αποθετηρίου.

<repository type="cvs" name="tango.freedesktop.org"
    cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/tango"
    password=""/>
        

Πρόσθετα γνωρίσματα είναι: revision, update-new-dirs και override-checkoutdir.

7.1.3. Darcs

Αυτός ο τύπος αποθετηρίου χρησιμοποιείται για να ορίσει ένα αποθετήριο Darcs.

<repository type="darcs" name="telepathy.freedesktop.org"
      href="http://projects.collabora.co.uk/darcs/telepathy/"/>

7.1.4. Git

Αυτός ο τύπος αποθετηρίου χρησιμοποιείται για να ορίσει ένα αποθετήριο Git.

<repository type="git" name="git.freedesktop.org"
    href="git://anongit.freedesktop.org/git/"/>
        

Επιτρέπει τα ακόλουθα γνωρίσματα στο στοιχείο branch:

Το γνώρισμα revision χρησιμοποιείται για να ορίσει έναν τοπικό ή απομακρυσμένης ανίχνευσης κλάδο για εναλλαγή στη φάση ενημέρωσης. Προεπιλογή το 'master'. Είναι δυνατό να αντικαταστήσετε αυτό το γνώρισμα με τη μεταβλητή ρύθμισης branches. Η εναλλαγή θα εκτελεστεί μόνο αν ο τρέχον κλάδος ανιχνεύει έναν απομακρυσμένο κλάδο, για να μην διαταράξει τη δική σας εργασία.

Το γνώρισμα tag χρησιμοποιείται για να ορίσει μια αναθεώρηση ελέγχου εξόδου ανεπιφύλακτα στη φάση της ενημέρωσης. Υπερισχύει του γνωρίσματος revision.

<branch repo="git.freedesktop.org" module="swfdec/swfdec"
        checkoutdir="swfdec"
        revision="local-or-remote-branch"
        tag="tree-ish"/>
        

7.1.5. Mercurial

Αυτός ο τύπος αποθετηρίου χρησιμοποιείται για να ορίσει ένα αποθετήριο Mercurial.

<repository type="hg" name="hg.gtk-vnc"
    href="http://gtk-vnc.codemonkey.ws/hg/" />
<branch repo="hg.gtk-vnc" module="outgoing.hg" checkoutdir="gtk-vnc"/>

7.1.6. Monotone

Αυτός ο τύπος αποθετηρίου χρησιμοποιείται για να ορίσει ένα αποθετήριο Monotone.

Το γνώρισμα server χρησιμοποιείται για να ορίσει τον εξυπηρετητή του αποθετηρίου.

Το γνώρισμα database χρησιμοποιείται για να ορίσει τη χρησιμοποιούμενη βάση δεδομένων για το αποθετήριο.

Το γνώρισμα defbranch χρησιμοποιείται για να ορίσει τον κλάδο του χρησιμοποιούμενου αποθετηρίου.

<repository type="mtn" name="pidgin.im"
    server="pidgin.im" database="pidgin.im.mtn"
    defbranch="im.pidgin.pidgin"/>

7.1.7. Subversion

Αυτός ο τύπος αποθετηρίου χρησιμοποιείται για να ορίσει ένα αποθετήριο Subversion.

<repository type="svn" name="svn.gnome.org" default="yes"
    href="http://svn.gnome.org/svn/"/>
        

Επιτρέπει μια revision στο στοιχείο branch. Αυτό το γνώρισμα ορίζει τον κλάδο για έλεγχο εξόδου ή, αν είναι ένας αριθμός, μια συγκεκριμένη αναθεώρηση για έλεγχο εξόδου.

<branch revision="gnome-2-20"/>
        

Είναι δυνατό να οριστεί προσαρμοσμένη διάταξη svn χρησιμοποιώντας το trunk-template (προεπιλογή το "%(module)s/trunk"), branches-template (προεπιλογή το "%(module)s/branches/%(branch)s") και tags-template (προεπιλογή το "%(module)s/tags/%(tag)s")

7.1.8. Σύστημα

Αυτός ο τύπος αποθετηρίου χρησιμοποιείται για να ορίσει ένα ψεύτικο αποθετήριο συστήματος. Απαιτείται ένα αποθετήριο συστήματος για να δημιουργηθεί το systemmodules.

<repository type="system" name="system"/>

7.1.9. Tarballs

Αυτός ο τύπος αποθετηρίου χρησιμοποιείται για να ορίσει ένα αποθετήριο tarball.

<repository type="tarball" name="dbus/dbus-python"
    href="http://dbus.freedesktop.org/releases/dbus-python/"/>

Επιτρέπει τα ακόλουθα γνωρίσματα στο στοιχείο branch:

Το γνώρισμα module καθορίζει το αρχείο για μεταφόρτωση και μεταγλώττιση, το γνώρισμα version καθορίζει την έκδοση της ενότητας.

Τα γνωρίσματα size και hash, καθώς και το καταργημένο md5sum είναι προαιρετικά. Αν αυτά τα γνωρίσματα είναι παρόντα, χρησιμοποιούνται για να ελέγξουν ότι το πηγαίο πακέτο μεταφορτώθηκε σωστά.

Οποιοσδήποτε αριθμός στοιχείων patch μπορεί να εμφωλευτεί μέσα στο στοιχείο branch. Αυτά τα μπαλώματα εφαρμόζονται, στο πηγαίο δένδρο μετά την αποσυμπίεση. Το γνώρισμα file δίνει το όνομα αρχείου στο μπάλωμα και το γνώρισμα strip λέει πόσα επίπεδα καταλόγων να αφαιρεθούν όταν εφαρμόζεται το μπάλωμα.

Για ομάδες ενοτήτων που στέλνονται με το JHBuild, τα αρχεία μπαλώματος βρίσκονται στον κατάλογο jhbuild/patches/· για ομάδες ενοτήτων που αναφέρονται κατά URI, τα αρχεία μπαλώματος εμφανίζονται στον ίδιο κατάλογο όπως το αρχείο ομάδας ενοτήτων ή στον υποκατάλογο patches/. Είναι επίσης δυνατό για το γνώρισμα file να ορίσετε ένα URI, οπότε θα μεταφορτωθεί από αυτή τη θέση.

<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>

Ένα στοιχείο tarball branch μπορεί επίσης να περιέχει στοιχεία quilt που ορίζουν ένθετους branch προς εισαγωγή.

7.2. Συμπεριλαμβάνοντας άλλες ομάδες ενοτήτων

Το JHBuild επιτρέπει σε μία ομάδα ενοτήτων να συμπεριλάβει τα περιεχόμενα μιας άλλης ομάδας κατά αναφορά χρησιμοποιώντας το στοιχείο include.

<include href="uri"/>

Το href είναι μια αναφορά URI στην ομάδα ενοτήτων που θα συμπεριληφθεί, σχετικά με το αρχείο που περιέχει το στοιχείο include.

Μόνο ορισμοί ενότητας εισάγονται από την αναφερόμενη ομάδα ενοτήτων - πηγές της ενότητας δεν εισάγονται. Πολλαπλά επίπεδα ενσωματώσεων επιτρέπονται, αλλά η συμπερίληψη βρόχων δεν επιτρέπεται (δεν υπάρχει κανένας κώδικας που να χειρίζεται βρόχους προς το παρόν).

7.3. Ορισμοί ενότητας

Υπάρχουν ποικίλοι τύποι ορισμών ενότητας που μπορούν να χρησιμοποιηθούν σε ένα αρχείο ομάδας ενοτήτων και η λίστα μπορεί εύκολα να επεκταθεί. Μόνο οι πιο συνηθισμένοι τύποι θα αναφερθούν εδώ.

Αποτελούνται όλοι βασικά από ένα στοιχείο branch που περιγράφει πώς να πάρετε την ενότητα και στοιχεία dependencies, suggests και after που δηλώνουν τις εξαρτήσεις της ενότητας.

Οποιεσδήποτε λίστες ενοτήτων στο στοιχείο dependencies θα προστεθούν στη λίστα ενοτήτων για jhbuild build αν δεν συμπεριλαμβάνονται ήδη και διασφαλίζουν ότι οι εξαρτημένες ενότητες δομούνται πρώτες.

Μετά τη δημιουργία της λίστας ενοτήτων, οι ενότητες της λίστας στο στοιχείο suggests θα χρησιμοποιηθούν για παραπέρα ταξινόμηση της λίστας ενοτήτων (αν και δεν θα τραβήξουν πρόσθετες ενότητες). Αυτό προορίζεται για περιπτώσεις όπου μια ενότητα έχει μια προαιρετική εξάρτηση σε άλλη ενότητα.

7.3.1. autotools

Το στοιχείο autotools χρησιμοποιείται για τον ορισμό μιας ενότητας που μεταγλωττίζεται χρησιμοποιώντας το σύστημα δόμησης GNU Autotools.

<autotools id="id"
	      [ autogenargs="autogenargs" ]
	      [ makeargs="makeargs" ]
	      [ makeinstallargs="makeinstallargs" ]
	      [ autogen-sh="autogen-sh" ]
	      [ makefile="makefile" ]
	      [ skip-autogen="skip-autogen" ]
	      [ skip-install="skip-install" ]
	      [ autogen-template="autogen-template" ]
	      [ check-target="check-target" ]
	      [ supports-non-srcdir-builds="supports-non-srcdir-builds" ]>

  <branch [ ... ] >
    [...]
  </branch>

  <dependencies>
    <dep package="modulename"/>
    ...
  </dependencies>
  <after>
    <dep package="modulename"/>
    ...
  </after>

</autotools>

Τα γνωρίσματα autogenargs και makeargs and makeinstallargs χρησιμοποιούνται για να ορίσουν πρόσθετα ορίσματα που θα περάσουν στα autogen.sh, make και make install αντίστοιχα.

Το γνώρισμα autogen-sh καθορίζει το όνομα του σεναρίου autogen.sh που θα εκτελεστεί. Η τιμή autoreconf μπορεί να χρησιμοποιηθεί αν η ενότητά σας δεν έχει κανένα ισοδύναμο σενάριο autogen.sh. Σε αυτήν την περίπτωση, το JHBuild θα εκτελέσει autoreconf -fi, ακολουθούμενο από το κατάλληλο configure. Το skip-autogen επιλέγει αν θα εκτελέσει autogen.sh ή όχι, είναι μια τιμή Μπουλ με πρόσθετη τιμή never που λέει στο JHBuild να μην παραλείψει ποτέ την εκτέλεση της autogen.sh. Το skip-install είναι ένα γνώρισμα τιμής Μπουλ που ορίζει αν θα παραληφθεί η εντολή make install στην ενότητα. Το makefile καθορίζει το όνομα αρχείου του χρησιμοποιούμενου makefile.

Το γνώρισμα supports-non-srcdir-builds χρησιμοποιείται για να σημειώσει ενότητες που δεν μπορούν να δομηθούν καθαρά χρησιμοποιώντας έναν ξεχωριστό κατάλογο πηγής.

Το γνώρισμα autogen-template μπορεί να χρησιμοποιηθεί αν χρειάζεστε λεπτότερο έλεγχο στη γραμμή εντολών autogen. Είναι μια συμβολοσειρά μορφής python, που θα αντικατασταθεί με τις ακόλουθες μεταβλητές: srcdir, autogen-sh, prefix, libdir και autogenargs. Για παράδειγμα, εδώ είναι το προεπιλεγμένο autogen-template:

%(srcdir)s/%(autogen-sh)s --prefix %(prefix)s --libdir %(libdir)s %(autogenargs)s

Το γνώρισμα check-target πρέπει να καθοριστεί (με ψευδής ως τιμή) για ενότητες που δεν έχουν προορισμό make check.

7.3.2. cmake

Το στοιχείο cmake χρησιμοποιείται για τον ορισμό μιας ενότητας που δομείται χρησιμοποιώντας το σύστημα δόμησης CMake.

<cmake id="modulename">
  <branch [ ... ] >
    [...]
  </branch>

  <dependencies>
    <dep package="modulename"/>
    ...
  </dependencies>
  <after>
    <dep package="modulename"/>
    ...
  </after>
</cmake>

7.3.3. distutils

Το στοιχείο distutils χρησιμοποιείται για τον ορισμό μιας ενότητας που δομείται χρησιμοποιώντας τα distutils του python.

<distutils id="modulename"
            [ supports-non-srcdir-builds="yes|no" ]>
  <branch [ ... ] >
    [...]
  </branch>

  <dependencies>
    <dep package="modulename"/>
    ...
  </dependencies>
  <after>
    <dep package="modulename"/>
    ...
  </after>
</distutils>

7.3.4. linux

Το στοιχείο linux ορίζει μια ενότητα που χρησιμοποιείται για δόμηση ενός πυρήνα Λίνουξ. Επιπλέον, μια ξεχωριστή διαμόρφωση πυρήνα μπορεί να επιλεγεί χρησιμοποιώντας το υποστοιχείο kconfig.

<linux id="id"
	  [ makeargs="makeargs" ]>

  <branch [ ... ] >
    [...]
  </branch>

  <dependencies>
    <dep package="modulename"/>
    ...
  </dependencies>
  <after>
    <dep package="modulename"/>
    ...
  </after>

  <kconfig [ repo="repo" ]
	    version="version"
	    [ module="module" ]
	    [ config="config" ] />

</linux>

7.3.5. perl

Το στοιχείο perl χρησιμοποιείται για δόμηση ενοτήτων perl.

Το γνώρισμα makeargs χρησιμοποιείται για ορισμό πρόσθετων ορισμάτων που θα περάσουν στο make.

<perl id="modulename"
	 [ makeargs="makeargs" ]>

  <branch [ ... ] >
    [...]
  </branch>

  <dependencies>
    <dep package="modulename"/>
    ...
  </dependencies>
  <after>
    <dep package="modulename"/>
    ...
  </after>

</perl>

7.3.6. systemmodule

Το στοιχείο systemmodule χρησιμοποιείται για ορισμό ενοτήτων που πρέπει να παρέχονται από το σύστημα. Η ενότητα πρέπει να εγκατασταθεί από το σύστημα διαχείρισης του πακέτου διανομής.

<systemmodule id="modulename">
  <pkg-config>pkg-config.pc</pkg-config>

  <branch repo="system" version="version" />
</systemmodule>

Αν η ενότητα συστήματος δεν παρέχει ένα αρχείο pkg-config, η ετικέτα systemdependencies μπορεί να χρησιμοποιηθεί για ταυτοποίηση των εξαρτήσεων. Δύο τιμές υποστηρίζονται από το γνώρισμα type της ετικέτας dep:

  1. Η τιμή path. Η διαδρομή αναζητείται για το όνομα προγράμματος που ταιριάζει.

  2. Η τιμή c_include. Η διαδρομή συμπερίληψης της C αναζητείται για το σύμφωνο όνομα κεφαλίδας. Το name μπορεί να περιλαμβάνει έναν υποκατάλογο. Η διαδρομή αναζήτησης συμπερίληψης της C μπορεί να τροποποιηθεί ορίζοντας το CPPFLAGS στις μεταβλητές διαμόρφωσης cflags ή module_autogenargs.

<systemmodule id="modulename">
  <branch repo="system" version="version" />
  <systemdependencies>
    <dep type="path" name="executable-name" />
  </systemdependencies>
</systemmodule>

<systemmodule id="modulename">
  <branch repo="system" version="version" />
  <systemdependencies>
    <dep type="c_include" name="header-name" />
  </systemdependencies>
</systemmodule>

7.3.7. waf

Το στοιχείο waf χρησιμοποιείται για τον ορισμό μιας ενότητας που δομείται χρησιμοποιώντας το σύστημα δόμησης Waf.

Το γνώρισμα waf-command χρησιμοποιείται για τον ορισμό του σεναρίου εντολής waf που θα χρησιμοποιηθεί· προεπιλογή το waf.

Το γνώρισμα python-command χρησιμοποιείται για ορισμό του εκτελέσιμου Python που θα χρησιμοποιηθεί· προεπιλογή το python. Αυτό είναι χρήσιμο για δόμηση ενοτήτων στην έκδοση 3 του Python.

<waf id="modulename">
	 [ python-command="python-command" ]
	 [ waf-command="waf-command" ]>
  <branch [ ... ] >
    [...]
  </branch>

  <dependencies>
    <dep package="modulename"/>
    ...
  </dependencies>
  <after>
    <dep package="modulename"/>
    ...
  </after>
</waf>

7.3.8. testmodule

Το στοιχείο testmodule χρησιμοποιείται για δημιουργία μιας ενότητας που τρέχει μια σειρά δοκιμών χρησιμοποιώντας LDTP ή Dogtail.

<testmodule id="id"
	       type="type">

  <branch [ ... ] >
    [...]
  </branch>

  <dependencies>
    <dep package="modulename"/>
    ...
  </dependencies>
  <after>
    <dep package="modulename"/>
    ...
  </after>

  <testedmodules>
    <tested package="package" />
  </testedmodules>

</testmodule>

Το γνώρισμα type δίνει τον τύπο των δοκιμών που θα εκτελεστεί στην ενότητα. Το 'dogtail' χρησιμοποιεί python για να καλέσει όλα τα αρχεία .py. Το 'ldtp' καλεί 'ldtprunner run.xml'.

Εκτός και έχει οριστεί η επιλογή σύνθεσης noxvfb, ένας εξυπηρετητής Xvfb ξεκινά να εκτελέσει τις δοκιμές σε

7.3.9. μεταενότητα

Το στοιχείο metamodule ορίζει μια ενότητα που δεν κάνει τίποτα στην πραγματικότητα. Ο μόνος σκοπός μιας ενότητας αυτού του τύπου είναι οι εξαρτήσεις του.

Για παράδειγμα, το meta-gnome-desktop εξαρτάται από όλα τα βασικά συστατικά της επιφάνειας εργασίας GNOME, συνεπώς λέγοντας στο JHBuild να το εγκαταστήσει εγκαθιστά στην πραγματικότητα την πλήρη επιφάνεια εργασίας.

<metamodule id="modulename">
  <dependencies>
    <dep package="modulename"/>
    ...
  </dependencies>
  <suggests>
    <dep package="modulename"/>
    ...
  </suggests>
</metamodule>

Το γνώρισμα id δίνει το όνομα της ενότητας. Τα θυγατρικά στοιχεία χειρίζονται όπως τα autotools.

7.4. Ξεπερασμένα στοιχεία

7.4.1. Πηγές ενότητας

7.4.1.1. cvsroot

Το στοιχείο cvsroot είναι τώρα παρωχημένο - το στοιχείο repository πρέπει να χρησιμοποιηθεί στη θέση του.

Το στοιχείο cvsroot χρησιμοποιείται για να περιγράψει ένα αποθετήριο CVS.

  <cvsroot name="rootname"
           [ default="yes|no" ]
           root="anon-cvsroot"
           password="anon-password"/>

Το γνώρισμα name πρέπει να είναι ένας μοναδικός ταυτοποιητής για το αποθετήριο CVS.

Το γνώρισμα default λέει αν αυτό είναι η προεπιλεγμένη πηγή ενότητας για αυτό το αρχείο της ομάδας ενοτήτων.

Το γνώρισμα root δίνει τη λίστα των χρησιμοποιούμενων ριζικών CVS για ανώνυμη πρόσβαση σε αυτό το αποθετήριο και το γνώρισμα password δίνει τον χρησιμοποιούμενο κωδικό πρόσβασης για ανώνυμη πρόσβαση.

7.4.1.2. svnroot

Το στοιχείο svnroot είναι τώρα παρωχημένο - το στοιχείο repository πρέπει να χρησιμοποιηθεί στη θέση του.

Το στοιχείο svnroot χρησιμοποιείται για να περιγράψει ένα αποθετήριο Subversion.

  <svnroot name="rootname"
           [ default="yes|no" ]
           href="anon-svnroot"/>

Το γνώρισμα name πρέπει να είναι ένας μοναδικός ταυτοποιητής για το αποθετήριο Subversion.

Το γνώρισμα default λέει αν αυτό είναι η προεπιλεγμένη πηγή ενότητας για αυτό το αρχείο της ομάδας ενοτήτων.

Το γνώρισμα href δίνει τη λίστα της βάσης URL για το αποθετήριο. Αυτό θα είναι προφανώς είτε ένα http, https ή svn URL.

7.4.2. Παρωχημένοι τύποι ενοτήτων

Αυτή η ενότητα περιγράφει παρωχημένα στοιχεία, που μπορεί να χρησιμοποιούνται ακόμα σε υπάρχουσες ομάδες ενοτήτων αλλά υποδεικνύεται να μην χρησιμοποιούνται πια.

7.4.2.1. tarball

Αυτό το παρωχημένο στοιχείο είναι απλά ένα λεπτό περίβλημα γύρω και από τον τύπο ενότητας autotools και τον τύπο αποθετηρίου tarball.

The tarball element is used to define a module that is to be built from a tarball.

  <tarball id="modulename"
              [ version="version" ]
              [ checkourdir="checkoutdir" ]
              [ autogenargs="autogenargs" ]
              [ makeargs="makeargs" ]
              [ autogen-sh="autogen-sh" ]
              [ supports-non-srcdir-builds="yes|no" ]>
    <source href="source-url"
            [ size="source-size" ]
            [ hash="source-algo:source-hash" ]
            [ md5sum="source-md5sum" ]/>
    <patches>
      <patch file="filename" strip="level"/>
      ...
    </patches>
    <dependencies>
      <dep package="modulename"/>
      ...
    </dependencies>
    <suggests>
      <dep package="modulename"/>
      ...
    </suggests>
  </tarball>

Τα γνωρίσματα id και version χρησιμοποιούνται για ταυτοποίηση της ενότητας.

Το στοιχείο source καθορίζει το αρχείο για μεταφόρτωση και μεταγλώττιση. Το γνώρισμα href είναι υποχρεωτικό, ενώ τα γνωρίσματα size και hash, καθώς και το καταργημένο md5sum είναι προαιρετικά. Εάν αυτά τα δύο τελευταία γνωρίσματα είναι παρόντα, χρησιμοποιούνται να ελέγξουν αν το πηγαίο πακέτο μεταφορτώθηκε σωστά.

Το στοιχείο patches χρησιμοποιείται για να ορίσει ένα ή περισσότερα μπαλώματα που εφαρμόζονται στο πηγαίο δένδρο μετά την αποσυμπίεση, το γνώρισμα file δίνει το όνομα αρχείου του μπαλώματος και το γνώρισμα strip λέει πόσα επίπεδα καταλόγων να αφαιρεθούν όταν εφαρμόζεται το μπάλωμα.

Για ομάδες ενοτήτων που στέλνονται με το JHBuild, τα αρχεία μπαλώματος βρίσκονται στον κατάλογο jhbuild/patches/· για ομάδες ενοτήτων που αναφέρονται κατά URI, τα αρχεία μπαλώματος εμφανίζονται στον ίδιο κατάλογο όπως το αρχείο ομάδας ενοτήτων ή στον υποκατάλογο patches/. Είναι επίσης δυνατό για το γνώρισμα file να ορίσετε ένα URI, οπότε θα μεταφορτωθεί από αυτή τη θέση.

Τα άλλα γνωρίσματα και τα στοιχεία dependencies, suggests και after επεξεργάζονται όπως τα autotools.