Changes

Jump to navigation Jump to search
4,778 bytes added ,  21:37, 4 November 2019
m
There is a build server continuously building the latest tip of the development branch of Octave. The build server is running We are using [httphttps://nixosbuildbot.orgnet/hydra/ HydraBuildbot], which is based on the [http://nixos.org/nix/ Nix] functional package management system. This is the official continuous to build system of and test the GNU Project. The Hydra build current development version of Octave is currently maintained by [[User:Mtmiller]]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-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|-|}
* [http://hydra.nixos.org/job/gnu/octaveAnd for mxe-default/tarball/latest/log/raw Tarball]* [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]
{| class= Snapshot Source Tarball ="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|-|}
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.= Build Slave Configuration =
= Coverage Report =To run a build slave for Octave, you must do the following:
Another product of the Hydra continuous build is * Contact the [httpmailto://hydra.nixosoctave-maintainers@gnu.org/job/gnu/octave-default/coverage/latest/download code coverage reportOctave 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. The latest coverage report is always built from See the current tip of the development branchbuildbot 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). This report gives an analysis of * Run buildbot on the code coverage of the current Octave test suiteslave system, preferably by starting it automatically when your system boots. This can It should be used to find unexercised code paths and help improve running with the coverage of Octave's test suitebuildbot 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 BuildSlavefrom twisted.application import service basedir = '/PATH/TO/DIRECTORY/CONTAINING/THIS/CONFIGURATION/FILE'rotateLength = 10000000maxRotatedFiles = 10 # if this is a relocatable tac file, get the directory containing the TACif 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 = 9989slavename = 'SLAVE-NAME'passwd = 'PASSWORD'keepalive = 600usepty = 0umask = Nonemaxdelay = 300allow_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:DevelopmentBuilding]]

Navigation menu