Quote parameter in template
[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 for parallel "make" and "make check" steps
46     make_jobs => undef,
47     # default is "tar -z -cf runlogs.tgz *.log"
48     # replacement must have the same effect
49     # must be absolute, can be either Unix or Windows style for MSVC
50     tar_log_cmd => undef,
51     # this directory must exist before anything will work
52     build_root => '/home/farm/buildfarm',
53     # set true to do vpath builds
54     use_vpath => undef,
55
56     keep_error_builds => 0,
57     # Linux style, use "*.core" for BSD
58     core_file_glob => "core*",
59
60     # build process will connect to this URL to upload results
61     target => "http://eximbuild.mrball.net/cgi-bin/eximstatus.pl",
62     # update_personality uses this when you want to update your
63     # machine's info (OS, version, compiler, version)
64     upgrade_target => "http://eximbuild.mrball.net/cgi-bin/upgrade.pl",
65
66     # Your host alias and password in the BuildFarm
67     animal => "alias_assigned_by_build_team",
68     secret => "secret_assigned_by_build_team",
69
70     # if force_every is a scalar it will be used on all branches, like this
71     # for legacy reasons:
72     # force_every => 336 , # max hours between builds, undef or 0 = unforced
73     # we now prefer it to be a hash with branch names as the keys, like this
74     #
75     # this setting should be kept conservatively high, or not used at all  -
76     # for the most part it's best to let the script decide if something
77     # has changed that requires a new run for the branch.
78     #
79     # an entry with a name of 'default' matches any branch not named
80     force_every => {
81         HEAD => 24*7,
82         # default => 168,
83     },
84
85     # alerts are triggered if the server doesn't see a build on a branch after
86     # this many hours, and then sent out every so often,
87     alerts => {
88         #HEAD          => { alert_after => 72,  alert_every => 24 },
89     },
90
91     print_success => undef,
92
93     # include / exclude pattern for files whose trigger a build
94     # if both are specified then they are both applied as filters
95     # undef means don't ignore anything.
96     # exclude qr[/(doc|po)/] to ignore changes to docs and po files (recommended)
97     # undef means null filter.
98     trigger_exclude => qr[/(doc|po)/],
99     trigger_include => undef,
100
101     # settings for mail notices - default to notifying nobody
102     # these lists contain addresses to be notified
103     # must be complete email addresses, as the email is sent from the server
104     mail_events =>{
105         all => [], # unconditional
106         fail => [], # if this build fails
107         change => [], # if this build causes a state change
108         green => [], # if this build causes a state change to/from OK
109     },
110
111     # env settings to apply within build/report process
112     # these settings will be seen by all the processes, including the
113     # configure process.
114     build_env =>{
115         # use a dedicated cache for the build farm. this should give us
116         # very high hit rates and slightly faster cache searching.
117         CCACHE_DIR => "/home/farm/buildfarm/ccache/$branch",
118
119         ### set this if you need a proxy setting for the
120         # outbound web transaction that reports the results
121         # BF_PROXY => 'http://my.proxy.server:portnum/',
122     },
123
124     # Environment settings on the make commandline.
125     # These cause full compile output and don't strip the binary.
126     make_args => q/FULLECHO='' STRIP_COMMAND=''/,
127
128     # Settings to add to Local/Makefile. These will set or override
129     # previous definitions of variables.  Example:
130     # LDFLAGS => '-Wall' will create LDFLAGS = '-Wall'
131     makefile_set =>{
132         # comment out if not using ccache
133         CC => 'ccache gcc',
134         # Other examples. Could use makefile_regex instead.
135         #SUPPORT_TLS => 'yes',
136         #TLS_LIBS => '-lssl -lcrypto',
137     },
138     # Settings to add to Local/Makefile. These will add to variables that
139     # are already defined earlier in the Makefile.  Example:
140     # LDFLAGS => '-Wall'  will create  LDFLAGS+='-Wall'
141     makefile_add =>{
142         # Show all warnings and errors
143         CFLAGS => '-Wall -Werror=format-security',
144         # Or enable debugging flags
145         #CFLAGS => '-g -Wall',
146         #LFLAGS => '-g',
147     },
148
149     # Another way to enable things in the Local/Makefile.
150     # Use a simple regex to change a default to what you want.
151     makefile_regex =>[
152         #q(s/^# EXPERIMENTAL_PRDR.*/EXPERIMENTAL_PRDR=yes/),
153     ],
154
155     # The user compiled as the master exim username.
156     # Requirement: The buildfarm user that runs the build farm script *MUST* have
157     # the group of the exim user as a secondary group. Example:
158     # user=>farm, group=>farm, secondary_groups=>exim
159     # user=>exim, group=>exim
160     master_exim_user => "exim",
161
162     # Range of tests to run if enable make_test in optional steps.
163     #range_num_tests => '1 999',
164     range_num_tests => '1 999',
165     # Hardcode some valid version for use during make test
166     exim_test_version => '4.80',
167
168     optional_steps =>{
169         # which optional steps to run and when to run them
170         # 'make-doc' => {min_hours_since => 24*7},
171         test  => {min_hours_since => 24*7},
172     },
173
174     # locales to test
175     locales => [qw( C )],
176
177     # Placemarker for auto-generated build features
178     config_opts =>[
179         qw()
180     ],
181
182     # per-branch contents of extra config for check stages.
183     # each branch has an array of setting lines (no \n required)
184     # a DEFAULT entry is used for all branches, before any
185     # branch-specific settings.
186     extra_config =>{
187         DEFAULT => [
188             #q(log_line_prefix = '[%c:%l] '),
189             #"log_connections = 'true'",
190             #"log_disconnections = 'true'",
191             #"log_statement = 'all'",
192             #"fsync = off"
193         ],
194     },
195
196     # Unused
197     # port number actually used will be based on this param and the branch,
198     # so we ensure they don't collide
199     base_port => 5678,
200
201     # Unused
202     modules => [qw(TestUpgrade)],
203
204 );
205
206 if ($branch eq 'global')
207 {
208
209     $conf{branches_to_build} = 'ALL';
210
211     # or 'HEAD_PLUS_LATEST' or 'HEAD_PLUS_LATEST2'
212     # or [qw( HEAD RELx_y_STABLE etc )]
213
214 }
215
216 ##################################
217 #
218 # Can use perl below for
219 # per branch processing.
220 #
221 ##################################
222
223 1;