[LCFC] wml://devel/buildd/wanna-build-states.wml
Sin cambios desde el RFR.
Saludos
Laura Arjona
#use wml::debian::template title="Estados de Wanna-build: una explicación" BARETITLE="true"
#use wml::debian::translation-check translation="1.25"
<p>Esta página intenta explicar lo que significa cada estado de
wanna-build y qué le pasará al paquete cuando esté en ese estado.
El público al que va destinada son los responsables de los paquetes de
Debian que intentan entender por qué su paquete ha sido o no compilado
para una arquitectura especÃfica. También se da una explicación
de los distintos resultados del registro que se pueden obtener.</p>
<p>Finalmente, está <a href="#graphlink">disponible</a> una versión
del diagrama de flujo entre los estados de wanna-build, pero tenga
en cuenta que no habla de todo lo que se menciona en este documento.</p>
<h2>Estados de wanna-build</h2>
<p>Para cada arquitectura a la que Debian da soporte, hay una base de datos de
wanna-build instalada en buildd.debian.org, con todos los paquetes y su
estado de compilación actual. Hay 8 estados: <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>, e
<em>installed</em>.</p>
<p>Sus significados son los siguientes:</p>
<dl>
<dt><a name="needs-build">needs-build</a></dt>
<dd>Un paquete marcado <em>needs-build</em> ha visto que su
responsable ha enviado una nueva versión, pero para una
arquitectura diferente de la arquitectura para la que es
esta base de datos de wanna-build; asà que necesita que se
recompile. Si el estado es <em>needs-build</em>, no le
ha escogido un autocompilador todavÃa, pero lo hará (una vez
uno esté disponible en un momento en el que el paquete especÃfico
esté cerca del principio de la lista). La gente comúnmente dice
que <q>un paquete está en la cola para la recompilación</q> cuando
hablan sobre un paquete en estado <em>needs-build</em>.<br />
Puede ser interesante darse cuenta de que la cola <em>needs-build</em>
no es una cola <q>FIFO</q>; más bien, el orden usado se basa en los
siguientes criterios:
<ol>
<li>Paquetes con estados previos de compilación: a los paquetes
que se han compilado previamente se les da prioridad sobre los
paquetes nuevos.
</li>
<li>prioridades (los paquetes con prioridad <em>required</em> se
compilan antes que los paquetes con prioridad <em>extra</em>)
</li>
<li>La sección en que esté un paquete. Este orden está basado en
qué paquetes se consideran más importantes; e.g., la sección
<em>games</em> se compila más tarde que la sección <em>base</em>,
y la sección <em>libs</em> se compila antes que <em>devel</em>.
</li>
<li>en orden <q>ASCIIbético</q> en el nombre del paquete.</li>
</ol>
Adicionalmente, bajo ciertas condiciones, puede suceder que un
buildd no tome paquetes del principio de la cola; por ejemplo,
cuando un buildd no puede encontrar las fuentes de un paquete dado,
lo pondrá de nuevo en la cola (donde ocupará de nuevo
su posición anterior, esto es, la cabeza de la cola), pero ignorará
el paquete durante unas pocas horas. Otro ejemplo donde puede
suceder esto es cuando una arquitectura tiene autocompiladores
múltiples; en ese caso, los adaptadores a arquitecturas pueden
elegir compilar los paquetes más grandes en sus autocompiladores
más rápidos, y dejar los más pequeños para las máquinas más lentas.
Un buildd teóricamente también puede pedir explÃcitamente un orden
de secciones diferente, pero no se hace normalmente.<br />
PodrÃa haber otras situaciones donde el orden de la cola parezca
que se ignora; pero dese cuenta que todas son excepciones.
</dd>
<dt><a name="building">building</a></dt>
<dd>Un paquete se marca <em>building</em> desde el momento en
que un autocompilador lo coja del principio de la cola de
wanna-build hasta el momento en que el administrador del
autocompilador contesta al registro. Como los paquetes no se
cogen uno a uno, esto quiere decir que un paquete puede estar
(y normalmente lo está) marcado como <em>building</em> antes de
que la compilación haya comenzado en realidad; sin embargo,
como buildd compila paquetes en su cola local según una cola
FIFO, no deberÃa tomar demasiado. También tenga en cuenta
que el estado del paquete <strong>no</strong> se modifica una
vez que se complete la compilación, sino cuando el administrador
del autocompilador venga a responder al registro.</dd>
<dt><a name="uploaded">uploaded</a></dt>
<dd>Cuando un intento de compilación es satisfactorio,
se envÃa un registro de la compilación al administrador y a
buildd.debian.org. El responsable del autocompilador firma
el archivo .changes que está incluido dentro del registro
de compilación, y lo envÃa al autocompilador. Como
consecuencia, el autocompilador envÃa el paquete y pone su
estado como <em>uploaded</em>. Como tal, un paquete se puede
encontrar en la cola de entrada (en cualquier sitio).<br />
Un autocompilador no tocará más un paquete una vez que su
estado sea <em>uploaded</em>, al menos no hasta el siguiente
envÃo o hasta que algún responsable de adaptaciones a otras
arquitecturas modifique manualmente el estado del paquete.
</dd>
<dt><a name="dep-wait">dep-wait</a></dt>
<dd>Cuando un paquete falla debido a que no se encuentran
dependencias en el momento de la compilación, el responsable del
autocompilador enviará un correo al autocompilador, dándole
instrucciones para quitar las fuentes del paquete y marcarlo como
<em>dep-wait</em> esperando las dependencias de compilación no
encontradas. Un paquete es ese estado, automáticamente,
sin intervención humana, se marcará como needs-build una vez
dichas dependencias estén disponibles.<br />
Originariamente, un paquete tenÃa que ver un intento de compilación
antes de que el responsable lo pusiera manualmente en estado
<em>dep-wait</em>. Sin embargo, en agosto de 2005 se añadió algún
código a wanna-build que hará que un paquete se mueva del estado
<em><a href='#installed'>installed</a></em> directamente al estado
<em>dep-wait</em>, si eso es lo apropiado.<br />
Hay dos casos especÃficos en los que puede suceder que un paquete
se marque como dep-wait para siempre; estas son cuando sucede un
error de mecanografÃa especificando las dependencias de <em>dep-wait</em>
(de forma que un paquete se marca como que está esperando una dependencia
de un paquete que no existe ni existirá) y cuando se declara una
dependencia en tiempo de compilación en un paquete que está
marcado como <em>not-for-us</em>, o que está en la lista
<em>packages-arch-specific</em>.<br />
Como último ejemplo, considere tres paquetes: un paquete
<tt>foo</tt>, que existe sólo para <tt>i386</tt>; un paquete
<tt>bar</tt>, que existe sólo para <tt>m68k</tt> (y que aproximadamente
desarrolla la misma función); y un paquete <tt>baz</tt>, que se puede
compilar con uno de ellos, <tt>foo</tt> o <tt>bar</tt>. El
responsable del paquete <tt>baz</tt> olvida añadir <tt>bar</tt>
a las dependencias de compilación, y lo añade cuando se le
avisa de que <tt>baz</tt> está en <em>dep-wait</em> esperando un
inexistente <tt>foo</tt> para <tt>m68k</tt>, entonces el estado
<em>dep-wait</em> para <tt>m68k</tt> lo tendrán que cambiar
manualmente los responsables de <tt>m68k</tt>.
</dd>
.....<dt><a name="bd-uninstallable">BD-Uninstallable</a></dt>
<dd>Durante la debconf9, <a
href='https://lists.debian.org/debian-wb-team/2009/07/msg00089.html'>Joachim
Breitner tuvo la idea</a> de usar edos-debcheck para verificar si los paquetes
eran instalables respecto a dependencias de construcción, pues de otra manera
irÃan al estado Needs-Build. En ese punto, wanna-build ya tenÃa la capacidad
de comprobar la disponibilidad inmediata de las dependencias de construcción;
pero si el paquete «a» no podÃa instalarse porque dependÃa de otro «b» que dependÃa
de otro «c» (>=1.2.3) y «c» aún está en versión 1.2.2, esto no serÃa detectado,
y la construcción fallarÃa tempranamente por la no disponibilidad de dependencias de
construcción. Averiguar esto era un proceso manual del administrador buildd, y usualmente,
un proceso largo. Con el parche BD-Uninstallable, esto ya no era un problema. Cuando su paquete
está en BD-Uninstallable, significa que una de las dependencias para construirlo no es instalable
(ya sea inmediatamente, o porque parte de su árbol de dependencia no está disponible).
Desafortunadamente, el parche BD-Uninstallable no proporciona información sobre qué paquete
falta exactamente; por favor use edos-debcheck para averiguarlo. Este problema, no obstante,
se resuelve por sà mismo una vez que las dependencias que faltan están ya disponibles,
y en algún punto su paquete se moverá automáticamente otra vez a Needs-Build.
</dd>
<dt><a name="wanna-build-state-failed">failed</a></dt>
<dd>Si un intento de compilación falló, el responsable del
autocompilador decide si realmente es un fallo que no se
deberÃa reintentar, y el paquete se marca como <em>failed</em>.
Un paquete no dejará este estado hasta que un responsable decida
que deberÃa hacerlo, o hasta que una nueva versión esté
disponible. Sin embargo, cuando una nueva versión de un paquete
que se marcó como <em>failed</em> en la versión anterior,
el autocompilador preguntará a su administrador si se debe o no
reintentar compilarlo; esto es asà para que los paquetes que
obviamente fallarán de nuevo no hagan perder el tiempo a
buildd. Aunque descartar un paquete antes de intentar compilarlo
apenas alguna vez es la manera correcta de hacerlo,
la opción está disponible para el administrador del autocompilador.<br />
Dese cuenta de que un paquete<strong>nunca</strong> se marcará como
<em>failed</em> sin intervención humana.
</dd>
<dt><a name="not-for-us">not-for-us</a></dt>
<dd>Ciertos paquetes concretos son especÃficos de arquitecturas; por
ejemplo, <tt>lilo</tt>, un gestor de arranque para i386, no se
deberÃa recompilar para alpha, m68k, o s390. Sin embargo,
<em>wanna-build</em> no mira en el archivo de control de un paquete
cuando crea su base de datos; solo el nombre del paquete y sección,
el estado anterior de compilación, y su prioridad. De esta forma, al enviar por primera
vez un paquete especÃfico de una arquitectura que no se deberÃa
compilación para otras, no obstante se intenta (pero
falla incluso antes de que se descarguen y/o instalen las
dependencias del momento de la compilación)<br />
Ya que los autocompiladores no deberÃan perder tiempo intentado
compilar paquetes que no se necesitan para su arquitectura, se
necesita una manera de listar los paquetes para los que no es
necesario ni si quiera un intento de compilación. La primera
solución a este problema fue <em>not-for-us</em>; sin embargo, como
eso es difÃcil de mantener, <em>not-for-us</em> está desaprobado
hoy en dÃa; los responsables de los autocompiladores deberÃan usar
en su lugar <em>packages-arch-specific</em>, que es una lista de
paquetes especÃficos para una o más arquitecturas en lugar de un
estado de wanna-build.<br />
Un paquete en <em>not-for-us</em> o
<em>packages-arch-specific</em> <strong>no</strong> dejará este
estado automáticamente; si su paquete excluye especÃficamente una
arquitectura dada previamente, pero ahora incluye más arquitecturas,
se deberÃa reintroducir en la cola <strong>manualmente</strong>.<br />
Si se llega a encontrar en la posición de tener que preguntar qué sucede con esto,
puede hacerlo preguntando al mantenedor de buildd pertinente. Se les puede localizar en $arch@buildd.debian.org.
</dd>
<dt><a name="installed">installed</a></dt>
<dd>Como sugiere el nombre, un paquete marcado como <em>installed</em>
está compilado para la arquitectura para la que es la base de datos
de wanna-build. Antes de la publicación de Woody, el estado de
un paquete cambiaba de <em>uploaded</em> a <em>installed</em> tras
la ejecución diaria de katie. Con la implementación de <a
href="https://lists.debian.org/debian-devel-announce/2002/debian-devel-announce-200206/msg00002.html">Accepted-autobuild</a>,
sin embargo, esto ya no es asÃ; ahora, un paquete pasa del estado
<em>uploaded</em> a <em>installed</em> cuando se acepta en el
repositorio. Esto significa que un paquete normalmente se marca
como <em>installed</em> tras una media de 15 minutos.
</dd>
</dl>
<p>Además de estos ocho estados, <em>wanna-build</em> también
reconoce dos -estados eliminados, que en realidad son casos excepcionales.
Estos dos estados son <em>dep-wait-removed</em> y
<em>failed-removed</em>. Están relacionados con sus estados simples
de la siguiente manera: cuando un paquete en estado <em>failed</em> o
<em>dep-wait</em> no aparece en un nuevo archivo Packages
que se le pasa a <em>wanna-build</em> – cuando parece que ha
sido borrado – la información sobre ese paquete no se desecha,
ya que podrÃa ser que el paquete no apareciese por un error temporal,
o que esté borrado temporalmente por alguna razón (pero que reaparecerá
en el repositorio, pasado un tiempo). En vez de eso, en tal caso, un
paquete se mueve al estado <em>-removed</em>, asà la información sobre
porqué falló o qué está esperando se puede retener. El paquete
reaparecerÃa en el siguiente archivo Packages que se le pasa a
wanna-build, y se moverá de nuevo de <em>failed-removed</em> a
<em>failed</em>, o de <em>dep-wait-removed</em> a <em>dep-wait</em>
antes de seguir el proceso.</p>
<p>
No es posible acceder a la base de datos de wanna-build directamente;
esta base de datos está instalada en ftp-master.debian.org, que es
un servidor restringido, y solo los autocompiladores tienen una llave
ssh que les permite acceder a la base de datos de wanna-build de su
arquitectura. Este ha sido el caso incluso antes de que ftp-master
fuese restringido; como wanna-build hace un bloqueo a nivel de base
de datos cuando accede, incluso solo para lectura, de los datos, tiene
que estar en el grupo adecuado (wb-<arch>) para poder acceder
directamente a la base de datos de wanna-build.
</p>
<p>Dicho eso, puede ver en qué estado está un paquete yendo a la
<a href="https://buildd.debian.org/stats/">página de estadÃsticas
de Debian</a>, excepto si está en estado <em>installed</em>
(bueno, no puede a menos que no le moleste escarbar en los archivos
"<arch>-all.txt" de varios megabytes...).
</p>
<h2>Los resultados del registro de compilación</h2>
<p>
Cuando sbuild compila un paquete (el componente de buildd
que hace la compilación en realidad), se envÃa un correo
con el registro del resultado, al administrador del
autocompilador y a logs@buildd.debian.org
(asà que puede terminar en https://buildd.debian.org). El registro
que resulta de la compilación puede ser <em>successful</em>,
<em>attempted</em> (antes conocido como <em>failed</em>),
<em>given-back</em>, o <em>skipped</em>.
Dese cuenta que, en <a href="https://buildd.debian.org/">la página
que muestra el registro de buildd</a>, el prefijo <em>maybe-</em>
se añade, porque entre otras cosas, el hecho de que una compilación
se pueda marcar <em>failed</em> ahà para cosas que <em>realmente</em>
no son un fallo ha causado confusión en el pasado (o, de otra forma,
a veces un paquete que aparentemente se compiló satisfactoriamente
realmente está roto y hay que recompilarlo)..</p>
<p>El significado del registro de resultados es el siguiente:</p>
<dl>
<dt><a name="successful">successful</a></dt>
<dd>La compilación fue satisfactoria. Cuando el responsable
del autocompilador recibe este registro, extraerá el archivo
<code>.changes</code> incluido, lo firma, y lo envÃa de vuelta
al autocompilador, lo que hará que se envÃe el paquete.</dd>
<dt><a name="failed">attempted (antes, failed)</a></dt>
<dd>La compilación terminó con un estado de salida distinto de cero,
indicando que probablemente falló. Como puede haber un gran número de razones por
las que falle, enumerarlos todos serÃa tedioso, asà que no se
intentará hacer aquÃ. Si un paquete suyo se marca
<em>(maybe-)failed</em>, querrá leer lo de más arriba, y comprobar
su estado en wanna-build.
</dd>
<dt><a name="given-back">given-back</a></dt>
<dd>La compilación falló debido a un problema temporal con el
autocompilador; como ejemplos hay problemas de red, la
no disponibilidad de los paquetes fuentes en el actual
sources.list, poco espacio de disco, y otros.<br />
Un paquete que es <em>given-back</em> se marca como
<em><a href="#needs-build">needs-build</a></em> de nuevo;
como tal, será automáticamente escogido por un autocompilador
diferente una vez esté preparado.
</dd>
<dt><a name="skipped">skipped</a></dt>
<dd>En el momento entre que el paquete es escogido por un
autocompilador y se marca como <em><a href="#building">
building</a></em> y el intento de compilación, se envÃa
una nueva versión de este paquete, o un adaptador modifica
manualmente el estado en wanna-build por otra razón. Cuando
se hace eso, se envÃa un correo al autocompilador, que
marcará el paquete como que no va a ser compilado; sbuild
ve esto, y se saltará la compilación (aunque se envÃa un
registro con ese resultado, describiendo el hecho que ocasionó
esto).
</dd>
</dl>
<h2><a name="graphlink">La versión gráfica</a></h2>
<p>Para ilustrar lo de más arriba, también hemos proporcionado una <a
href="wanna-build.png">versión de diagrama de flujo</a> de este procedimiento.
De nuevo, tenga en cuenta que no contiene todo lo mencionado en este documento.
</p>
Reply to: