Andreas Barth: Changes in wanna-build
During recent weeks, not only sbuild and buildd were changed, but also
wanna-build. Many changes were small and don't have direct impact, but will
ease our life in future. This includes a bunch of code cleanups. Most
changes were done by Kurt Roeckx and me, but as usual Marc Brockschmidt
and Philipp Kern were also involved.
This round of changes was started with redoing our priority calculation.
Up to now, any package had a fixed place in the list, and our list was
built from top to bottom as far as buildd power was available (putting aside
manual intervention by setting build-priority by admins). That meant of course that some
packages could be stalled if buildd time isn't enough anymore, like
currently on mipsen. (The queue order was determined by the following sort
options: build-priority, (>= standard?), already built in the past,
priority, section, name, and the first difference decided list order.)
Now, of course >= standard packages are still built first, but
waiting days increase priority so that old extra packages could
be built before young optional package (in other words, they shouldn't
stall. The new formula is about: required: 50, important: 40, standard:
30, optional: 5 [priority] + libs: 4, devel: 2 [section] + contrib: -20,
non-free: -40 [component] + out-of-date: 20 [notes] + max(6, waitingdays)
* 2 + manual priorities, and packages are ordered by this number, then by
waitingdays, then by name.)
While adding code to add bonus for long-waiting packages, we stumbled
across the fact that there were non-C dates in the database stored, which
in turn means that export of the database stopped to work. For fixing that
we replaced the last change field in the database by an postgres now() on
insert, and converted that field to an date field (instead of freetext).
Which in turn broke mkstats and a few more things, which are fixed as of
now.
While doing that, we also introduced the format option, which allows to do
queries like:
wanna-build --format='%t %u: %p/%v% +b B%B' -A mipsel --list=buildingwhich gives output like:
2010-03-03 15:24:38.642988 buildd_mipsel-mayer: cracklib2/2.8.16-1 2010-03-03 15:30:00.341313 buildd_mipsel-rem: liblouisxml/2.1.0-1+b1Of course, there are even better possibilities what one could do with that. :) More changes are pending, like the injector for log files was changed so that we record building times in the database. This will allow us to include build time on at least a few buildds, so that large packages cannot so easily stall all buildds completely anymore. So, more to come ...