summaryrefslogtreecommitdiffstats
path: root/dev/todo/buildd-infra.mdwn
blob: c190031deb05effdccc1db860eaab97c667d71f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
[[!meta title="Build Daemon Infrastructure"]]

Summary
=======

This pages documents the proposed infrastructure for handling package uploads,
builds, and archive inclusions.


Process
=======

The following diagram summarizes the process:

[[!img dev/buildd-infra.png size="x450" alt="buildd infrastructure diagram"]]

The general process is as follows:

 1. A maintainer uploads a source package (not necessarily his or her own –
    non-maintainer uploads are allowed) and changes file over SFTP into the
    review queue.  (This can be done by hand or with the assistance of a script
    similar to Debian's dupload and dput scripts.)
 2. A reviewer (whose job is similar to that of Debian's ftpmaster team members)
    examines the changes file and, if necessary, the source package itself and
    decides to either accept or reject the upload.  If accepted, the package is
    added to the master build queue and all of the relevant build queues.
 3. Each build daemon periodically checks the queues for which it is
    responsible.  If packages are waiting to be built, it attempts to build the
    oldest one (first in, first out).  If the build is successful, the daemon
    adds the produced binary packages to the archive queue.  Either way, the
    queue run ends with the removal of the processed source package from the
    relevant queue.
 4. When the master build daemon detects that a package no longer exists in any
    architecture build queue, it moves the source package and changes file into
    the archive queue.
 5. When the archive inclusion daemon finds a source package in the archive
    queue, it includes in the archive the source package along with all of the
    built binary packages.
 6. Users can finally download the source and binary packages from the archive
    using opkg.