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:

Setting up a Build slave

Software requirements:

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:

  1. 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.

  2. Install the dependencies:
    • sudo dnf install gcc gcc-c++ make buildbot-slave git binutils glibc-static texinfo gawk perl sed
  3. Create the BuildSlave files:

    • sudo -u ${buildbot_user} buildslave create-slave ${slave_name} ${master_address} ${slave_name} "${slave_password}"
  4. Set keepalive to 200:
    • sudo -u ${buildbot_user} sed -i "s/keepalive = [0-9]\+/keepalive = 200/" ${slave_name}/buildbot.tac
  5. Update admin information:
    • ${EDITOR} ${slave_name}/info/admin
  6. 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
  7. 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'
      +    ]),
       }
  8. Start your BuildSlave:

    • sudo su - ${buildbot_user}
      cd ${slave_name}
      buildslave start
  9. Ensure your BuildSlave will start automatically after reboots, e.g. using crontab:

    • @reboot /bin/buildslave start /home/${slave_user}/${slave_name}/

None: Buildbot (last edited 2017-04-24 05:20:13 by SiddheshPoyarekar)