Re: Buildfarm support for older versions

From: Larry Rosenman <ler(at)lerctr(dot)org>
To: Andrew Dunstan <andrew(at)dunslane(dot)net>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Buildfarm support for older versions
Date: 2021-12-24 01:09:35
Message-ID: 3dbed5a342935ffe8e79f84576b78764@lerctr.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 12/23/2021 11:58 am, Andrew Dunstan wrote:

>
> Oh, you need to be building with the buildfarm client's git tip, not
> the
> released code. Alternatively, apply this patch:
>
>
> https://github.com/PGBuildFarm/client-code/commit/75c762ba74fdec96ebf6c2433d61d3eeead825c3
>
>

with git tip:
output attached.

I can give access if needed.

$ grep -v secret conf/gerenuk.conf
# -*-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 warnings FATAL => 'qw';

use vars qw(%conf);

# use vars qw($VERSION); $VERSION = 'REL_4.19';

my $branch;
{
no warnings qw(once);
$branch = $main::branch;
}

%conf =(

# identity
animal => "gerenuk",

# source code
scm => 'git', # or 'cvs'
git_keep_mirror => 1, # manage a git mirror in the build root
git_ignore_mirror_failure => 1, # ignore failures in fetching to
mirror

# use symlinked git repo from non-HEAD branches,
# like git-new-workdir does
git_use_workdirs => 1,

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

# external commands and control
make => 'gmake', # or gmake if required. can include path if
necessary.
make_jobs => 10, # >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

# max time in seconds allowed for a single branch run
# undef/0 means unlimited
wait_timeout => undef,

# where and how to build
# must be absolute, can be either Unix or Windows style for MSVC
# undef means default, buildroot dir in script directory
build_root => '/home/pgbuildfarm/buildroot', , # or
'/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
# Now only used on older Msys installations
# aux_path => "../..",

keep_error_builds => 0,
core_file_glob => "*.core*", # Linux style, use "*.core" for BSD

# where to report status
target => "https://buildfarm.postgresql.org/cgi-bin/pgstatus.pl",

# where to report change in OS version or compiler version
upgrade_target =>
"https://buildfarm.postgresql.org/cgi-bin/upgrade.pl",

# 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 },
},

# include / exclude patterns for files that 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 => ["ler\(at)lerctr(dot)org"], # if this build fails
change => ["ler\(at)lerctr(dot)org"], # if this build causes a state
change
green => ["ler\(at)lerctr(dot)org"], # if this build causes a state
change to/from OK
},

# if this flag is set and ccache is used, an unsuccessful run will
result
# in the removal of the ccache directory (and you need to make sure
that
# its parent is writable). The default is off - ccache should be
able to
# handle failures, although there have been suspicions in the past
that
# it's not quite as reliable as we'd want, and thus we have this
option.

ccache_failure_remove => undef,

# set this if you want to use ccache with the default ccache
directory
# location, effectively $buildroot/ccache-$animal.

use_default_ccache_dir => 0,

# 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.
#
# only set this if you want to set your own path for the ccache
# directory
#CCACHE_DIR => "/home/pgbuildfarm/misc/ccache",

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

# possibly set this to something high if you get pg_ctl failures
# default is 120
# PGCTLTIMEOUT => '120',
INCLUDES=>"-I/usr/local/include",
LDFLAGS=>"-L/usr/local/lib",

},

# env settings to pass to configure. These settings will only be
seen by
# configure.
config_env =>{

# comment out if not using ccache
# CC => 'ccache clang',
CFLAGS => '-O2 -fPIC',
},

# 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-tap-tests
--with-perl
)
],

# 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 = '%m [%p:%l] %q%a '),
"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(TestUpgrade TestDecoding)],

#
);

if ($branch eq 'global')
{

$conf{branches_to_build} = [qw( REL9_2_STABLE REL9_3_STABLE
REL9_4_STABLE
REL9_5_STABLE REL9_6_STABLE)]

# or 'HEAD_PLUS_LATEST' or 'HEAD_PLUS_LATEST2'
# or [qw( HEAD RELx_y_STABLE etc )]

# set this if you are running multiple animals and want them
coordinated

# $conf{global_lock_dir} = '/path/to/lockdir';

}

# 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.
#
##################################
if ($branch eq 'HEAD')
{

# push(@{$conf{config_opts}},"--enable-depend");
}
elsif ($branch =~ /^REL7_/)
{

# push(@{$conf{config_opts}},"--without-tk");
}

1;
$

--
Larry Rosenman http://www.lerctr.org/~ler
Phone: +1 214-642-9640 E-Mail: ler(at)lerctr(dot)org
US Mail: 5708 Sabbia Dr, Round Rock, TX 78665-2106

Attachment Content-Type Size
gerenuk.out text/plain 5.8 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Kapila 2021-12-24 02:59:22 Re: parallel vacuum comments
Previous Message Peter Smith 2021-12-24 00:41:47 Inconsistent ellipsis in regression test error message?