The information on this page is outdated. glibc is now using the common Sourceware buildbot instance, as explained in this blog post.
glibc has a buildbot that tests each commit on a few platforms. current build status is available.
The buildbot configuration is available from ssh://sourceware.org/git/glibc-buildbot.git.
There is a Bugzilla component buildbot for reporting problems in, or requesting enhancements to, the bot setup.
Known problems include:
- No documentation for how to add new build slaves.
- No automatic alerting of regressions.
make check sometimes mysteriously fails at random (message 1, message 2).
Setting up a Build slave
Software requirements:
- All the tools listed in the section "Recommended Tools for Compilation" from glibc's INSTALL.
- g++
- glibc-static
- Python
The following steps are based on the script configure_gce_slave.sh and have been tested on Fedora 22 and should prepare the base setup:
Contact RolandMcGrath or Tuliom to define a name and a password for the new BuildSlave. This step will require that your PGP public key will be available in a public server.
- Install the dependencies:
sudo dnf install bison gcc gcc-c++ make buildbot-slave git binutils glibc-static texinfo gawk perl sed
Create the BuildSlave files:
sudo -u ${buildbot_user} buildslave create-slave ${slave_name} ${master_address} ${slave_name} "${slave_password}"
- Set keepalive to 200 and port to 9991:
sudo -u ${buildbot_user} sed -i "s/keepalive = [0-9]\+/keepalive = 200/;s/^port = [0-9]\+/port = 9991/" ${slave_name}/buildbot.tac
- Update admin information:
${EDITOR} ${slave_name}/info/admin
- Update host information:
cat /etc/system-release > ${slave_name}/info/host uname -srv >> ${slave_name}/info/host echo >> ${slave_name}/info/host g++ -v 2>&1 | tail -n 1 - | sed 's/gcc version \([^ ]\+\) .*/g++ \1/' \ >> ${slave_name}/info/host objdump -v 2>&1 | head -n 1 - | sed 's/.* version \([^ -]\+\).*/binutils \1/' \ >> ${slave_name}/info/host
Prepare a patch adding your BuildSlave to the master settings. Here is an example that adds an aarch64 slave:
diff --git a/master.cfg b/master.cfg index 67f16eb..1d35b52 100644 --- a/master.cfg +++ b/master.cfg @@ -23,6 +23,7 @@ builder_map = { 'glibc-i686-linux': 'glibc-ubuntu-trusty-slave2', 'glibc-power8-linux': 'fedora22-ppc64-1', 'glibc-s390x-linux': 'marist-fedora-s390x', + 'glibc-aarch64-linux': 'reservedbit-xgene-ubuntu-aarch64', } builders = sorted(set(builder_map.iterkeys())) diff --git a/scripts/slave/buildbot_selector.py b/scripts/slave/buildbot_selector.py index 12bfbb3..8e6ab42 100755 --- a/scripts/slave/buildbot_selector.py +++ b/scripts/slave/buildbot_selector.py @@ -22,6 +22,9 @@ BOT_ASSIGNMENT = { '--enable-lock-elision', ]), 'glibc-s390x-linux': bash('glibc-native.sh'), + 'glibc-aarch64-linux': bash('glibc-native.sh' [ + '--enable-tunables' + ]), }
Start your BuildSlave:
sudo su - ${buildbot_user} cd ${slave_name} buildslave start
Ensure your BuildSlave will start automatically after reboots, e.g. using crontab:
@reboot /bin/buildslave start /home/${slave_user}/${slave_name}/