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. Vous pourrez trouver un fichier skel dans l'arbre de Portage, nommé skel.metadata.xml.

Exécutez la commande 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 balises :

<pkgmetadata> C'est l'élément racine d'un fichier metadata.xml. Il n'a pas d'attributs. Il doit avoir la balise fille suivante : <herd>. Il peut également admettre les balises filles suivantes : <email> pour une adresse électronique de herd (groupe travaillant sur le projet), <maintainer>, et <longdescription>. <herd> Il doit y avoir au moins une balise fille de type herd. Le contenu de cette balise doit être le nom d'un groupe, comme spécifié dans le fichier herds.xml. Elle 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 de la balise <maintainer>. Cette balise a une balise fille obligatoire :<email>. Il a deux balises filles optionnels : <name> et <description>. <email> Celle-ci contient l'adresse électronique du mainteneur. Elle est obligatoire. <name> Cette balise contient un texte libre, avec le nom du mainteneur. Elle est optionnelle. <description> La balise 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. Cette balise est optionnelle. <longdescription> Cette balise contient une description du paquet. Elle a pour objectif d'ajouter des informations au champ DESCRIPTION présent dans les ebuilds.
balise description

Il y a également quelques attributs qui peuvent être utilisés avec ces balises. 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 certaines balises à certaines versions d'un paquet. Quand cet attribut est utilisé, une balise sans attribut doit également exister. Cette balise sans l'attribut restrict servira de balise 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 la balise du 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éfinit 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 sounde 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>