summaryrefslogtreecommitdiff
path: root/README.md
blob: 8fd0141bee0b70d25a43a75ca41a79880185d9dd (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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# 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`).
The sources are currently hosted on https://git.archlinux32.org/archlinux32/builder.

## requirements
* `moreutils`
* `lsof`

### build master only
* `base-devel`
* `git`
* `ii`
* `inotify-tools`
* some mysql-server (`mariadb` + `stunnel`)
* `nginx` or equivalent
* `parallel`
* `pkgfile`
* `rsync`
* `screen`
* some ssh-server

### build slave only
* some ssh-client
* `wget`
* `devtools32`
* `sudo` rights required by `devtools32`
* `libseccomp-2.4.2` (currently in [testing])

## configuration
The standard configuration in `conf/*.conf.example` can be locally overwritten by removing the `.example` suffix, uncommenting the desired variables and changing the values.

### 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
* enable `[releng]` repository in `/etc/pacman.conf` with an i686 mirror

## tools for the build master and the build slaves
* `check-opcodes`:
Scan binaries for certain opcodes.
* `clean-git`:
Clean the packages' git repositories.
* `opcode`:
Helper for `check-opcodes`.
* `strict-bashism-check`:
Strict style check for this code base.

## tools for the build master
* `bootstrap-mysql`:
Bootstrap the mysql database.
* `build-master-status`:
Print some informational statistics.
* `check-bugtracker`:
Receive list of packages with issues from the bug tracker.
* `check-db-structure`:
Dump the structure of the database.
* `check-mirrors`:
Check responsiveness of mirrors and update database accordingly.
* `check-upstream-bug-tracker`:
Check archlinux' bug tracker for reports about packages which are broken on archlinux32 and add wait-for entries in the database.
* `clean-dependencies`:
Remove run-time dependencies from the database which are not recorded in the package itself.
* `cleanup`:
Clean up left over files.
* `copy-to-build-support`:
Copy a package into [build-support].
* `db-update`:
Move around packages on the master mirror.
* `delete-packages`:
Delete obsolete packages on the master mirror.
* `filter-build-logs`:
Filter content of build-logs for display on the webserver.
* `find-obsolete-packages`:
Find packages which are no longer available upstream.
* `get-assignment`:
Receive a build assignment from the `build-list`.
* `get-package-updates`:
Update the `build-list`.
* `harvest-commit-times`:
Harvest the commit times of package sources from git and put them into the database.
* `ii-answer`:
Answer the irc channel.
* `ii-connect`:
Connect to the irc channel.
* `ii-watch`:
Watch the irc channel.
* `interpret-mail`:
Interpret the content of an email - also checks for validity of the mail.
* `modify-package-state`:
Modify status of a package in the database.
* `ping-from-slave`:
Receive ping from slave.
* `prioritize-build-list`:
Reorder the build list.
* `repo-copy`:
Step brother of `repo-add` and `repo-remove`.
* `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.
* `slave-build-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.
* `systemd-email`:
Helper to add sendmail capability to systemd services.
* `update-pacman-dbs`:
Update the pacman databases required by `wtf`.
* `why-dont-you`:
Script to investigate why a (desired) action is not done.
* `wtf`:
Find which package contains a given file.
* `wtp`:
Find a package.

## 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.
* `local-build-package`:
Build package without involvement of build-master.
* `ping-to-master`:
Ping the build master to show the slave is still compiling.

## working directory
In the standard configuration, the directory `work` will be used to cache some volatile data, as well as the git repositories of PKGBUILDs and modifications (in `repos/packages`, `repos/community`, `repos/packages32`).

## shellcheck
Check the scripts in the `bin` directory with `shellsheck -x <script>`