Quelle est l'utilité des fichiers metadada.xml ?

Le fichier metadata.xml a pour objectif de donner des informations supplémentaires sur les ebuilds. Le fichier metadata.xml devrait être présent dans tout répertoire de paquet.. Un fichier skel peut être trouvé dans l'arbre de Portage, skel.metadata.xml.

Lancez xmllint --valid metadata.xml avant de soumettre un fichier metadata.xml. Nous espérons intégrer rapidement dans repoman le support des fichiers metadata.xml.
La structure d'un metadata

Un fichier metadata.xml peut contenir un certain nombre de tags :

<pkgmetadata> C'est l'élément racine d'un fichier metadata.xml. Il n'a pas d'attributs. Il doit avoir le sous-tag suivant : <herd>. Il peut également admettre les sous-tags suivants : <email> pour une adresse électronique de herd (groupe travaillant sur le projet), <maintainer>, et <longdescription>. <herd> Il doit y avoir au moins un sous-tag de type herd. Le contenu de ce tag doit être le nom d'un groupe, comme spécifié dans le fichier herds.xml. Il ne doit apparaître qu'une et une seule fois. <maintainer> Au delà du fait d'appartenir à un groupe, un paquet peut aussi être maintenu de manière directe. Les mainteneurs du paquet peuvent être indiqué à l'aide du taf <maintainer> . Ce tag a un sous-tag obligatoire : <email>. Il a deux sous-tags optionnels : <name> et <description>. <email> Celui-ci contient l'adresse électronique du mainteneur. Il est obligatoire. <name> Celui-ci contient un texte libre, avec le nom du mainteneur. Il est optionnel. <description> Le tag de description contient une description sur la maintenance, ou par exemple une remarque indiquant aux personnes intéressées qu'elle peuvent se charger de la maintenance. Ce tag est optionnel. <longdescription> Ce tag contient une description du paquet. Il a pour objectif d'ajouter des informations au champ DESCRIPTION présent dans les ebuilds.
tag description

Il y a également quelques attributs qui peuvent être utilisés avec ces tags. Ils sont tous optionnels :

lang <description>, <longdescription> Dans tous les cas pour lesquels une description est nécessaire, il doit y avoir au moins une description en anglais. Si une description dans une autre langue est proposée, cet attribut est utilisé pour spécifier la langue utilisée. Le format est le code habituel pour les pays, en deux caractères. restrict <herd>, <maintainer>, <longdescription> L'attribut restrict permet de restreindre l'application de certains tag, à certaines versions d'un paquet. Quand cet attribut est utilisé, un tag sans attribut doit également exister. Ce tag dans l'attribut restrict servira de tag par défaut. Le format de l'attribut restrict est celui utilisé dans les paramètres DEPEND, à l'exception du fait que "<" et ">" doivent être spécifiés avec des &lt; et &gt;.

Par exemple pour le paquet db, un attribut restrict=">=sys-libs/db-3.2.9-r5" dans le tag de mainteneur indiquera que je suis actuellement mainteneur dans toutes les versions supérieures à la 3.2.9-r5.
attribut tags description
Exemples de metadata Premier exemple

Dans le premier exemple nous vous proposons un fichier metadata.xml pour OpenOffice.org, dans lequel les ebuilds sont complètement gérés par un groupe nommé openoffice :

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
  <herd>openoffice</herd>
  <longdescription>
    OpenOffice is the  opensource version of staroffice.
    This ebuild allows you to compile it yourself. Unfortunately this
    compilation can take up to a day depending on the speed of your
    computer. It will however make a snappier openoffice than the binary
    version.
  </longdescription>
</pkgmetadata>
        

Le groupe openoffice est défini dans herds.xml par le Projet de métastructures Gentoo

Cet exemple est probablement démodé à l'heure où vous lisez ces lignes. Ce n'est qu'un exemple !
<herd>
  <name>openoffice</name>
  <email>openoffice@gentoo.org</email>
  <description>openoffice related packages</description>
  <maintainer><email>pauldv@gentoo.org</email></maintainer>
  <maintainer><email>brad@gentoo.org</email></maintainer>
</herd>
        

Si vous souhaitez vous ajouter (ou enlever) dans un groupe, éditez herds.xml, qui est situé dans [gentoo]/misc dans le dépôt CVS de Gentoo. Assurez-vous de connaître l'alias mail caractérisant le groupe en question (par exemple le groupe "sound" a pour alias sound@gentoo.org) et ajoutez-vous à l'alias en question (en éditant /var/mail/alias/misc/<nom de l'alias> sur dev.gentoo.org).

Second exemple

Comme second exemple nous allons voir le metadata.xml de mirrorselect. Cet ebuild est maintenu par le groupe tools-portage, mais a un mainteneur à part.

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
  <herd>tools-portage</herd>
  <maintainer>
    <email>johnm@gentoo.org</email>
    <name>John Mylchreest</name>
  </maintainer>
  <longdescription>
    This utility is used to select the fastest mirror (distfiles) and provide a
    nicer front-end for mirror selection (both rsync + distfiles) to a user.
  </longdescription>
</pkgmetadata>