forked from PGBuildFarm/client-code
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild-farm.conf
More file actions
312 lines (243 loc) · 10.2 KB
/
build-farm.conf
File metadata and controls
312 lines (243 loc) · 10.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
# -*-perl-*- hey - emacs - this is a perl file
=comment
Copyright (c) 2003-2010, Andrew Dunstan
See accompanying License file for license details
=cut
package PGBuild;
use strict;
use vars qw(%conf);
# use vars qw($VERSION); $VERSION = 'REL_4.7';
my $branch;
{
no warnings qw(once);
$branch = $main::branch;
}
%conf =(
scm => 'git', # or 'cvs'
scmrepo => undef, # default is community repo for either type
scm_url => undef, # webref for diffs on server - use default for community
# git_reference => undef, # for --reference on git repo
# cvsmethod => 'update', # or 'export'
use_git_cvsserver => undef, # or 'true' if repo is a git cvsserver
make => 'make', # or gmake if required. can include path if necessary.
make_jobs => undef, # >1 for parallel "make" and "make check" steps
tar_log_cmd => undef, # default is "tar -z -cf runlogs.tgz *.log"
# replacement must have the same effect
# must be absolute, can be either Unix or Windows style for MSVC
build_root => '/path/to/buildroot',
use_vpath => undef, # set true to do vpath builds
# path to directory with auxiliary web script
# if relative, the must be relative to buildroot/branch
# possibly only necessary now on WIndows, if at all
aux_path => "../..",
keep_error_builds => 0,
target => "http://www.pgbuildfarm.org/cgi-bin/pgstatus.pl",
upgrade_target => "http://www.pgbuildfarm.org/cgi-bin/upgrade.pl",
animal => "CHANGEME",
secret => "CHANGEME",
# change this to a true value if using MSVC, in which case also
# see MSVC section below
using_msvc => undef,
# if force_every is a scalar it will be used on all branches, like this
# for legacy reasons:
# force_every => 336 , # max hours between builds, undef or 0 = unforced
# we now prefer it to be a hash with branch names as the keys, like this
#
# this setting should be kept conservatively high, or not used at all -
# for the most part it's best to let the script decide if something
# has changed that requires a new run for the branch.
#
# an entry with a name of 'default' matches any branch not named
force_every => {
# HEAD => 48,
# REL8_3_STABLE => 72,
# default => 168,
},
# alerts are triggered if the server doesn't see a build on a branch after
# this many hours, and then sent out every so often,
alerts => {
#HEAD => { alert_after => 72, alert_every => 24 },
# REL8_1_STABLE => { alert_after => 240, alert_every => 48 },
},
print_success => undef,
# include / exclude pattern for files whose trigger a build
# if both are specified then they are both applied as filters
# undef means don't ignore anything.
# exclude qr[/(doc|po)/] to ignore changes to docs and po files (recommended)
# undef means null filter.
trigger_exclude => qr[/(doc|po)/],
trigger_include => undef,
# settings for mail notices - default to notifying nobody
# these lists contain addresses to be notified
# must be complete email addresses, as the email is sent from the server
mail_events =>{
all => [], # unconditional
fail => [], # if this build fails
change => [], # if this build causes a state change
green => [], # if this build causes a state change to/from OK
},
# env settings to apply within build/report process
# these settings will be seen by all the processes, including the
# configure process.
build_env =>{
# use a dedicated cache for the build farm. this should give us
# very high hit rates and slightly faster cache searching.
CCACHE_DIR => "/home/andrew/pgfarmbuild/ccache/$branch",
### use these settings for CYGWIN
# CYGWIN => 'server',
# MAX_CONNECTIONS => '3',
### set this if you need a proxy setting for the
# outbound web transaction that reports the results
# BF_PROXY => 'http://my.proxy.server:portnum/',
# see below for MSVC settings
},
# env settings to pass to configure. These settings will only be seen by
# configure.
config_env =>{CC => 'ccache gcc',},
# don't use --prefix or --with-pgport here
# they are set up by the script
# per-branch config can be done here or
# more simply by using the examples below.
# (default ldap flag is below because it's not supported in all branches)
# see below for MSVC config
config_opts =>[
qw(
--enable-cassert
--enable-debug
--enable-nls
--enable-integer-datetimes
--with-perl
--with-python
--with-tcl
--with-krb5 --with-includes=/usr/include/et
--with-openssl
)
],
# per-branch contents of extra config for check stages.
# each branch has an array of setting lines (no \n required)
# a DEFAULT entry is used for all branches, before any
# branch-specific settings.
extra_config =>{
DEFAULT => [
q(log_line_prefix = '[%c:%l] '),
"log_connections = 'true'",
"log_disconnections = 'true'",
"log_statement = 'all'",
"fsync = off"
],
},
optional_steps =>{
# which optional steps to run and when to run them
# valid keys are: branches, dow, min_hours_since, min_hour, max_hour
# find_typedefs => { branches => ['HEAD'], dow => [1,4],
# min_hours_since => 25 },
# build_docs => {min_hours_since => 24},
},
# locales to test
locales => [qw( C )],
# port number actually used will be based on this param and the branch,
# so we ensure they don't collide
base_port => 5678,
# modules => [ qw(Skeleton) ],
#
);
if ($branch eq 'global')
{
# $conf{branches_to_build} = 'ALL'; # or [qw( HEAD RELx_y_STABLE etc )]
}
# MSVC setup
if ($conf{using_msvc})
{
# all this stuff is to support MSVC builds - it's literally what
# a VS Command Prompt sets for me.
# make sure it's what your sets for you. There can be subtle differences.
# Note: we need to set here whatever would be set in buildenv.bat, as
# we aren't going to write that file. This supercedes it. In
# particular, the PATH possibly needs to include the path to perl, bison,
# flex etc., as well as CVS if that's not in the path.
my %extra_buildenv =(
VSINSTALLDIR => 'C:\Program Files\Microsoft Visual Studio 8',
VCINSTALLDIR => 'C:\Program Files\Microsoft Visual Studio 8\VC',
VS80COMNTOOLS =>
'C:\Program Files\Microsoft Visual Studio 8\Common7\Tools',
FrameworkDir => 'C:\WINDOWS\Microsoft.NET\Framework',
FrameworkVersion => 'v2.0.50727',
FrameworkSDKDir =>'C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0',
DevEnvDir => 'C:\Program Files\Microsoft Visual Studio 8\Common7\IDE',
PATH => join(';',
'C:\Program Files\Microsoft Visual Studio 8\Common7\IDE',
'C:\Program Files\Microsoft Visual Studio 8\VC\BIN',
'C:\Program Files\Microsoft Visual Studio 8\Common7\Tools',
'C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\bin',
'C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\bin',
'C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin',
'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727',
'C:\Program Files\Microsoft Visual Studio 8\VC\VCPackages',
'C:\Perl\Bin',
'c:\prog\pgdepend\bin',
$ENV{PATH}),
INCLUDE => join(';',
'C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\INCLUDE',
'C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE',
'C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include',
'C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include',
$ENV{INCLUDE}),
LIB => join(';',
'C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB',
'C:\Program Files\Microsoft Visual Studio 8\VC\LIB'
.'C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib',
'C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib'
.$ENV{LIB}),
LIBPATH => join(';',
'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727',
'C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB'),
);
%{$conf{build_env}} = (%{$conf{build_env}}, %extra_buildenv);
# MSVC needs a somewhat different style of config opts (why??)
# What we write here will be literally (via Data::Dumper) put into
# the config.pl file for the MSVC build.
$conf{config_opts} ={
asserts=>1, # --enable-cassert
integer_datetimes=>1, # --enable-integer-datetimes
nls=>undef, # --enable-nls=<path>
tcl=>'c:\tcl', # --with-tcl=<path>
perl=>'c:\perl', # --with-perl=<path>
python=>'c:\python25', # --with-python=<path>
krb5=> undef, # --with-krb5=<path>
ldap=>0, # --with-ldap
openssl=> undef, # --with-ssl=<path>
xml=> undef, # --with-libxml=<path>
xslt=> undef, # --with-libxslt=<path>,
iconv=> undef, # path to iconv library
zlib=> undef, # --with-zlib=<path>
};
}
##################################
#
# examples of per branch processing
# tailor as required for your site.
#
##################################
# ldap support is new as of 8.2
if ($branch eq 'HEAD' || $branch ge 'REL8_2')
{
# msvc can set it up separately - see above
push(@{$conf{config_opts}},"--with-ldap")
unless $conf{using_msvc};
}
# libxml/libxslt support as of 8.3
if ($branch eq 'HEAD' || $branch ge 'REL8_3')
{
# msvc can set it up separately - see above
push(@{$conf{config_opts}},"--with-libxml", "--with-libxslt")
unless $conf{using_msvc};
}
if ($branch eq 'HEAD')
{
# push(@{$conf{config_opts}},"--enable-depend");
}
elsif ($branch =~ /^REL7_/)
{
# push(@{$conf{config_opts}},"--without-tk");
}
1;