Friday, February 26, 2010

Setting a vxl dashboard build on MacOS X

This entry discusses how to set up a nightly build of vxl libraries on MacOS X. The nightly build is posted in the vxl dashboard. You can read instructions and download the sample scripts from here. I will also attach my scripts with appropriate modifications.

To start, I created a location to have my dashboard projects e.g /Projects/dashboards. Within that location I have a folder for vxl_scripts and a folder for builds. In dashboard/builds I created folders vxl_nightly/src and vxl_nightly/bin. I downloaded the sources from vxl secure repository svn co https://vxl.svn.sourceforge.net/svnroot/vxl/trunk src ..
The next step is to configure your scripts. There are two main scripts as provided in the vxl instructions - vxl_nightly.cmake and vxl_common.cmake.  The main purpose of having two separate scripts is to separate what is common to most users and what is specific to your machine. So as the name indicates, vxl_common.cmake contains what is common to most users. You shouldn't need to modify it at least not in my case. In vxl_nightly, you will need to specify the locations of you sources and binaries. You will also specify any Cmake variable that you wish to set differently from the default. You can download my vxl_nightly script here for an example.

The last step in the processes is to create a script to call vxl_nightly and set up a schedule for it. One way (there are many) to do this on the mac is to place your script on /etc/periodic/daily. All the scripts at this location get called by launchd at the time specified in the system preferences. Usually the file names start with a number - execution order is determined by the numbers.

My script is called 600.dashboard and contains the following lines


#!/bin/sh
LOGFILE=/var/log/dashboard.log

echo "---------- Building VXL Nightly ----------" >> $LOGFILE
echo "---------- " `date` " ----------" >> $LOGFILE
cd /Projects/dashboards/vxl-scripts
ctest -V -S vxl_nightly.cmake >> $LOGFILE
echo "----------  Done ----------" >> $LOGFILE

So, if you want to test your script you can copy this code anywhere, call the script at test a build. If you are just testing make sure that on your vxl_nightly.cmake script you add the line set(dashboard_model Experimental). Note that as a local user, you cannot write too /var/log (but launchd will) so for testing purposes, change the path of your log file to something like ~/dashboard.log.

Note that the progress of your build will be shown in your log, not so much on the console/terminal.