La rete di buildd è un sottoprogetto di Debian che aiuta a velocizzare la ricompilazione dei pacchetti per tutte le architetture che Debian al momento supporta. Questa rete è formata da svariate macchine (i nodi buildd) che utilizzano uno specifico pacchetto software, chiamato buildd, per prendere i pacchetti dall'archivio Debian e ricompilarli per l'architettura richiesta.
La distribuzione Debian supporta un buon numero di architetture, ma i mantenitori dei pacchetti in genere compilano i binari solo per una sola architettura (di solito i386). Gli sviluppatori di altre architetture devono prestare attenzione a quando escono nuove versioni di ogni pacchetto e ricompilarle, se vogliono stare al passo con la distribuzione Intel.
Quando fu iniziata Debian/m68k (il primo port non Intel) tutto questo veniva fatto manualmente: gli sviluppatori controllavano sulla mailing list degli upload la presenza di nuovi pacchetti e ne prendevano alcuni per compilarli. Annunciando su una mailing list cosa si stava per fare si evitava che un pacchetto venisse compilato due volte. È evidente che però questo metodo era facilmente soggetto ad errori ed estremamente costoso in termini di tempo, ma è stato per lungo tempo l'unico modo di mantenere le distribuzioni non i386.
Il demone di compilazione rende automatica la maggior parte di questo processo. Consiste di una serie di script (scritti in Perl e Python), che sono stati modificati molte volte nel corso del tempo in modo da aiutare i porter in molti compiti. Sono finalmente diventati un sistema che è capace di mantenere quasi automaticamente una distribuzione Debian non i386 aggiornata.
Buildd è il nome che di solito si dà ai programmi utilizzati della rete, ma in realtà è però diviso in parti diverse:
Tutte queste parti operano insieme per far funzionare la rete di buildd.
In realtà lo sviluppatore Debian medio non deve esplicitamente usare la rete di buildd. Quando carica un pacchetto nell'archivio (binari compilati per una certa architettura), questo sarà aggiunto al database di ogni architettura (nello stato Needs-Build, ossia "compilazione necessaria"). Le macchine di compilazione interrogheranno il database chiedendo quali pacchetti sono in quello stato e prenderanno continuamente pacchetti dalla lista. I criteri di priorità della lista sono lo stato della precedente compilazione, la priorità del pacchetto, la sua sezione ed infine il suo nome.
Se la compilazione ha successo su tutte le architetture, il mantenitore non avrà bisogno di fare niente. Tutti i pacchetti binari saranno caricati nell'archivio principale della loro architettura. Se la compilazione non finisce con successo, il pacchetto entrerà in uno stato speciale (Failed, "fallito", oppure Dep-Wait, "aspetta le dipendenze", se ha dipendenze di compilazione o di installazione che non sono disponibili). Gli amministratori della rete di buildd controlleranno i pacchetti che non sono stati compilati con successo e ne daranno comunicazione al mantenitore, generalmente aprendo un bug nel Bug Tracking System.
A volte un pacchetto impiega molto tempo per essere compilato per una certa architettura, e questo gli impedisce di entrare in testing. Sfortunatamente il pacchetto dovrà aspettare finché una macchina non lo prende. Gli amministratori di buildd non accetteranno richieste di velocizzare la compilazione di un pacchetto, perché la lista delle priorità è stata fissata.
Puoi controllare lo stato di ogni tentativo fatto da buildd per compilare i pacchetti che appartengono ad ogni mantenitore controllando i log di buildd. Questi log possono essere raggiunti anche dal Riassunto dei Pacchetti di un Mantenitore (Packages' Maintainer Overview).
Per maggiori informazioni sui diversi stati dei pacchetti puoi leggere "stati di wanna-build".
Ovviamente, il miglior modo di capire come funziona la rete i buildd è consultare i codici sorgente e la documentazione disponibile. Inoltre, la sezione Porting and being ported della Debian Developers Reference contiene altre informazioni su come funziona, nonché informazioni sui compilatori di pacchetti e tool per il porting che sono utilizzati nel processo di costruzione e mantenimento della rete di buildd.
Sono disponibili alcune statistiche sulla rete di buildd.
Ci sono molte ragioni per cui uno sviluppatore (o un utente) potrebbe voler metter su e far funzionare un sistema buildd:
Qui puoi trovare ulteriori informazioni su come installare un nodo buildd.
Questa introduzione alla rete di buildd è stata scritta mettendo insieme pezzetti appartenenti a Roman Hodek, Christian T. Steigies, Wouter Verhelst, Andreas Barth, Francesco Paolo Lovergine e Javier Fernández-Sanguino.