parbuilder

Michal Moskal malekith at pld.org.pl
Sat Dec 8 13:53:04 CET 2001


I have just commited improved version of it to CVS. It is still not
suppoused to work, but you might want to look at it...

#v+
WTF is it?
==========

It is tool for collecting more or less statstical information about
how do some rpm packages build (or not...). It is not intended to build
production rpms. Therefore we still need regular builders :^)

Principle of operation
======================

Server process has list of rpm, that we want to find out if they build or
not. This is probably list of *all* rpms, if it gets empty we fill it again.
Server process runs from inetd. We need only one such beast, since one server
can handle multiple queues (used for diffrent architactures, or distribution
versions).

There are number of client machines. On each cronjob is installed that checks
if CPU gots cold (load avarage under .5), and if so, it connects to the server
and asks it for a job. (There is also lock to prevent building more then
one package at once). After builder script (that is run in chroot) has 
finished we:
  a) remove any produced rpm's, tmp build directories and so on
  b) output information about exit status of builder command and resources
     consumed
  c) output bziped build log

This information is captured outside the chroot, and sent back to the server.


Why don't we save rpms?
===================================

There is no point in saving rpms. Regular builders are used for this
purpouse. This envirment should not be used for test builds. It is more,
to see how destablizaing, to the rest of packages, was the change in some
library or development tool, just to avoid situation when 1/2 of repo doesn't
compile.


rpm -qa
=======

Set of installed packages on client boxes is controled. Whenever job is
assigned, md5 sum of required set of packages is sent to the client. If it
happen not to have the required package set, it asks server for current
requirements on package set. Client cronjob can optionall automagicly
upgrade packages then, otherwise administrator is notified.


How to setup client machine?
============================

a) install parbuilder package
b) do 
  sudo su - parbuilder
  ./install-parbuilder
  [answer few questions...]
  sudo ./install-all


How to setup server machine?
============================

(Note, that you probably don't need server machine)

a) install parbuilder-server package
b) sudo vi /etc/parbuilder-server/config
c) sudo su - parbuilderd
   copy spool files from spool-ARCH, buildlogs/ARCH/ and data-ARCH templates
   edit other files (identities, pkglists, news and so on)

Future
======

We might want to adopt it for regular rpm building, if we have spare reilable
machines.
#v-

(from README)

-- 
: Michal ``,/\/\,       '' Moskal    | |            : GCS {C,UL}++++$
:          |    |alekith      @    |)|(| . org . pl : {E--, W, w-,M}-
:    Linux: We are dot in .ORG.    |                : {b,e>+}++ !tv h
: CurProj: ftp://ftp.pld.org.pl/people/malekith/ksi : PLD Team member



More information about the pld-devel-en mailing list