[arch-projects] pacbuild

Jason Chu jason at archlinux.org
Sun Aug 29 14:35:29 EDT 2004


Here is my explanation and my current status with respect to pacbuild.

I've been toying with the idea of an autobuilder for a while now, but only
implemented it in the last 4 months.  As it stands, I use it to keep i586
relatively up to date.

Right now it uses python, postgresql, and user mode linux (UML).  It's
broken into three parts:
1) waka
2) catchup
2) checkbuilds

Waka is the actual building daemon.  It starts UML sessions using copy on
write (COW) files, so that I can just throw away the build session after
it's done.

Catchup scans /var/abs looking for builds that are newer than the ones in
the currently defined repo.

Checkbuilds gives you the logs from built packages so they can be reviewed
and marked as correct or not.  If they are incorrect, they are marked in
the db as incorrect and there is no attempt at building the same version
again.  If they are correct, they're added to the repo, old packages are
removed and the db is updated.  Rarely do I have to mark a build as
incorrect, because most of them actually fail and are detected as such.

As it stands, I have run into a few limitations of my current
implementation:
- distributed building with multiple wakas on remote machines
- provides support
- no support for extra scripts (such as a generated packages.txt needed for
the current repo)

Just glancing at the code, I might actually be able to add provides support
fairly easily, to the catchup script.  I'd have more trouble getting proper
provides working within waka and makepkg.

Distributed building is more difficult.  My initial implementation uses the
filesystem to store builds and pass around files and whatnot.  I really
don't know if I want to go to a db-storage solution or something else
entirely.  I would have to abstract the building and the managing aspects a
bit more to make it work better.  This will be something that needs a lot
of thinking and designing.

The extra scripts support will probably come along when I actually
implement support for multiple repos.  In my first version, only one repo
is supported, that's one of the reasons only current is being built.

I'm not exactly sure why I'm explaining this, I don't know exactly what you
people could do without a lot more explanation...

Jason

-- 
If you understand, things are just as they are.  If you do not understand,
things are just as they are.

My old gpg key expired, the new one is available from keyservers.  I was
stupid enough not to realize this before it was too late, so I am not
able to sign my new key with my old key.  If this assurance isn't enough,
please contact me.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://archlinux.org/pipermail/arch-projects/attachments/20040829/f0f40312/attachment.pgp>


More information about the arch-projects mailing list