blob: 9ffdadd56a3429480e1f838e8fb657427d78b6be (
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
|
# 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
* `clean-git`:
Clean the packages' git repositories.
* `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>`
|