Installation instructions.

1. Accounts

Builder needs account for its needs. Account should be shared for all builders,
which build binary packages on specified host. This allows for better
resources management (hint: variable job_slots in configuration).

However, SRPMS builder should use different account.

We will call accounts: bin_builder and srpms_builder.

2. Requirements

Both:
  sending mail
  gpg
  scp or/and rsync (sending buildlogs and files to ftp)
  access to chroots

srpms_builder:
  mail box + procmail
  possibility to serve files via http
  cvs connections
  ftp or http connections (distfiles)

bin_builder:
  http connections

access to chroots via sudo (sudoers):

srpms_builder ALL=(root) NOPASSWD: \
  /usr/sbin/chroot /path/to/chroot *

bin_builder ALL=(root) NOPASSWD: \
  /usr/sbin/chroot /path/to/chroot *, \
  /usr/bin/unshare -n /usr/local/bin/chroot-nonet /path/to/chroot *

the unshare rule is for network-isolated rpmbuild calls (loopback only).
chroot-nonet wrapper (bin/chroot-nonet) brings up loopback in the namespace.
install it:
  install -m 755 bin/chroot-nonet /usr/local/bin/chroot-nonet

3. Scripts installations

Scripts *have* to be in ~/pld-builder.new/, checked out from CVS.

4. Installation of queues

cd ~/pld-builder.new
./admin/fresh-queue.sh y

5. Chroots setup
poldek.conf:

source = local,pri=1 /spools/ready/
source = main-test,noauto,pri=2 ftp://ftp.pld-linux.org/dists/th/test/i686/RPMS/
source = main-ready,pri=3 ftp://ftp.pld-linux.org/dists/th/ready/i686/RPMS/
source = main-ug,pri=4 ftp://ftp.pld-linux.org/dists/th/updates/i686/RPMS/
source = main,pri=5 ftp://ftp.pld-linux.org/dists/th/PLD/i686/RPMS/
particle_install = no
greedy = yes
rpmdef = _excludedocs 1
cachedir = /spools/poldek/
keep_downloads = yes

Preinstalled packages:

bin_builder:
  rpm-build poldek shadow net-tools which

srpms_builder:
  bin_builder+
  cvs wget rpm-perlprov rpm-php-pearprov rpm-pythonprov

both: user builder

both: ~builder/rpm/{SPECS,SOURCES,RPMS,SRPMS,BUILD}

srpms_build: additionally has to have SPECS and SOURCES checked out from CVS
in SPECS it has to have builder, additional-md5sum and mirrors

both: folders /spools/poldek/ /spools/ready/

Wszystko to robi automagicznie admin/install-chroot.sh
All that stuff can be done automagically with admin/install-chroot.sh.

[[...]]


100. cron jobs

srpms_builder:
  src-builder.sh
  file-sender.sh

bin_builder:
  request-fetcher.sh
  load-balancer.sh
  file-sender.sh

*Very* good idea is to execute tmpwatch for each builder.:
5 3 * * * sudo chroot $HOME/chroots/chroot-i686/ tmpwatch -m 200 /spools/ready/
(autentic example). Of course, example cron item above should be placed for each chroot
inside account. Tmpwatch have to be installed inside. In other case, You have to clean it
manually.

Example for bin builder:
* * * * * $HOME/pld-builder.new/bin/request-fetcher.sh
* * * * * $HOME/pld-builder.new/bin/load-balancer.sh
* * * * * $HOME/pld-builder.new/bin/file-sender.sh
30 3 * * * $HOME/pld-builder.new/bin/maintainer.sh

Example for source builder:
* * * * * $HOME/pld-builder.new/bin/src-builder.sh
* * * * * $HOME/pld-builder.new/bin/file-sender.sh
30 3 * * * $HOME/pld-builder.new/bin/maintainer.sh

101. procmail

srpms_builder:

:0
* ^X-New-PLD-Builder:
|~/pld-builder.new/bin/request-handler.sh

:0
!admin@somewhere

bin_builder

:0
!admin@somewhere

102. httpd

Directory ~/pld-builder.new/www/, in srpm_builder account, have to be accessible
via http (control_url in bin_builder configuration)

103. src builder

Automat can send information (notify) between bin-builders and src-builders
via e-mail or via http (POST METHOD).

To use HTTP POST, one should run (src_builder side):
./request_handler_server.py
On other side (bin-builders):
notify_url = http://some-server.pl:1234/

