Difference between revisions of "Continuous Build"

From Octave
Jump to navigation Jump to search
(Create page with information about the continuous build)
 
 
(19 intermediate revisions by 5 users not shown)
Line 1: Line 1:
There is a build server continuously building the latest tip of the development branch of Octave. The build server is running [http://nixos.org/hydra/ Hydra], which is based on the [http://nixos.org/nix/ Nix] functional package management system. This is the official continuous build system of the GNU Project. The Hydra build of Octave is currently maintained by [[User:Mtmiller]].
+
GNU Octave uses [https://buildbot.net/ Buildbot] to build and test the current development version on multiple systems in a number of different configurations.
  
= Octave Job Overview =
+
{{Note|The current status of the builds may be found at http://buildbot.octave.org:8010/#/waterfall.}}
  
The [http://hydra.nixos.org/jobset/gnu/octave-default octave-default jobset overview] page is the main entry point to the Hydra build of Octave. It shows the status of the most recent builds ("evaluations" in Hydra terminology).
+
= Systems and Configurations =
  
= Latest Build Logs =
+
The following systems and configurations are currently covered for Octave builds:
  
The full build logs for the latest builds are available at the following links, for quick reference:
+
{| class="wikitable"
 +
|-
 +
! Builder ID !! Hg Version !! System !! Compiler !! Build Options !! Frequency
 +
|-
 +
| clang-4.0-debian || default || Debian Testing || Clang 4.0 || || Any Change
 +
|-
 +
| stable-clang-4.0-debian || stable || Debian Testing || Clang 4.0 || || Any Change
 +
|-
 +
| clang-5.0-debian || default || Debian Testing || Clang 5.0 || || Any Change
 +
|-
 +
| stable-clang-5.0-debian || stable || Debian Testing || Clang 5.0 || || Any Change
 +
|-
 +
| clang-fedora || default || Fedora (current release) || Clang (system default) || || Any Change
 +
|-
 +
| stable-clang-fedora || stable || Fedora (current release) || Clang (system default) || || Any Change
 +
|-
 +
| clang-osx (currently inactive) || default || OS X || Clang || || Any Change
 +
|-
 +
| gcc-7-debian || default || Debian Testing || GCC 7 || || Any Change
 +
|-
 +
| gcc-7-lto-debian || default || Debian Testing || GCC 7 || Enable link time optimization || Any Change
 +
|-
 +
| gcc-fedora || default || Fedora (current release) || GCC (system default) || || Any Change
 +
|-
 +
| gcc-lto-fedora || default || Fedora (current release) || GCC (system default) || Enable link time optimization || Any Change
 +
|-
 +
| no-extras-debian || default || Debian Testing || GCC (system default) || Disable all optional dependencies || Any Change
 +
|-
 +
| stable-no-extras-debian || stable || Debian Testing || GCC (system default) || Disable all optional dependencies || Any Change
 +
|-
 +
|}
  
* [http://hydra.nixos.org/job/gnu/octave-default/tarball/latest/log/raw Tarball]
+
And for mxe-octave:
* [http://hydra.nixos.org/job/gnu/octave-default/build.x86_64-linux/latest/log/raw Linux x86_64]
 
* [http://hydra.nixos.org/job/gnu/octave-default/build.i686-linux/latest/log/raw Linux i686]
 
* [http://hydra.nixos.org/job/gnu/octave-default/coverage/latest/log/raw Coverage]
 
  
= Snapshot Source Tarball =
+
{| class="wikitable"
 +
|-
 +
! Builder ID !! Hg Version !! Build System !! Host System !! Compiler !! Build Options !! Frequency
 +
|-
 +
| mxe-native-all-on-debian || default || Debian Testing || Debian || GCC (mxe-octave 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
 +
|-
 +
| w32-release-on-debian || release (tarball) || 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-32-release-on-debian || release (tarball) || 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
 +
|-
 +
| w64-64-stable-on-debian || stable || Debian Testing || Windows || GCC (mxe-octave default) || Windows 64, 64-bit indexing || Daily
 +
|-
 +
| w64-64-release-on-debian || release (tarball) || Debian Testing || Windows || GCC (mxe-octave default) || Windows 64, 64-bit indexing || Daily
 +
|-
 +
|}
  
A nice product of the Hydra continuous build of Octave is that there is always a [http://hydra.nixos.org/job/gnu/octave-default/tarball/latest/download source snapshot] available for download. This source snapshot is always built from the current tip of the development branch in whatever state it is in. Therefore, it may not compile or run properly and should definitely not be used for anything other than evaluation. This can be useful to evaluate the current state of Octave's development branch without needing to clone the Mercurial repository.
+
= Setup and run a Buildbot Worker =
  
= Coverage Report =
+
Your system may be behind a firewall.  It does not have to have a distinct public IP address.
  
Another product of the Hydra continuous build is the [http://hydra.nixos.org/job/gnu/octave-default/coverage/latest/download code coverage report]. The latest coverage report is always built from the current tip of the development branch. This report gives an analysis of the code coverage of the current Octave test suite. This can be used to find unexercised code paths and help improve the coverage of Octave's test suite.
+
To support Octave development and run a Buildbot Worker, you must do the following:
  
[[Category:Development]]
+
* Contact the [https://octave.discourse.group/c/maintainers/7 Octave Maintainers on Discourse] to let us know that you wish to provide a system to use as a Buildbot Worker.  We will give you a <code>WORKERNAME</code> and a '''secret''' <code>PASSWORD</code> to configure your Buildbot Worker.
 +
* 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.
 +
* Decide for a <code>BASEDIR</code>.  For example, if the home directory for the buildbot user is {{Path|/var/lib/buildbot}} and your <code>WORKERNAME</code> is set to <code>'debian-x86_64'</code> , then <code>BASEDIR</code> might be {{Path|/var/lib/buildbot/worker/debian-x86_64}}.
 +
* <code>MASTERHOST</code> is <code>buildbot.octave.org</code> and <code>PORT</code> is <code>9989</code>.
 +
* Create the configuration<pre>buildbot-worker create-worker BASEDIR MASTERHOST:PORT WORKERNAME PASSWORD</pre>
 +
* Run buildbot on the worker system, preferably by starting it automatically when your system boots.  It should be running with the buildbot user ID. <pre>buildbot-worker start BASEDIR</pre>
 +
 
 +
== ccache ==
 +
 
 +
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 the Buildbot Master runs commands on the Buildbot Worker.  This directory can have symbolic links like the following:
 +
 
 +
cc      -> /usr/bin/ccache
 +
c++      -> /usr/bin/ccache
 +
gcc      -> /usr/bin/ccache
 +
gfortran -> /usr/bin/ccache
 +
 
 +
They should point to the actual location of ccache if it is not in {{Path|/usr/bin}}.
 +
 
 +
== 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.
 +
 
 +
= External links =
 +
 
 +
* [https://hg.octave.org/octave-buildbot/ Buildbot configuration repository] for http://buildbot.octave.org:8010
 +
 
 +
[[Category:Building]]

Latest revision as of 20:34, 21 September 2020

GNU Octave uses Buildbot to build and test the current development version on multiple systems in a number of different configurations.

Info icon.svg
The current status of the builds may be found at http://buildbot.octave.org:8010/#/waterfall.

Systems and Configurations[edit]

The following systems and configurations are currently covered for Octave builds:

Builder ID Hg Version System Compiler Build Options Frequency
clang-4.0-debian default Debian Testing Clang 4.0 Any Change
stable-clang-4.0-debian stable Debian Testing Clang 4.0 Any Change
clang-5.0-debian default Debian Testing Clang 5.0 Any Change
stable-clang-5.0-debian stable Debian Testing Clang 5.0 Any Change
clang-fedora default Fedora (current release) Clang (system default) Any Change
stable-clang-fedora stable Fedora (current release) Clang (system default) Any Change
clang-osx (currently inactive) default OS X Clang Any Change
gcc-7-debian default Debian Testing GCC 7 Any Change
gcc-7-lto-debian default Debian Testing GCC 7 Enable link time optimization Any Change
gcc-fedora default Fedora (current release) GCC (system default) Any Change
gcc-lto-fedora default Fedora (current release) GCC (system default) Enable link time optimization Any Change
no-extras-debian default Debian Testing GCC (system default) Disable all optional dependencies Any Change
stable-no-extras-debian stable Debian Testing GCC (system default) Disable all optional dependencies Any Change

And for mxe-octave:

Builder ID Hg Version Build System Host System Compiler Build Options Frequency
mxe-native-all-on-debian default Debian Testing Debian GCC (mxe-octave 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
w32-release-on-debian release (tarball) 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-32-release-on-debian release (tarball) 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
w64-64-stable-on-debian stable Debian Testing Windows GCC (mxe-octave default) Windows 64, 64-bit indexing Daily
w64-64-release-on-debian release (tarball) Debian Testing Windows GCC (mxe-octave default) Windows 64, 64-bit indexing Daily

Setup and run a Buildbot Worker[edit]

Your system may be behind a firewall. It does not have to have a distinct public IP address.

To support Octave development and run a Buildbot Worker, you must do the following:

  • Contact the Octave Maintainers on Discourse to let us know that you wish to provide a system to use as a Buildbot Worker. We will give you a WORKERNAME and a secret PASSWORD to configure your Buildbot Worker.
  • 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.
  • Decide for a BASEDIR. For example, if the home directory for the buildbot user is /var/lib/buildbot and your WORKERNAME is set to 'debian-x86_64' , then BASEDIR might be /var/lib/buildbot/worker/debian-x86_64.
  • MASTERHOST is buildbot.octave.org and PORT is 9989.
  • Create the configuration
    buildbot-worker create-worker BASEDIR MASTERHOST:PORT WORKERNAME PASSWORD
  • Run buildbot on the worker system, preferably by starting it automatically when your system boots. It should be running with the buildbot user ID.
    buildbot-worker start BASEDIR

ccache[edit]

You may also want to set up ccache to work with buildbot (strongly recommended to speed up builds). If you create a directory ~/buildbot/bin, it will be added to the execution PATH when the Buildbot Master runs commands on the Buildbot Worker. This directory can have symbolic links like the following:

cc       -> /usr/bin/ccache
c++      -> /usr/bin/ccache
gcc      -> /usr/bin/ccache
gfortran -> /usr/bin/ccache

They should point to the actual location of ccache if it is not in /usr/bin.

Space Requirements[edit]

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

External links[edit]