Mac OS builds on scgbuild

Installing buildslave

Following the instructions for installing the buildslave for windows under http://apps.jcns.fz-juelich.de/doku/sc/intern:scgbuild

These commands were used to install the slave

pip install –upgrade pip
pip install pyopenssl
pip install service_identity     // only difference to doku wiki
pip install setuptools
pip install twisted
pip install buildbot-slave
buildslave –version             // check if correctly installed

Setting up a new slave

md \basedir
cd \basedir
buildslave create-slave . scgbuild slavename slave_password

Mac mini buildslave information

Name: elCapitainNativeSlave
Password: elCapitain_pwt

Cron job on Mac mini

Create new cron job for user scg with

crontab -e

In the file add a new line like the following

@reboot /Users/scg/startNativeSlave.sh

Cron will execute this script in the home directory of scg. The script contains one line:

cd basedir && buidslave start      // Other commands are buidslave stop or buildslave restart

Because the path variables in side the shell stared by cron were not the same as in a normal terminal session I added one line at the top of the file

PATH=/usr/local/bin:/usr/local/opt/qt5/bin/:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

If the cron job fails to be executed or some other error occurs the error messages will be sent to the machine local mail box with can be accessed over terminal by

mail // return for open, q for exit

The installed cron jobs can be listed with

crontab -user scg -l

Buildmaster modifications

Build directories on buildmaster

On the buildserver there are the following directories under scg-buildserver/builds/BornAgain/branches/

  • develop/OS_elCapitain
  • develop/OS_mavericks
  • master/...

and the same for master. These contain the tags ether MS4 (Mac Slave) for elCapitan or MS5 for Mavericks. There are also symbolic links to the plan for the builds and environment variable.

Build directories on buildslave

All builds are done in the directory

/Users/scg/basedir/

The following folder stucture is set up by the buildmaster same as with all the other builds for Linux and Windows

-- basedir/
 |
 |-- BornAgain-develop-OS_elCapitain/
         |
         |-- build

In /build the current working directory is for the slave. To run commands in other directories one has to cd and remember that every command is passed to a new bash session and will start from /build again.

Modifications in the builds.py

There are two new makeFactory methods one called makeOSFactory the other makeOSVagrantFactory. Here some initial shell commands are passed to the slave such as creating a new directory for the acutall build

|-- build
       | -- .build    // here the build is done

and the plan is brocken down line by line and also passed to the slave.

For the mavericks build in the vagrant machine the final command is passed to the slave

factory.addStep(steps.ShellCommand(command=['cd','mavericks-dev','&&','vagrant','destroy'],alwaysRun=True))

wich is executed always no matter if the build succeed or failed.

Vagrant machine and build_bornagain.sh

For Mavericks currently stored under scg/basedir/mavericks-dev-master/develop. Later to be copied from buildserver to build directory. This meas for the mavericks build the directory structure looks a bit different:

-- basedir/
 |
 |-- BornAgain-develop-OS_mavericks-dev/
         |
         |-- build
               |
               |-- mavericks-dev-master
                           |
                           |-- Vagrantfile
                           |-- build_bornagain.sh