summaryrefslogtreecommitdiff
path: root/README.md
blob: 334b4bb97d42934e5367fc8a95ed57264739e465 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# builder
tools for building 32-bit archlinux packages from archlinux.org's official, 64-bit tested PKGBUILDs et al.
This includes scripts to be run on the build master as well as scripts to be run on the build slaves (both residing in `bin`).

## requirements
* `moreutils`
### build master only
* `base-devel`
* `bc`
* `git`
* `graphviz`
* `ii`
* some mysql-server
* `nginx` or equivalent
* `php-gd`
* `php-fpm` or quivalent
* `rsync`
* `screen`
* some ssh-server
### build slave only
* some ssh-client
* `wget`
* `sudo` rights for `staging-with-build-support-i686-build`, `staging-i686-build`, `multilib-build`, `extra-x86_64-build`
* `devtools32`

## configuration
The standard configuration in `conf/default.conf` can be locally overwritten by `conf/local.conf`.
### build master only
* add `command=".../bin/slave-build-connect $slave-identifier" $ssh-key` to `~/.ssh/authorized_keys` for each build slave
### build slave only
* set `keyserver-options auto-key-retrieve` in ~/.gnupg/gpg.conf
* put an i686 mirror into `/etc/pacman.d/mirrorlist` as __first__ mirror

## tools for the build master
* `build-master-status`:
Print some informational statistics.
* `build-slave-connect`:
Proxy command to be allowed for connection via ssh from build slaves - this way, they can execute exactly the commands they need to operate.
* `calculate-dependent-packages`:
Calculate how many packages on the build list depend on each package on the build list.
* `cleanup`:
Clean up left over files.
* `db-update`:
Move around packages on the master mirror.
* `get-assignment`:
Receive a build assignment from the `build-list`.
* `get-package-updates`:
Update the `build-list`.
* `interpret-mail`:
Interpret the content of an email - also checks for validity of the mail.
* `prioritize-build-list`:
Reorder the build list.
* `return-assignment`:
Return an assignment - either a tar of built package(s) or of error logs.
* `sanity-check`:
Check sanity of build master.
* `seed-build-list`:
Seed the build list from an upstream mirror or a manual package list.
* `show-dependencies`:
Generate graphs of dependencies between build-list packages for the web server.
* `why-dont-you`:
Script to investigate why a (desired) action is not done.

## tools for the build slaves
* `build-packages`:
Get a build assignment from the build master, build it and report back.
* `clean-cache`:
Remove packages from /var/cache/archbuild32 which do not match their checksum.

## working directory
In the standard configuration, the directory `work` will be used to cache the following data:
* `build-list`, `build-list.loops`, `build-order`, `tsort.error`:
order of builds of packages and dependency loops
* `deletion-list`:
packages to be deleted
* `*.revision`:
current revisions of the respective repository
* `package-infos`:
meta data of packages
* `package-states`:
information on build process of packages (lock files, markers for broken packages)
* `repos/packages`, `repos/community`, `repos/packages32`:
git repositories of PKGBUILDs and modifications