The goal is to detect build issues/conflicts of Gentoo Linux packages. For that about a dozen sandbox'ed Gentoo images are running in parallel. Each image is setup from a recent stage3 tarball as an arbitrary combination of ~amd64 + profile + USE flag set. Within each image all Gentoo packages are in a randomized order scheduled to be installed.
Setup of images is done by setup_img.sh. Then watch the status:
whatsup.sh -dcp
whatsup.sh -otl
The file ~tinderbox/tb/findings/ALREADY_CAUGHT holds reported findings. A new finding is send via email to the user specified in ./sdata/mailto. The Gentoo bug tracker can be searched for related bugs using check_bgo.sh. If not yet reported then the finding could be filed using bgo.sh.
Create the user tinderbox, which :
- must not be allowed to edit files under /opt/tb/
- needs to be granted to read/execute the scripts under /opt/tb/bin/
- must have read/write permissions for files under ~tinderbox/tb/
- must not be allowed to read the file under /opt/tb/sdata/.
Create in its HOME the directories: ./distfiles/, ./img/, ./logs/, ./run/ and ./tb/. Clone this Git repository or unpack a release artefact. Move ./conf, ./data and ./patches to ~tinderbox/tb/. Move ./bin and ./sdata to /opt/tb/ and set ownership to root. Edit the MTA config files in /opt/tb/sdata/*.sample and strip away the suffix .sample. Grant sudo rights to the user tinderbox:
tinderbox ALL=(ALL) NOPASSWD: /opt/tb/bin/bwrap.sh,/opt/tb/bin/setup_img.sh,/opt/tb/bin/house_keeping.sh,/opt/tb/bin/kill_img.sh,/opt/tb/bin/retest.sh,/opt/tb/bin/collect_data.sh,/usr/sbin/emaint
I started this project with a simple Bash script. I missed the point of no return to switch to Python or somethign else.