Abstract¶
mini-buildd is a custom build daemon for Debian-based distributions with all batteries included: I.e., it covers incoming, (distributed) building, installing, repository maintenance, repository delivery – and some extras.
Main notion is to make it easy to bootstrap and maintain an add-on (i.e., add onto an existing Debian distribution) Debian package infrastructure. So it’s, for example, suitable for sandboxing, personal package repositories or organizations maintaining custom or adapted Debian packages.
mini-buildd does not re-invent the wheel, it’s rather a sophisticated glue written in python3
to a number of
standard (Debian) or off-the-shelf software components. As core components, it uses Debian package ‘twisted’ (HTTP server),
Debian package ‘python-django’ (web application), Debian package ‘python-pyftpdlib’ (package uploads), Debian package ‘sbuild’ &&
Debian package ‘schroot’ (package building) and Debian package ‘reprepro’ (for the APT package archive).
Features¶
Core features:
Integrated HTTP server (webapp and repository delivery).
Integrated FTP server (incoming).
Easy bootstrap or maintenance via API call ‘setup’, fine-grained custom setup via Web-based configuration.
Distributed builders (with optional wake support for remotes).
Web-based or command line repository maintenance via API calls.
Some Arbitrary Extras:
Events Queue: Web or shell, check what’s going on.
User Management: Package subscriptions, GPG key management, upload authorization.
Package QA: Internal sanity checks, version enforcing, lintian, autopkgtest – we make package building hard again.
Package Tracking:
Debian PTS
-(sort-of)-like web based source package tracker.No-Changes-Ports: Automates ports, for internal or external source packages.
Keyring Packages: Generated automatically.
Package Staging:
unstable->testing->stable
-style (manual) migration.Package Rollbacks: Keeps
N
rollbacks for any distribution.Repository Snapshots: Automated (time based) or manual.
Basic Mode Of Operation¶
mini-buildd is a Unix daemon written in python. When running, it provides a HTTP server (on port 8066
by
default).
The HTTP server serves both, mini-buildd’s web application as well as the delivery of the package repositories.
The instance is being configured in the configuration section of the web application.
As soon as a mini-buildd instance has been configured to have an active ‘Daemon’, you may start
the engine,
running an FTP server (on port 8067
by default).
The FTP server acts on incoming *.changes
files, both from developers and other mini-buildd instances (via special
buildrequest
and buildresult
changes).
As soon as an instance of mini-buildd has active chroots configured, it acts as builder. Chroots are completely generic and interchangeable, and identified by codename and arch only; distribution-specific build configuration is all carried through the internal buildrequests. Thus, mini-buildd instances may be interconnected as so-called ‘Remotes’ to share builders.
This is a simplified example mini-buildd ‘network’ with three mini-buildd instances ernie, grover and bert:
ernie has repositories and chroots, and uses himself and grover as remote for building.
grover only has chroots, and is used by ernie and bert for building.
bert only has repositories, and uses ernie and grover as remotes for building.
About this Manual¶
This manual is neither complete nor the only source of documentation, especially for the nitty-gritty details:
Command usages (a.k.a.
--help
) (or resp. manpages – same content). Copies are in this manual, see sidebar.API call documentation (see mini-buildd’s ‘api’ page). Manual provides resp. links to In-App-Docs, see sidebar.
Python code doc (see
mini_buildd
).In-code django docs for the models (see mini-buildd’s ‘setup’ page, mini-buildd’s ‘admin’ page).
And of course as final endboss, you still have the
source code
.
Tip
Some links do not work in this manual?
If you are reading this manual stand-alone the resp. links to “In-App content” will not work.
Read this manual served by mini-buildd itself.
Conventions¶
Sections¶
Section hierarchy #*=-~
:
###
: Document***
: Section===
: Subsection---
: Subsubsection~~~
: Subsubsubsection
Admonitions¶
We use RST admonitons error
, attention
, note
, tip
(so these can be summarized in Admonitions (FAQ, NOTE, TODO, BUG)).
Code¶
In code snippets, names written all-capital (FOO
, HOST
) are not meant literal but placeholders for customized
values.
Code expected to run as any user
:
mini-buildd-dput foo bar.dsc
Code expected to be run as mini-buildd
:
mini-buildd-cruft
Code expected to be run as root
:
apt install foo