[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[RFR2] wml://devel/buildd/wanna-build-states.wml



Bonjour,

Le 06/10/23 13:32 Lucien a écrit :
>Détails et suggestions
⇒patch
Voici la nouvelle version intégrant les propositions de Lucien.
Merci d’avance pour vos relectures et commentaires.
 
Amicalement

-- 
Jean-Paul
#use wml::debian::template title="Les états de wanna-build : une explication" BARETITLE="true"
#use wml::debian::translation-check translation="e94a8736fb66463fe305fff8fd1d7c61341d298d" maintainer="David Prévot"

# Translators:
# Mohammed Adnène Trojette, 2005-2007.

    <p>Cette page tente d'expliquer ce que chaque état
      <tt>wanna-build</tt> signifie et ce qui arrivera à un paquet
      quand il sera dans cet état. Son audience cible est constituée
      des responsables de paquets Debian qui essaient de comprendre
      pourquoi leur paquet a, ou n'a pas, été empaqueté pour une
      architecture spécifique. Une explication des différents résultats
      de journalisation est aussi fournie.</p>

 <p>
    En cas de besoin de reconstruction de paquet, il est possible de demander
des <a href="https://release.debian.org/wanna-build.html";>actions wanna-build</a>
    </p>

    <p>Finalement, un diagramme des états de <tt>wanna-build</tt> est
      <a href="#graphlink">disponible</a>, mais veuillez noter qu'il ne
      parle pas de tout ce qui est mentionné dans ce document.</p>

<h2>Les états de <tt>wanna-build</tt></h2>

<p>Pour chaque architecture prise en charge par Debian, une base de données
<tt>wanna-build</tt> est installée sur buildd.debian.org, avec tous les
paquets et leur état actuel de compilation. Il y a huit états&nbsp;:
<em>needs-build</em>, <em>building</em>, <em>uploaded</em>,
<em>dep-wait</em>, <em>BD-Uninstallable</em>, <em>failed</em>,
<em>not-for-us</em> et <em>installed</em>.</p>

<p>Voici leurs significations&nbsp;:</p>
    <dl>
      <dt><a name="needs-build">needs-build</a></dt>
      <dd>Un paquet marqué <em>needs-build</em> a vu un envoi de sa
        nouvelle version par son responsable, mais pour une
        architecture différente de celle de la base de données
        <tt>wanna-build</tt>&nbsp;; dans ce cas, un réempaquetage
        est nécessaire. Si l'état est <em>needs-build</em>, aucun
        serveur d'empaquetage automatique ne l'a récupéré, mais il
        le sera (une fois qu'un serveur sera disponible lorsque
        le paquet sera proche du haut de la liste). Les gens ont
        l'habitude de dire qu'<q>un paquet fait la queue pour un
        réempaquetage</q> quand ils parlent d'un paquet dans l'état
        <em>needs-build</em>.<br /> Il peut être intéressant de
        noter que la file d'attente <em>needs-build</em> n'est pas une
        liste FIFO (premier entré premier servi)&nbsp;; en fait, l'ordre
        utilisé se base sur les critères suivants&nbsp;:
	<ol>
          <li>les états des précédentes compilations des paquets&nbsp;;
            les paquets qui ont été précédemment empaquetés obtiennent
            une priorité plus grande que les nouveaux paquets&nbsp;;
          </li>
          <li>les priorités (les paquets avec priorité
            <em>required</em> sont empaquetés avant les paquets avec
            priorité <em>extra</em>)&nbsp;;
          </li>
          <li>la section dans laquelle se trouve le paquet. Cet ordre
            est basé sur l'importance donnée aux paquets&nbsp;; par
            exemple, la section <em>games</em> est empaquetée après la
            section <em>base</em>, et la section <em>libs</em> avant
            <em>devel</em>&nbsp;;
          </li>
          <li>l'ordre croissant de code ASCII des lettres du nom du
            paquet.
          </li>
	</ol>
        De plus, dans certaines conditions, il peut arriver qu'un
        serveur d'empaquetage ne prenne pas les paquets du haut de la
        file d'attente&nbsp;; par exemple, quand un serveur d'empaquetage
        ne peut pas trouver les sources d'un paquet donné, il le
        rétrogradera dans la file (où il reprendra son ancien rang,
        à savoir le haut de la file), mais il ignorera le paquet
        pendant quelques heures. Un autre exemple où cela peut arriver
        est au moment où une architecture possède plusieurs serveurs
        d'empaquetage automatique&nbsp;; dans ce cas, les responsables du portage 
        de cette architecture peuvent choisir d'empaqueter les gros
        paquets sur leurs serveurs d'empaquetage automatique les plus
        rapides et laisser les paquets plus petits aux machines les
        plus lentes du parc. Un serveur d'empaquetage peut aussi
        théoriquement demander explicitement un ordre de sections
        différent, mais ce n'est pas fait d'habitude.<br />
        Il peut exister d’autres situations où l’ordre de la file
        d’attente semble être ignoré, mais remarquez que ce sont toutes
        des exceptions.
    </dd>
      <dt><a name="building">building</a></dt>
      <dd>Un paquet est marqué <em>building</em> à partir du moment où
        un serveur d'empaquetage automatique le récupère du haut de la
        file d'attente de <tt>wanna-build</tt> jusqu'au moment où un
        administrateur du serveur d'empaquetage automatique répond au
        journal. Comme les paquets ne sont pas récupérés un par un, cela
        signifie qu'un paquet peut (et c'est habituellement le cas)
        être marqué <em>building</em> avant que l'empaquetage
        ait effectivement démarré&nbsp;; cependant, comme le service
        d'empaquetage empaquette dans ses files d'attente locales
        sur la base d'une liste FIFO, cela ne devrait plus mettre
        très longtemps. Veuillez aussi noter que l'état d'un paquet
        <strong>n'</strong>est <strong>pas</strong> modifié une
        fois l'empaquetage terminé&nbsp;; cela ne se fera que lorsque
        l'administrateur du serveur d'empaquetage automatique aura
        répondu au journal.</dd>
      <dt><a name="uploaded">uploaded</a></dt>
      <dd>Quand une tentative d'empaquetage réussit, un journal
        d'empaquetage est envoyé à l'administrateur du serveur
        d'empaquetage automatique et à buildd.debian.org. Le responsable
        du serveur d'empaquetage automatique signera alors le fichier
        .changes qui se trouve dans le journal d'empaquetage, et
        l'enverra au serveur d'empaquetage automatique. Par conséquent,
        le serveur d'empaquetage automatique enverra le paquet et
        le mettra dans l'état <em>uploaded</em>. Dans ce cas, un
        paquet dans cet état peut se trouver (quelque part) dans la
        file en attente.<br /> Un serveur
        d'empaquetage automatique ne touchera plus un paquet une
        fois que son état est <em>uploaded</em>, tout du moins pas
        avant l'envoi suivant, ou avant qu'un porteur ne modifie
        lui-même l'état du paquet.
      </dd>
      <dt><a name="dep-wait">dep-wait</a></dt>
      <dd>Quand un empaquetage échoue à cause de dépendances manquantes
        au moment de la construction, le responsable du serveur
        d'empaquetage automatique enverra un courriel au serveur
        d'empaquetage automatique, lui donnant comme instruction de
        supprimer les sources du paquet et de marquer le paquet comme
        <em>dep-wait</em> sur les dépendances manquantes. Un paquet dans
        un tel état sera automatiquement, sans intervention humaine,
        marqué <em>needs-build</em> une fois que les dépendances seront
        disponibles.<br />
        Originellement, un paquet devait subir une tentative d'empaquetage
        avant que le responsable ne le mette lui-même dans l'état
        <em>dep-wait</em>. Cependant, en août&nbsp;2005, du code permettant
        de déplacer directement, si cela est approprié, un paquet de l'état
        <em><a href="#installed">installed</a></em> à l'état
        <em>dep-wait</em> a été ajouté à wanna-build.<br />
        Il se peut, dans deux cas spécifiques, qu'un paquet soit définitivement
        marqué comme <em>dep-wait</em>&nbsp;; cela se produit quand on fait une
        faute de frappe en spécifiant les dépendances <em>dep-wait</em> (si
        bien que le paquet est marqué <em>dep-wait</em> par rapport à un paquet
        qui n'existe pas et n'existera jamais) et quand une dépendance est
        déclarée au moment de la construction pour un paquet qui est marqué
       <em>not-for-us</em> ou
        qui est dans la liste <em>packages-arch-specific</em>.<br />
        Dans ce dernier cas, par exemple, considérons trois
        paquets&nbsp;: un paquet <tt>foo</tt>, qui n'existe que sur
        <tt>i386</tt>&nbsp;; un paquet <tt>bar</tt>, qui n'existe
        que pour <tt>m68k</tt> (et qui fait à peu près la même
        chose)&nbsp;; et un paquet <tt>baz</tt> qui peut être empaqueté
        avec soit <tt>foo</tt> soit <tt>bar</tt>. Si le responsable du
        paquet <tt>baz</tt> oublie l'ajout de <tt>bar</tt>
        aux dépendances d'empaquetage (<em>Build-Depends</em>), et s’il
        l'ajoute quand il est précisé que <tt>baz</tt> attend
        (<em>dep-wait</em>) un paquet <tt>foo</tt> inexistant pour
        <tt>m68k</tt>, alors l'état <em>dep-wait</em> devra être modifié
        par les responsables du portage <tt>m68k</tt> eux-mêmes.
      </dd>
      <dt><a name="bd-uninstallable">BD-Uninstallable</a></dt>
      <dd>Pendant la conférence des développeurs Debian 2009, <a
	href='https://lists.debian.org/debian-wb-team/2009/07/msg00089.html'>Joachim
	Breitner a émis l'idée</a> d'utiliser edos-debcheck pour vérifier
	la possibilité d’installation des dépendances de construction des
        paquets qui autrement se mettraient dans l’état <em>needs-build</em>.
	À ce moment, wanna-build a déjà la possibilité de vérifier
	la disponibilité immédiate des dépendances de construction ;
	mais si un paquet ne peut pas être installé parce qu'il possède
	une dépendance de construction sur a qui dépend de b qui dépend
	de c (&gt;=1.2.3) et que c est toujours en version 1.2.2, ce ne
	sera pas détecté, et la construction échouera dès le début à
	cause des dépendances de construction non disponibles.
	Se rendre compte de ce genre de cas était un processus non
	automatique à la charge de l'administrateur du serveur
	d'empaquetage, et en général, plutôt interminable.
	Avec le correctif <em>BD-Uninstallable</em>,
	ce n'est plus un problème.
	Quand un paquet est en <em>BD-Uninstallable</em>, cela
	signifie que ses dépendances de construction ne peuvent pas
	être installées (soit directement, soit parce qu'une partie
	de son arborescence de dépendances n'est pas disponible).
	Malheureusement, le correctif <em>BD-Uninstallable</em>,
	ne fournit pas de renseignements sur le paquet exact qui
	pose problème ;
	veuillez utiliser edos-debcheck pour le déterminer.
	Ce problème, cependant, se réglera de lui-même dès que les
	dépendances manquantes seront vraiment disponibles, et à ce
	moment, le paquet sera de nouveau déplacé en <em>needs-build</em>.
      </dd>
      <dt><a name="wanna-build-state-failed">failed</a></dt>
      <dd>Si une tentative d'empaquetage échoue et que le responsable
        du serveur d'empaquetage automatique décide que cela constitue
        réellement un échec qui ne doit pas être retenté, le paquet est
        marqué <em>failed</em>. Un paquet ne quittera jamais cet état avant
        qu'un responsable de portage décide qu'il devrait le faire, ou avant
        qu'une nouvelle version ne soit disponible. Cependant, quand une
        nouvelle version d'un paquet anciennement marqué <em>failed</em> sera
        disponible, le serveur d'empaquetage automatique demandera à son
        administrateur si l'empaquetage doit être retenté&nbsp;; c'est
        de cette manière que les empaquetages qui échoueront inévitablement
        ne vont pas faire perdre du temps au serveur d'empaquetage. Même
        si le fait de mettre un paquet dans l'état <em>failed</em> avant
        même d'essayer l'empaquetage n'est pas forcément la bonne chose à
        faire, cette option reste disponible à l'administrateur du serveur
        d'empaquetage automatique.<br /> Veuillez noter qu'un paquet ne sera
        <strong>jamais</strong> marqué <em>failed</em> sans intervention
        humaine.
     </dd>
      <dt><a name="not-for-us">not-for-us</a></dt> <dd>Certains paquets
        spécifiques ne sont pas dédiés à toutes les architectures&nbsp;;
        par exemple, <tt>lilo</tt>, un gestionnaire d'amorçage pour i386,
        ne doit pas être empaqueté pour alpha, m68k, ou s390. Cependant,
        <em>wanna-build</em> ne regarde pas dans le fichier de contrôle
        (debian/control) d'un paquet en créant sa base de données&nbsp;;
        seuls les nom, section, état précédent et priorité sont examinés. Ainsi,
        avec le premier envoi d'un paquet spécifique à une ou
        des architectures qui ne doit pas être empaqueté sur d'autres
        architectures, une tentative d'empaquetage est néanmoins lancée
        (mais échoue avant même que les dépendances d'empaquetage ne
        soient téléchargées et/ou installées).<br />
        Comme les serveurs d'empaquetage automatique ne devraient pas
        perdre de temps à essayer d'empaqueter des paquets qui ne
        sont pas requis par leur architecture, il faut trouver un moyen de lister les
        paquets pour lesquels même une tentative d'empaquetage n’est pas
        nécessaire. La première solution à ce problème était
        <em>not-for-us</em>&nbsp;; cependant, comme il est difficile à
        entretenir, <em>not-for-us</em> est désormais obsolète&nbsp;;
        les responsables des serveurs d'empaquetage automatique doivent
        plutôt utiliser <em>packages-arch-specific</em>, qui est une
        liste des paquets spécifiques à une ou plusieurs architectures
        plutôt qu'un état wanna-build.<br />
        Un paquet dans l'état <em>not-for-us</em> ou dans l'état
        <em>packages-arch-specific</em> <strong>ne</strong> quittera
        <strong>pas</strong> cet état automatiquement&nbsp;; si votre paquet
        a précédemment exclu une architecture donnée dans son fichier de
        contrôle, alors qu'il inclut aujourd'hui plus d'architectures, il
        doit être réintégré dans la file d’attente <strong>à la main</strong>.<br />
	S'il se trouve que vous deviez demander vous-même que cela se
	produise, vous pouvez le faire en contactant les responsables du
	serveur de construction adéquat. Ils peuvent être joints à l'adresse
	$arch@buildd.debian.org
      </dd>
      <dt><a name="installed">installed</a></dt>
      <dd>Comme le nom le suggère, un paquet marqué <em>installé</em>
        est compilé pour l'architecture à laquelle est dédiée la base
	de données wanna-build. Avant la publication de Woody, l'état
	d'un paquet passait d'<em>uploaded</em> à <em>installed</em>
	après l'exécution quotidienne de katie. Avec l'implémentation
	de <a
	href="https://lists.debian.org/debian-devel-announce/2002/debian-devel-announce-200206/msg00002.html";>Accepted-autobuild</a>,
	toutefois, cela n'est plus vrai&nbsp;; aujourd'hui, un paquet
	passe de l'état <em>uploaded</em> à l'état <em>installed</em>
	quand il a été accepté dans l'archive. Cela veut dire qu'un
	paquet est habituellement marqué <em>installed</em> au bout de
	quinze minutes, en moyenne.
      </dd>
    </dl>
    <p>En plus de ces huit états, <em>wanna-build</em> connaît aussi
    deux états de suppression (<q>-removed</q>), qui sont
    vraiment des cas marginaux. Ces deux états sont
    <em>dep-wait-removed</em> et <em>failed-removed</em>. Ils
    correspondent à leurs alter ego respectifs sans
    <q>-removed</q> comme suit&nbsp;: quand un paquet dans
    l'état <em>failed</em> ou <em>dep-wait</em> n'apparaît pas dans un
    nouveau fichier Packages qui est alimenté par
    <em>wanna-build</em>&nbsp;&ndash;&nbsp;quand il se trouve qu'il a
    été supprimé&nbsp;&ndash;&nbsp;l'information au sujet de ce paquet
    n'est pas supprimée, parce qu'il se pourrait que le fait que le paquet
    n'apparaisse pas dans le fichier Packages ne soit qu’un problème temporaire
    ou que le paquet ait été temporairement supprimé pour une raison
    ou pour une autre (mais qu'il réapparaisse dans l'archive, au bout
    d'un certain temps). Au lieu de cela, dans un tel cas, un paquet
    passe à un état <em>-removed</em>, afin que l'information concernant
    les raisons de son échec ou ce qu'il attend puissent être conservés.
    Si le paquet vient à réapparaître dans un fichier Packages fourni à
    wanna-build, il repassera alors de <em>failed-removed</em>
    à <em>failed</em>, ou de <em>dep-wait-removed</em> à
    <em>dep-wait</em> avant un traitement ultérieur.</p>
    <p>
      Il n'est pas possible d'accéder à la base de données wanna-build
      directement&nbsp;; cette base de données est installée sur
      ftp-master.debian.org, qui est un hôte restreint, et seuls les
      serveurs d'empaquetage automatiques ont une clé SSH qui leur
      permet d'accéder à la base de données wanna-build correspondant
      à leur architecture. C'était le cas bien avant que ftp-master
      ne soit restreint&nbsp;; comme wanna-build pose un verrou au
      niveau de la base de données pendant un accès, ne serait-ce qu'en
      lecture, aux données, vous deviez être dans le bon groupe
      (wb-&lt;arch&gt;) pour pouvoir accéder directement à la base de
      données wanna-build.
    </p>
    <p>Cela étant dit, vous pouvez voir l'état d'un paquet en allant
      sur <a href="https://buildd.debian.org/stats/";>la page de
      statistiques du service d'empaquetage</a>, sauf s'il est dans
      l'état <em>installed</em> (à moins que vous ne répugniez pas à
      fouiller à travers les fichiers &lt;arch&gt;-all.txt
      gros de plusieurs mégaoctets).</p>
    <h2>Le résultat des journaux d'empaquetage</h2>
    <p>
      Quand un paquet est empaqueté par sbuild (le composant du
      service d'empaquetage qui effectue l'empaquetage proprement dit),
      un journal avec le résultat de l'empaquetage est envoyé par mail
      à l'administrateur du serveur d'empaquetage automatique et à
      logs@buildd.debian.org (afin qu'il puisse atterrir sur
      https://buildd.debian.org). Le résultat du journal d'empaquetage
      peut être <em>successful</em>,
<em>attempted</em> (auparavant appelé <em>failed</em>),
      <em>given-back</em> ou <em>skipped</em>. Veuillez noter que, sur
      <a href="https://buildd.debian.org/";>la page résumant le journal
      du service d'empaquetage</a>, le préfixe <em>maybe-</em> est
      ajouté, entre autres à cause du fait qu'un empaquetage peut y être
      marqué <em>failed</em> pour des raisons qui ne sont pas vraiment
      un échec, et que cela a provoqué de la confusion par le passé
      (ou, dans le cas contraire, parfois, un paquet qui a apparemment
      été empaqueté avec succès est vraiment cassé et doit être
      réempaqueté).
    </p>
    <p>
      La signification des résultats de journal est la suivante&nbsp;:
    </p>
    <dl>
      <dt><a name="successful">successful</a></dt>
      <dd>L'empaquetage a réussi. Quand le responsable du
        serveur d'empaquetage recevra le journal, il extraira le fichier
        <code>.change</code> incorporé, le signera et le renverra au serveur
        d'empaquetage automatique, ce qui provoquera l’envoi du paquet.
      </dd>
      <dt><a name="failed">attempted</a> (auparavant : failed)</dt>
      <dd>
L'empaquetage s'est terminé avec un code de retour
non nul, indiquant qu'il a probablement échoué.
Comme il peut y avoir un grand nombre
        de raisons pour qu'un empaquetage échoue, les énumérer toutes serait
        ennuyeux, alors ce ne sera pas fait ici. Si l'un de vos paquets est
        marqué <em>(maybe-)failed</em>, vous devez lire ce qui précède et
        vérifier son état wanna-build actuel.
      </dd>
      <dt><a name="given-back">given-back</a></dt>
      <dd>L'empaquetage a échoué à cause d'un problème temporaire avec
        le serveur d'empaquetage automatique&nbsp;; ce sont par exemple
        des problèmes de réseau, l'inaccessibilité du source des paquets
        avec le source.list actuel, un espace disque faible, etc.<br /> Un
        paquet qui est <em>given-back</em> est à nouveau marqué comme <em><a
        href="#needs-build">needs-build</a></em>&nbsp;; en tant que tel, il
        sera automatiquement pris par un serveur d'empaquetage automatique
        différent dès que l'un d'eux sera prêt.
      </dd>
      <dt><a name="skipped">skipped</a></dt>
      <dd>Entre le moment où le paquet a été sélectionné par le/un serveur
        d'empaquetage automatique et marqué <em><a
        href="#building">building</a></em> et le moment où l'empaquetage a été
        tenté, une nouvelle version pour ce paquet a été envoyée, ou
        un responsable de portage a lui-même modifié l'état wanna-build
        pour une raison ou pour une autre. Cela fait, un courriel
        est envoyé au serveur d'empaquetage qui marquera le paquet
        comme ne devant pas être empaqueté&nbsp;; sbuild prend en compte l'information, et
        sautera l'étape d'empaquetage (même si un journal d'empaquetage
        contenant ce résultat est envoyé, pour décrire le fait que cela
        s'est produit).
      </dd>
    </dl>

<h2><a name="graphlink">Version graphique</a></h2>
<p>Afin d'illustrer ce qui précède, nous fournissons une <a
href="wanna-build.png">version graphique</a> de cette procédure.
Veuillez bien noter une nouvelle fois qu'elle ne contient pas tout ce qui
est mentionné dans ce document.
</p>

Reply to: