Note: The original document is newer than this translation.

Autobuilder network

Het autobuilder-netwerk is een Debian-ontwikkeling die het hercompileren van pakketten voor alle architecturen die Debian op dit moment ondersteunt, vergemakkelijkt. Dit network bestaat uit verschillende machines die een specifiek software-pakket gebruiken wat buildd heet, om pakketten uit het Debian-archief op te pikken en ze te hercompileren voor de doelarchitectuur.

Waarom is het autobuilder-netwerk nodig?

De Debian-distributie ondersteunt een flink aantal architecturen, maar de onderhouders van de pakketten compileren normaliter de binaire pakketten voor slechts één architectuur (gewoonlijk i386). Ontwikkelaars voor andere architecturen moeten uitkijken naar nieuwe versies van pakketten en ze hercompileren als ze up-to-date willen blijven met de Intel-distributie.

Toen Debian/m68k (de eerste niet-Intel port) opgestard werd, werd dit allemaal manueel gedaan: ontwikkelaars volgden de upload mailinglijst voor nieuwe pakketten en startten de compilatie van één of meerdere daarvan op hun systemen. De noodzakelijke coordinatie om te voorkomen dat pakketten twee keer gecompileerd werden door verschillende personen werd gedaan via een eigen mailinglijst. Het is duidelijk dat met deze procedure makkelijk fouten gemaakt worden, terwijl ze ook veel tijd vraagt. Toch was dit de normale gang van zaken om niet-i386 distributies up-to-date te houden voor een lange tijd.

Het "build daemon"-systeem automatiseert het meeste van dit proces. Het bestaat uit een set scripts (geschreven in Perl en Python) die mettertijd gegroeid zijn om porters te helpen met verschillende taken. Ze zijn uiteindelijk geëvolueerd in een systeem dat in staat is om de niet-i386 distributies bijna volautomatisch up-to-date te houden.

Hoe werkt buildd?

Buildd is de naam die gewoonlijk gegeven wordt aan de software die gebruikt wordt door het autobuilder-netwerk, maar het bestaat eigenlijk uit verschillende onderdelen:

wanna-build
een hulpmiddel dat pakket-(her)compilaties helpt coordineren via een database die een lijst van pakketten en hun status bijhoudt. Er is één centrale database per architectuur die per pakket de status, versie, en nog wat informatie bijhoudt.
buildd
Een daemon die periodiek de database onderhouden door wanna-build nakijkt, en sbuild aanroept om de pakketten te compileren. Het kijkt na of compilaties al dan niet geslaagd zijn, en zal pakketten ook uploaden nadat de compilatielog goedgekeurd is door de beheerder.
sbuild
is verantwoordelijk voor de eigenlijke compilatie van pakketten in geïsoleerde chroot-omgevingen. Het gebruikt hier vooral standaard Debian-hulpmiddelen voor, maar zorgt ook voor bron-afhankelijkheden en een aantal andere nukken.
quinn-diff
Voedt de wanna-build database met nieuwe pakketten. Het vergelijkt de beschikbare pakketversies voor twee architecturen en toont de verschillen (zoals die gevonden worden na vergelijken van een Sources- en een Packages-bestand). Meer informatie over quinn-diff kan hier gevonden worden.
andrea
Een hulpprogramma dat een aantal bron-afhankelijkheden automatisch genereert, en die informatie samenvoegt met afhankelijkheden die handmatig toegevoegd zijn.

Al deze onderdelen werken samen om het builder-netwerk te laten werken.

Wat moet een Debian developer doen?

Eigenlijk moet een gemiddelde Debian developer het buildd-netwerk niet expliciet gebruiken. Elke keer hij een pakket naar het Debian-archief uploadt (met een binaire versie voor een bepaalde architectuur) zal het toegevoegd worden aan de database voor alle architecturen (in de status Needs-Build). Build machines zullen de database bevragen voor pakketten in deze status, en zullen routineus pakketten van die lijst oppikken. De lijst wordt geprioritizeerd op de vorige compilatiestatus, de prioriteit van het pakket, de sectie, en tot slot de pakketnaam.

Als de compilatie succesvol is in alle architecturen, dan moet een pakketbeheerder niets doen. Al deze binaire pakketten worden geuploaded naar het Debian-archief. Als de compilatie niet succesvol is, dan zal het pakket een speciale status krijgen (Failed, of Dep-Wait als ze bron-afhankelijkheden kennen die niet beschikbaar zijn). De autobuilder-beheerders zullen pakketten die niet compileren, nakijken, en informatie sturen naar de pakketbeheerder, gewoonlijk via het openen van een bug in het Bug Tracking System.

Soms duurt het lang om een pakket te compileren voor een gegeven architectuur, en houdt dat de migratie naar testing van dat pakket tegen. Helaas zal het pakket moeten wachten totdat een machine het oppikt. Buildd beheerders aanvaarden geen vragen om het compileren van een pakket sneller te laten verlopen vermits de prioriteitslijst al ingesteld is. Een pakketbeheerder kan echter wel een Debian ontwikkelingsmachine benaderen en het pakket daar manueel compileren.

U kan de status van de verschillende compilatiepogingen van de pakketten die onder het beheer van een bepaalde pakketbeheerder vallen, bekijken via de buildd logs. Er is ook een link naar deze logs vanuit het "Packages' Maintainer Overview".

Voor meer informatie over de verschillende statussen waarin een pakket zich kan bevinden, gelieve wanna-build-states te lezen.

Waar kan ik meer informatie vinden?

Uiteraard zijn zowel de documentatie als de broncode voor deze verschillende hulpmiddelen de beste manier om uit te vinden hoe het buildd-netwerk werkt. Daarnaast bevat de sectie Porting and being ported van de Debian Developers Reference aanvullende informatie over hoe het werkt, terwijl het ook wat informatie bevat over pakketcompilatie- en porteer-hulpmiddelen die gebruikt worden in het proces van zowel het opzetten als het onderhouden van het buildd netwerk.

Er zijn een aantal statistieken van het autobuilder-netwerk beschikbaar op de buildd stats pagina.

Hoe kan ik mijn eigen auto-builder node opzetten?

Er kunnen verschillende redenen zijn waarom een ontwikkelaar (of gebruiker) een autobuilder zou willen opzetten:

U kan meer informatie vinden over hoe u een autobuilder moet opzetten.


Deze introductie tot het autobuilder-netwerk werd geschreven op basis van informatie verstrekt door Roman Hodek, Christian T. Steigies, Wouter Verhelst, Andreas Barth, Francesco Paolo Lovergine en Javier Fernández-Sanguino Peña