Re: Buildfarm support for older versions - Mailing list pgsql-hackers

From Larry Rosenman
Subject Re: Buildfarm support for older versions
Date
Msg-id 3dbed5a342935ffe8e79f84576b78764@lerctr.org
Whole thread Raw
In response to Re: Buildfarm support for older versions  (Andrew Dunstan <andrew@dunslane.net>)
List 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\@lerctr.org"], # if this build fails
         change => ["ler\@lerctr.org"], # if this build causes a state 
change
         green => ["ler\@lerctr.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@lerctr.org
US Mail: 5708 Sabbia Dr, Round Rock, TX 78665-2106

Attachment

pgsql-hackers by date:

Previous
From: Peter Smith
Date:
Subject: Inconsistent ellipsis in regression test error message?
Next
From: Amit Kapila
Date:
Subject: Re: parallel vacuum comments