rebuilderd release and DiVOC Arch Linux Rebuilding workshop
kpcyrd
kpcyrd at rxv.cc
Mon Apr 13 22:51:53 UTC 2020
I usually don't post on this email list, but I have two updates that
might be relevant for others on this list:
We (Arch Linux) have held our first(?) rebuilder workshop. The session
was held on irc, we handed out a written document with instructions on
how to install and use repro and had multiple people with zero prior
experience in reproducible builds verify their first package.
[1]: https://github.com/archlinux/archlinux-repro
I've also spontaneously decided to release my rebuilderd repo[2]. You
are very welcome to have a look or even try to run it, but you should
keep in mind that it's considered experimental (and shouldn't be exposed
to the internet yet).
[2]: https://github.com/kpcyrd/rebuilderd
The project consists of 3 components:
- rebuilderd: the brain that keeps track of the pkg states, queue and
hands out tasks to workers
- rebuilderd-worker: receives a task from rebuilderd, shell out to the
actual rebuilder (eg. repro for archlinux) and report the result back
- rebuilderctl: the tool that's used to manage rebuilderd, query for
results, inspect the queue, shows what the workers are currently
doing, and syncs the package index
I took a few design decisions with this project:
- Distributable: I've tried to make sure the project is easy to package,
I'm going to upload it to Arch Linux in the near future. Building from
source is also supposed to be well supported obviously. Rebuilderd is
trivial to run in docker (the workers may not).
- Easy to setup: In addition to packages in your distro it's also
supposed to be easy to setup. Configuring databases is annoying every
time, so I'm storing data in sqlite that's managed by rebuilderd.
Getting a rebuilder up and running is supposed to be a matter of
1) rebuilderd: Configure a shared secret so only legit workers can
receive work and submit results.
2) rebuilderd-worker: Configure the shared secret and address of
rebuilderd.
No annoying "create a postgres user and configure its permissions",
everything is supposed to just work™ with the two exceptions listed
above.
- Tracking the package databases: The sync command is behaving like a
package manager, downloads the package index and tracks it. Every new
package versionthat's observed is added to the queue for verification.
This must not depend on the regular package manager like apt or
pacman.
- Doesn't rely on a distro: it should be possible to track Arch Linux
with a rebuilder system that runs on debian and vice versa. This
includes the package syncing code. The only exception is the worker
that may depend on a specific distro.
- Not a CI system: I'm not recording build artifacts or diffing them. If
the rebuilt package matches I'm flagging it as GOOD, in all other
cases I'm flagging it as BAD. Troubleshooting is supposed to be done
locally.
- No signing (yet): This is going to change eventually, but right now I
want to focus on independent verification itself. The results are
considered experimental and https is supposed to be sufficient for
now.
The first client for this is going to be a script that takes the list of
packages installed on your system and shows you how many % of your
system are verified already (using a list of urls for rebuilders to
query).
There are a few things I need to take care of, afterwards I'm going to
setup a public rebuilderd (for Arch Linux) and follow up with a url and
how to query it. Please let me know if you're interested in doing the
same.
More information about the rb-general
mailing list