dbfabcc42bf226305ed74d6de37ff4efd25db805
[buildfarm-client.git] / build-farm.conf.template
1
2 # -*-perl-*- hey - emacs - this is a perl file
3
4 =comment
5
6 Copyright (c) 2003-2010, Andrew Dunstan
7
8 See accompanying License file for license details
9
10 =cut 
11
12 package EximBuild;
13
14 use strict;
15
16 use vars qw(%conf);
17
18 # use vars qw($VERSION); $VERSION = 'REL_0.1';
19
20 my $branch;
21 {
22     no warnings qw(once);
23     $branch = $main::branch;
24 }
25
26 # This template assumes that the user running the buildfarm process is "farm"
27 %conf =(
28     scm => 'git',
29     # default is github mirror of Exim
30     scmrepo => 'https://github.com/Exim/exim.git',
31     # Wishlist for future, track and build from multiple repos.
32     # Doesn't do anything yet.
33     repos => {
34       'exim' => 'git://www.mrball.net/exim/exim.git',
35       'exim.jgh' => 'git://www.mrball.net/exim/exim-jgh.git',
36       'exim.pdp' => 'git://www.mrball.net/exim/exim-pdp.git',
37       'exim.tlyons' => 'git://www.mrball.net/exim/exim-tlyons.git',
38     },
39     # webref for diffs on server - use default for community
40     scm_url => undef,
41     # for --reference on git repo
42     # git_reference => undef,
43     # or gmake if required. can include path if necessary.
44     make => 'make',
45     # 1 = any make will do, 0 = require GNU (default)
46     non_gnu_make => 0,
47     # >1 for parallel "make" and "make check" steps
48     make_jobs => undef,
49     # default is "tar -z -cf runlogs.tgz *.log"
50     # replacement must have the same effect
51     # must be absolute, can be either Unix or Windows style for MSVC
52     tar_log_cmd => undef,
53     # this directory must exist before anything will work
54     build_root => '/home/farm/buildfarm',
55     # set true to do vpath builds
56     use_vpath => undef,
57
58     keep_error_builds => 0,
59     # Linux style, use "*.core" for BSD
60     core_file_glob => "core*",
61
62     # build process will connect to this URL to upload results
63     target => "http://eximbuild.mrball.net/cgi-bin/eximstatus.pl",
64     # update_personality uses this when you want to update your
65     # machine's info (OS, version, compiler, version)
66     upgrade_target => "http://eximbuild.mrball.net/cgi-bin/upgrade.pl",
67
68     # Your host alias and password in the BuildFarm
69     animal => "alias_assigned_by_build_team",
70     secret => "secret_assigned_by_build_team",
71
72     # if force_every is a scalar it will be used on all branches, like this
73     # for legacy reasons:
74     # force_every => 336 , # max hours between builds, undef or 0 = unforced
75     # we now prefer it to be a hash with branch names as the keys, like this
76     #
77     # this setting should be kept conservatively high, or not used at all  -
78     # for the most part it's best to let the script decide if something
79     # has changed that requires a new run for the branch.
80     #
81     # an entry with a name of 'default' matches any branch not named
82     force_every => {
83         HEAD => 24*7,
84         # default => 168,
85     },
86
87     # alerts are triggered if the server doesn't see a build on a branch after
88     # this many hours, and then sent out every so often,
89     alerts => {
90         #HEAD          => { alert_after => 72,  alert_every => 24 },
91     },
92
93     print_success => undef,
94
95     # include / exclude pattern for files whose trigger a build
96     # if both are specified then they are both applied as filters
97     # undef means don't ignore anything.
98     # exclude qr[/(doc|po)/] to ignore changes to docs and po files (recommended)
99     # undef means null filter.
100     trigger_exclude => qr[/(doc|po)/],
101     trigger_include => undef,
102
103     # settings for mail notices - default to notifying nobody
104     # these lists contain addresses to be notified
105     # must be complete email addresses, as the email is sent from the server
106     mail_events =>{
107         all => [], # unconditional
108         fail => [], # if this build fails
109         change => [], # if this build causes a state change
110         green => [], # if this build causes a state change to/from OK
111     },
112
113     # env settings to apply within build/report process
114     # these settings will be seen by all the processes, including the
115     # configure process.
116     build_env =>{
117         # use a dedicated cache for the build farm. this should give us
118         # very high hit rates and slightly faster cache searching.
119         CCACHE_DIR => "/home/farm/buildfarm/ccache/$branch",
120
121         ### set this if you need a proxy setting for the
122         # outbound web transaction that reports the results
123         # BF_PROXY => 'http://my.proxy.server:portnum/',
124     },
125
126     # Environment settings on the make commandline.
127     # These cause full compile output and don't strip the binary.
128     make_args => q/FULLECHO='' STRIP_COMMAND=''/,
129
130     # Settings to add to Local/Makefile. These will set or override
131     # previous definitions of variables.  Example:
132     # LDFLAGS => '-Wall' will create LDFLAGS = '-Wall'
133     makefile_set =>{
134         # comment out if not using ccache
135         CC => 'ccache gcc',
136         # Required for some tests to pass
137         AUTH_PLAINTEXT => 'yes',
138         SUPPORT_MAILDIR => 'yes',
139         # Other examples. Could use makefile_regex instead.
140         #SUPPORT_TLS => 'yes',
141         #USE_OPENSSL_PC => 'openssl',
142         #TLS_LIBS => '-lssl -lcrypto',
143         #EXPERIMENTAL_SPF => 'yes',
144         #LOOKUP_LDAP => 'yes',
145         #LOOKUP_INCLUDE => '-I/usr/include/mysql',
146         #LOOKUP_LIBS => '-lmysqlclient -lpq -lldap -llber',
147         #LDAP_LIB_TYPE => 'OPENLDAP2',
148     },
149     # Settings to add to Local/Makefile. These will add to variables that
150     # are already defined earlier in the Makefile.  Example:
151     # LDFLAGS => '-Wall'  will create  LDFLAGS+='-Wall'
152     makefile_add =>{
153         # Show all warnings and errors
154         CFLAGS => '-Wall -Werror=format-security',
155         # Or enable debugging flags
156         #CFLAGS => '-g -Wall',
157         #LFLAGS => '-g',
158         # If set EXPERIMENTAL_SPF above, add it to the linker:
159         #LDFLAGS => '-lspf2',
160     },
161
162     # Another way to enable things in the Local/Makefile.
163     # Use a simple regex to change a default to what you want.
164     makefile_regex =>[
165         # If have perl devel libraries installed, can build embedded perl
166         #q(s/^# EXIM_PERL=/EXIM_PERL=/),
167         # If have mysql devel libraries installed
168         #q(s/^# LOOKUP_MYSQL=/LOOKUP_MYSQL=/),
169         # If have postgres devel librarires installed
170         #q(s/^# LOOKUP_PGSQL=/LOOKUP_PGSQL=/),
171
172         #q(s/^# EXPERIMENTAL_CERTNAMES.*/EXPERIMENTAL_CERTNAMES=yes/),
173         #q(s/^# EXPERIMENTAL_DNSSEC.*/EXPERIMENTAL_DNSSEC=yes/),
174         # Proxy causes some extra debug output messing with tests
175         #q(s/^# EXPERIMENTAL_PROXY.*/EXPERIMENTAL_PROXY=yes/),
176         #q(s/^# EXPERIMENTAL_TPDA.*/EXPERIMENTAL_TPDA=yes/),
177     ],
178
179     # The user compiled as the master exim username.
180     # Requirement: The buildfarm user that runs the build farm script *MUST* have
181     # the group of the exim user as a secondary group. Example:
182     # user=>farm, group=>farm, secondary_groups=>exim
183     # user=>exim, group=>exim
184     master_exim_user => "exim",
185
186     # Range of tests to run if enable make_test in optional steps.
187     #range_num_tests => '1 999',
188     range_num_tests => '1 999',
189     # Hardcode some valid version for use during make test
190     exim_test_version => '4.80',
191
192     optional_steps =>{
193         # which optional steps to run and when to run them
194         # 'make-doc' => {min_hours_since => 24*7},
195         test  => {min_hours_since => 24*7},
196     },
197
198     # locales to test
199     locales => [qw( C )],
200
201     # Placemarker for auto-generated build features
202     config_opts =>[
203         qw()
204     ],
205
206     # per-branch contents of extra config for check stages.
207     # each branch has an array of setting lines (no \n required)
208     # a DEFAULT entry is used for all branches, before any
209     # branch-specific settings.
210     extra_config =>{
211         DEFAULT => [
212             #q(log_line_prefix = '[%c:%l] '),
213             #"log_connections = 'true'",
214             #"log_disconnections = 'true'",
215             #"log_statement = 'all'",
216             #"fsync = off"
217         ],
218     },
219
220     # Unused
221     # port number actually used will be based on this param and the branch,
222     # so we ensure they don't collide
223     base_port => 5678,
224
225     # Unused
226     modules => [qw(TestUpgrade)],
227
228 );
229
230 if ($branch eq 'global')
231 {
232
233     $conf{branches_to_build} = 'ALL';
234
235     # or 'HEAD_PLUS_LATEST' or 'HEAD_PLUS_LATEST2'
236     # or [qw( HEAD RELx_y_STABLE etc )]
237
238 }
239
240 ##################################
241 #
242 # Can use perl below for
243 # per branch processing.
244 #
245 ##################################
246
247 1;