1,848
edits
(Create page with information about the continuous build) |
(Improve markup.) |
||
(12 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
We are using [https://buildbot.net/ Buildbot] to build and test the current development version of Octave on multiple systems in a number of different configurations. | |||
{{Note|The current status of the builds may be found at http://buildbot.octave.org:8010/#/waterfall.}} | |||
= Systems and Configurations = | |||
The following systems and configurations are currently covered for Octave builds: | |||
{| class="wikitable" | |||
|- | |||
! Builder ID !! Hg Version !! System !! Compiler !! Build Options !! Frequency | |||
|- | |||
| clang-3.8-debian || default || Debian Testing || Clang 3.8 || Disable GraphicsMagick || Any Change | |||
|- | |||
| clang-4.0-debian || default || Debian Testing || Clang 4.0 || || Any Change | |||
|- | |||
| clang-5.0-debian || default || Debian Testing || Clang 5.0 || || Any Change | |||
|- | |||
| clang-fedora || default || Fedora 25 || Clang (system default) || || Any Change | |||
|- | |||
| clang-osx || default || OS X || Clang || || Any Change | |||
|- | |||
| gcc-6-debian || default || Debian Testing || GCC 6 || || Any Change | |||
|- | |||
| gcc-7-debian || default || Debian Testing || GCC 7 || || Any Change | |||
|- | |||
| gcc-7-lto-debian || default || Debian Testing || GCC (system default) || || Any Change | |||
|- | |||
| gcc-fedora || default || Fedora 25 || GCC (system default) || || Any Change | |||
|- | |||
| gcc-lto-fedora || default || Fedora 25 || GCC (system default) || Enable link time optimization || Any Change | |||
|- | |||
| no-extras-debian || default || Debian Testing || GCC (system default) || Disable all optional dependencies || Any Change | |||
|- | |||
|} | |||
And for mxe-octave: | |||
= | {| class="wikitable" | ||
|- | |||
! Builder ID !! Hg Version !! Build System !! Host System !! Compiler !! Build Options !! Frequency | |||
|- | |||
| mxe-native-all-on-debian || default || Debian Testing || Debian || GCC (system default) || GNU Linux, build all dependencies || Daily | |||
|- | |||
| mxe-native-on-debian || default || Debian Testing || Debian || GCC (system default) || GNU Linux, use system compiler, fontconfig, and X11 libraries || Daily | |||
|- | |||
| w32-on-debian || default || Debian Testing || Windows || GCC (mxe-octave default) || Windows 32 || Daily | |||
|- | |||
| w32-stable-on-debian || stable || Debian Testing || Windows || GCC (mxe-octave default) || Windows 32 || Daily | |||
|- | |||
| w64-32-on-debian || default || Debian Testing || Windows || GCC (mxe-octave default) || Windows 64 || Daily | |||
|- | |||
| w64-32-stable-on-debian || stable || Debian Testing || Windows || GCC (mxe-octave default) || Windows 64 || Daily | |||
|- | |||
| w64-64-on-debian || default || Debian Testing || Windows || GCC (mxe-octave default) || Windows 64, 64-bit indexing || Daily | |||
|- | |||
|} | |||
= Build Slave Configuration = | |||
To run a build slave for Octave, you must do the following: | |||
* Contact the [mailto:octave-maintainers@gnu.org Octave Maintainers] mailing list to let us know that you wish to provide a system to use as a build slave. | |||
* Install buildbot. Packages exist for most distributions. See the buildbot docs for other options. You should create a separate user account with no special privileges that will run buildbot. | |||
* Create a configuration file (see below). | |||
* Run buildbot on the slave system, preferably by starting it automatically when your system boots. It should be running with the buildbot user ID. | |||
You may also want to set up '''ccache''' to work with buildbot (strongly recommended to speed up builds). If you create a directory {{Path|~/buildbot/bin}}, it will be added to the execution PATH when buildbot runs commands on the slave. This directory can have symbolic links like the following: | |||
lrwxrwxrwx 1 buildbot buildbot 15 Aug 26 11:39 gcc -> /usr/bin/ccache | |||
lrwxrwxrwx 1 buildbot buildbot 15 Aug 26 11:40 cc -> /usr/bin/ccache | |||
lrwxrwxrwx 1 buildbot buildbot 15 Aug 26 11:40 c++ -> /usr/bin/ccache | |||
lrwxrwxrwx 1 buildbot buildbot 15 Aug 31 23:46 gfortran -> /usr/bin/ccache | |||
They should point to the actual location of ccache if it is not in {{Path|/usr/bin}}. | |||
Your system may be behind a firewall. It does not have to have a distinct public IP address. | |||
== Sample Slave Configuration File == | |||
You must edit the settings for <code>basedir</code>, <code>slavename</code>, and <code>password</code>. The <code>basedir</code> should be the absolute and fully expanded name of the directory containing the configuration file. For example, if the home directory for the buildbot user is {{Path|/var/lib/buildbot}} and your <code>slavename</code> is set to 'debian-x86_64' , then <code>basedir</code> might be {{Path|/var/lib/buildbot/slaves/debian-x86_64}}. The password should not be anything valuable. You'll be asked to provide the <code>slavename</code> and <code>password</code> so that they may be added to the master configuration on buildbot.octave.org. Do '''not''' post the password to the octave-maintainers mailing list. | |||
<syntaxhighlight lang="python"> | |||
import os | |||
from buildslave.bot import BuildSlave | |||
from twisted.application import service | |||
basedir = '/PATH/TO/DIRECTORY/CONTAINING/THIS/CONFIGURATION/FILE' | |||
rotateLength = 10000000 | |||
maxRotatedFiles = 10 | |||
# if this is a relocatable tac file, get the directory containing the TAC | |||
if basedir == '.': | |||
import os.path | |||
basedir = os.path.abspath(os.path.dirname(__file__)) | |||
# note: this line is matched against to check that this is a buildslave | |||
# directory; do not edit it. | |||
application = service.Application('buildslave') | |||
try: | |||
from twisted.python.logfile import LogFile | |||
from twisted.python.log import ILogObserver, FileLogObserver | |||
logfile = LogFile.fromFullPath(os.path.join(basedir, "twistd.log"), rotateLength=rotateLength, | |||
maxRotatedFiles=maxRotatedFiles) | |||
application.setComponent(ILogObserver, FileLogObserver(logfile).emit) | |||
except ImportError: | |||
# probably not yet twisted 8.2.0 and beyond, can't set log yet | |||
pass | |||
buildmaster_host = 'buildbot.octave.org' | |||
port = 9989 | |||
slavename = 'SLAVE-NAME' | |||
passwd = 'PASSWORD' | |||
keepalive = 600 | |||
usepty = 0 | |||
umask = None | |||
maxdelay = 300 | |||
allow_shutdown = None | |||
s = BuildSlave(buildmaster_host, port, slavename, passwd, basedir, | |||
keepalive, usepty, umask=umask, maxdelay=maxdelay, | |||
allow_shutdown=allow_shutdown) | |||
s.setServiceParent(application) | |||
</syntaxhighlight> | |||
== Space Requirements == | |||
Building Octave takes a significant amount of disk space. With debugging symbols, you may need several GB for each build, plus room for ccache (possibly 50GB) if you use it. If you use a cache size that is larger than the default, you'll need to specify that in the {{Path|.ccache/ccache.conf}} file using a line like | |||
max_size = 50G | |||
If the directory containing the build and ccache directories doesn't have sufficient space, then these directory names may point to a separate partition that does have enough space available. | |||
== Starting the Slave == | |||
With everything in place, you can run the slave server with the following commands (assuming that your <code>basedir</code> is {{Path|/var/lib/buildbot/slaves/debian-x86_64}}). | |||
cd ~buildbot/slaves | |||
sudo -u buildbot buildslave start debian-x86_64 | |||
[[Category:Development]] | [[Category:Development]] |