Thread: HELP -- what am I missing?

HELP -- what am I missing?

From
Larry Rosenman
Date:
Given the below config, why is this failing?

playbox% ./run_branches.pl --nosend --nostatus --verbose  --run-all
syntax error at ./build-farm.conf line 405, near "# testset1 => { url => 
"git"
Global symbol "@somewhere" requires explicit package name (did you 
forget to declare "my @somewhere"?) at ./build-farm.conf line 405.
Global symbol "@somewhere" requires explicit package name (did you 
forget to declare "my @somewhere"?) at ./build-farm.conf line 408.
Unknown regexp modifier "/M" at ./build-farm.conf line 408, at end of 
line
Unknown regexp modifier "/r" at ./build-farm.conf line 408, at end of 
line
Unknown regexp modifier "/f" at ./build-farm.conf line 408, at end of 
line
Unknown regexp modifier "/t" at ./build-farm.conf line 408, at end of 
line
Unknown regexp modifier "/B" at ./build-farm.conf line 408, at end of 
line
Regexp modifiers "/u" and "/l" are mutually exclusive at 
./build-farm.conf line 408, at end of line
Regexp modifiers "/u" and "/d" are mutually exclusive at 
./build-farm.conf line 408, at end of line
./build-farm.conf has too many errors.
Compilation failed in require at ./run_branches.pl line 86.
playbox%

# -*-perl-*- hey - emacs - this is a perl file

=comment

Copyright (c) 2003-2022, Andrew Dunstan

See accompanying License file for license details

=cut

package PGBuild;    ## no critic (RequireFilenameMatchesPackage)

use strict;

use warnings FATAL => 'qw';

our (%conf);

# our($VERSION); $VERSION = 'REL_17';

my $branch;
{
    no warnings 'once';
    $branch = $main::branch;
}


# useful for making settings relative to the config file location
# all the clients should have used these two standard packages
my $confdir = File::Spec->rel2abs(File::Basename::dirname(__FILE__));

# to force from-source in the directory where this config file is 
located,
# uncomment the line below. See also buildroot below
# $PGBuild::Options::from_source = $confdir;

%conf = (

    # identity
    animal => "anaconda",
    secret => "<elided>",

    # 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
    git_gc_hours => 7 * 24,    # garbage collect once a week, 0/undef to 
disable

    # use symlinked git repo from non-HEAD branches, like git-new-workdir 
does
    # Ony supported on Windows if the user has "Create Symbolic Links"
    # privilege. See
    # https://github.com/git-for-windows/git/wiki/Symbolic-Links
    git_use_workdirs => 1,

    # remove work trees between runs, saves disk space
    rm_worktrees => 1,

    # check if the default git branch name has changed
    skip_git_default_check => undef,

    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

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

    # archive this many copies of the report summary
    archive_reports => undef,

    # if on, print the whole web request object if there is a web error
    show_error_request => undef,

    # Only works if the Unix::Uptime module is available
    # inhibits a run if > 0 and the load average in last 1 minute or 5 
minutes
    # has been greater than this
    max_load_avg => undef,

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

    # if true run installcheck-parallel instead of installcheck
    use_installcheck_parallel => 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
    # "$confdir/buildroot" means buildroot in the config file's directory,
    # which is useful for auto from-source setups
    build_root => undef,    #  or '/path/to/buildroot',
    use_vpath => undef,     # set true to do vpath builds

    # valgrind settings - default is don't use valgrind
    # It will use the .supp file in the source code    so that's not in the
    # options here.
    use_valgrind => undef,
    valgrind_options => join(
        ' ', qw{--quiet --trace-children=yes
          --track-origins=yes --read-var-info=yes --num-callers=20
          --leak-check=no --gen-suppressions=all   --error-limit=no}
    ),

    # if true run tests with debug_discard_caches=1, or the equivalent
    # on older branches. Do not set CLOBBER_CACHE_ALWAYS if you use this.
    use_discard_caches => undef,

    # 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*",    # should work for both Linux and *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,
        # 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 },
        # REL_10_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 => ["ler\@lerctr.org"],       # 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
    },

    # 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 => 1,

    # set this to allow caching of the configure script's results

    use_accache => 1,

    # 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 => "/path/to/your/ccache",

        ### use these settings for Cygwin - adjust dumper path to be correct
        ## see https://cygwin.org/cygwin-ug-net/using-cygwinenv.html
        # CYGWIN => 'error_start=c:\cygwin\bin\dumper.exe -d %1 %2',

        ## Cygwin is known to choke on many concurrent connections, so
        ## reign back the regression test parallelism
        # 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',

        # run extra TAP tests if listed here
        # These are the ones omitted without the setting
        # on a secure single user system it makes sense to enable these
        # PG_TEST_EXTRA => "ssl ldap kerberos",

        # Where to put port locks. Default is the buildroot
        # PG_TEST_PORT_DIR => 'some path',
    },

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

        # comment out if not using ccache
        # ccache is known to cause issues sometimes on msys2
        # don't set CC at all if using MSVC, especially with meson
        CC => 'ccache cc',

        # If using vpath builds, this makes it use true symbolic links
        # on Msys2. Only use if the user has Create Symbolic Links privilege
        # See https://github.com/git-for-windows/git/wiki/Symbolic-Links
        # MSYS => 'winsymlinks:nativestrict',

        # In the rare event that you need to tell configure where the prove
        # program lives instead of letting it work it out you do it here.
        # Msys is one such case.
        # PROVE => '/bin/prove',

        # CPPFLAGS can be set here and picked up by configure
        # This example makes the regression tests run with extra
        # checking of user names created by the tests
        # CPPFLAGS => '-DENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS',

        # where to find a usable pkg-config or equivalent
        # see for example https://github.com/pkgconf/pkgconf
        # PKG_CONFIG => 'c:/path/to/pkg-config.exe',
        # PATH-style list of extra directories to search for .pc files
        # PKG_CONFIG_PATH => 'c:/path/to/libxml/pkgconfig',
    },

    # settings added to those in config_env if valgrind is being used
    valgrind_config_env_extra => {

        CFLAGS => "-fno-omit-frame-pointer -O0 -fPIC",
        CPPFLAGS => "-DUSE_VALGRIND  -DRELCACHE_FORCE_RELEASE",
    },

    # 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

    # set true if running with meson
    # will be ignored for branches older than 16
    using_meson => undef,

    # similar to make_jobs above - how much parallelism do you want for
    # meson's build and test stages. undef says use meson's default. (1?)
    meson_jobs => undef,

    # timeout multiplier for meson test jobs.
    # default if value is undefined is 3, 0 means no timeout
    meson_test_timeout => undef,

    # options used with configure (and not for meson)
    config_opts => [
        qw(
          --enable-cassert
          --enable-debug
          --enable-nls
          --with-perl
          --with-python
          --with-tcl
          --with-openssl
          --with-ldap
          --with-libxml
          --with-libxslt
          --with-includes=/usr/local/include
          --with-libraries=/usr/local/lib
          ),

        # could also add for example --enable-tap-tests
    ],

    # Note, for meson we turn off all the auto options and then selectively
    # re-enable them using these options, so zlib and readline have to be
    # explicitly enabled here.
    # see meson docs re interaction of buildtype, debug and
    # optimization settings. debugoptimised = debug:on + optimisation:2
    meson_opts => [
        qw(
          -Dcassert=true
          -Dbuildtype=debugoptimized
          -Dnls=enabled
          -Dplperl=enabled
          -Dplpython=enabled
          -Dpltcl=enabled
          -Dgssapi=enabled
          -Dssl=openssl
          -Dldap=enabled
          -Dlibxml=enabled
          -Dlibxslt=enabled
          -Dzlib=enabled
          -Dreadline=enabled
          ),

        # could for example add -Dtap_tests=enabled
    ],

    # 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"
        ],
        HEAD => ['debug_parallel_query = regress'],
    },

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

    # string list of doc targets to build in addition to html
    # could be "man postgres-US.pdf postgres-A4.pdf epub"
    # see doc/src/sgml/Makefile for complete list
    extra_doc_targets => undef,

    # 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)],

    # settings used by run_branches.pl
    global => {
        branches_to_build => 'ALL',

        # or 'HEAD_PLUS_LATEST' or 'HEAD_PLUS_LATEST2'
        # or 'STABLE' (i.e. live branches other than  HEAD)
        # or [qw( HEAD RELx_y_STABLE etc )]

        # set this if running multiple animals to have them coordinated
        # default is this animal's buildroot.
        global_lock_dir => "/home/pgbuildfarm/locks,

        # settings for parallel runs
        parallel_lockdir => undef,    # default is global_lock_dir
        parallel_stagger => undef,    # default 60
        max_parallel => undef,        # default 10

    },

    my_tap_tests => {

        # settings for module TestMyTap:
        # branch setting can be missing altogether, in which case 'main' is
        # used, or it can be a scalar, in which case that is used for all
        # branches, or it can be a hashref, in which case the value used
        # corresponds to the pg branch being used. 'default' is specified,
        # is for any branch not otherwise specified. If PGBRANCH is mapped,
        # then the Postgres branch is used.
        #
        # testset1 => { url => "git@somewhere.com/testrepo.git",
        #               branch => 'mymainbranch' # default is 'main'
        #             },
        # testset2 => { url => "git@somewhere-else.com/othertestrepo.git",
        #               branch => { HEAD => 'main',
        #                           default => 'PGBRANCH' },
        #             },
    },

);


# MSVC setup

if ($conf{using_msvc})
{
    # get the settings from the VisualStudio installation

    require "PGBuild/VSenv.pm";    ## no critic (RequireBarewordIncludes)

    # ancestor of vcvarsall.bat script we will use
    my $VSdir = "c:/Program Files (x86)/Microsoft Visual Studio/2019";

    # the more specific you are here the quicker the search will be
    # e.g.
    # $VSdir = "$VSdir/BuildTools/VC/Auxiliary/Build";

    my $vsenv = PGBuild::VSenv::getenv($VSdir, 'x64');

    # add other elements to the PATH, LIB and INCLUDE if needed
    $vsenv->{PATH} =
      join(';', 'c:/prog/depend/bin', 'c:/other/bin', $vsenv->{PATH});

    %{ $conf{build_env} } = (%{ $conf{build_env} }, %$vsenv);

    # MSVC non-meson 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.

    # This will be ignored for meson builds, which use meson_opts rather
    # than config_opts. See above for meson_opts.

    $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>
        tap_tests => undef,         # --enable-tap-tests
    };

}

##################################
#
# examples of per branch processing
# tailor as required for your site.
#
##################################
if ($branch eq 'HEAD')
{

    #    push(@{$conf{config_opts}},"--enable-depend");

    #   Note that config_opts is a hashref for MSVC, rather than
    #   an arrayref like elsewhere. That means the right way to set
    #   semething there is like this:
    #
    #   $conf{config_opts}->{openssl} = 'c:\path\to\openssl\installation';
}
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: 13425 Ranch Road 620 N, Apt 718, Austin, TX 78717-1010



Re: HELP -- what am I missing?

From
Larry Rosenman
Date:
Any help here?  I'm stuck.....

On 07/31/2024 6:55 pm, Larry Rosenman wrote:
> Given the below config, why is this failing?
> 
> playbox% ./run_branches.pl --nosend --nostatus --verbose  --run-all
> syntax error at ./build-farm.conf line 405, near "# testset1 => { url 
> => "git"
> Global symbol "@somewhere" requires explicit package name (did you 
> forget to declare "my @somewhere"?) at ./build-farm.conf line 405.
> Global symbol "@somewhere" requires explicit package name (did you 
> forget to declare "my @somewhere"?) at ./build-farm.conf line 408.
> Unknown regexp modifier "/M" at ./build-farm.conf line 408, at end of 
> line
> Unknown regexp modifier "/r" at ./build-farm.conf line 408, at end of 
> line
> Unknown regexp modifier "/f" at ./build-farm.conf line 408, at end of 
> line
> Unknown regexp modifier "/t" at ./build-farm.conf line 408, at end of 
> line
> Unknown regexp modifier "/B" at ./build-farm.conf line 408, at end of 
> line
> Regexp modifiers "/u" and "/l" are mutually exclusive at 
> ./build-farm.conf line 408, at end of line
> Regexp modifiers "/u" and "/d" are mutually exclusive at 
> ./build-farm.conf line 408, at end of line
> ./build-farm.conf has too many errors.
> Compilation failed in require at ./run_branches.pl line 86.
> playbox%
> 
> # -*-perl-*- hey - emacs - this is a perl file
> 
> =comment
> 
> Copyright (c) 2003-2022, Andrew Dunstan
> 
> See accompanying License file for license details
> 
> =cut
> 
> package PGBuild;    ## no critic (RequireFilenameMatchesPackage)
> 
> use strict;
> 
> use warnings FATAL => 'qw';
> 
> our (%conf);
> 
> # our($VERSION); $VERSION = 'REL_17';
> 
> my $branch;
> {
>     no warnings 'once';
>     $branch = $main::branch;
> }
> 
> 
> # useful for making settings relative to the config file location
> # all the clients should have used these two standard packages
> my $confdir = File::Spec->rel2abs(File::Basename::dirname(__FILE__));
> 
> # to force from-source in the directory where this config file is 
> located,
> # uncomment the line below. See also buildroot below
> # $PGBuild::Options::from_source = $confdir;
> 
> %conf = (
> 
>     # identity
>     animal => "anaconda",
>     secret => "<elided>",
> 
>     # 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
>     git_gc_hours => 7 * 24,    # garbage collect once a week, 0/undef to 
> disable
> 
>     # use symlinked git repo from non-HEAD branches, like git-new-workdir 
> does
>     # Ony supported on Windows if the user has "Create Symbolic Links"
>     # privilege. See
>     # https://github.com/git-for-windows/git/wiki/Symbolic-Links
>     git_use_workdirs => 1,
> 
>     # remove work trees between runs, saves disk space
>     rm_worktrees => 1,
> 
>     # check if the default git branch name has changed
>     skip_git_default_check => undef,
> 
>     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
> 
>     # external commands and control
>     make => 'gmake',       # or gmake if required. can include path if 
> necessary.
>     make_jobs => 2,   # >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
> 
>     # archive this many copies of the report summary
>     archive_reports => undef,
> 
>     # if on, print the whole web request object if there is a web error
>     show_error_request => undef,
> 
>     # Only works if the Unix::Uptime module is available
>     # inhibits a run if > 0 and the load average in last 1 minute or 5 
> minutes
>     # has been greater than this
>     max_load_avg => undef,
> 
>     # max time in seconds allowed for a single branch run
>     # undef/0 means unlimited
>     wait_timeout => undef,
> 
>     # if true run installcheck-parallel instead of installcheck
>     use_installcheck_parallel => 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
>     # "$confdir/buildroot" means buildroot in the config file's directory,
>     # which is useful for auto from-source setups
>     build_root => undef,    #  or '/path/to/buildroot',
>     use_vpath => undef,     # set true to do vpath builds
> 
>     # valgrind settings - default is don't use valgrind
>     # It will use the .supp file in the source code    so that's not in the
>     # options here.
>     use_valgrind => undef,
>     valgrind_options => join(
>         ' ', qw{--quiet --trace-children=yes
>           --track-origins=yes --read-var-info=yes --num-callers=20
>           --leak-check=no --gen-suppressions=all   --error-limit=no}
>     ),
> 
>     # if true run tests with debug_discard_caches=1, or the equivalent
>     # on older branches. Do not set CLOBBER_CACHE_ALWAYS if you use this.
>     use_discard_caches => undef,
> 
>     # 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*",    # should work for both Linux and *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,
>         # 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 },
>         # REL_10_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 => ["ler\@lerctr.org"],       # 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
>     },
> 
>     # 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 => 1,
> 
>     # set this to allow caching of the configure script's results
> 
>     use_accache => 1,
> 
>     # 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 => "/path/to/your/ccache",
> 
>         ### use these settings for Cygwin - adjust dumper path to be correct
>         ## see https://cygwin.org/cygwin-ug-net/using-cygwinenv.html
>         # CYGWIN => 'error_start=c:\cygwin\bin\dumper.exe -d %1 %2',
> 
>         ## Cygwin is known to choke on many concurrent connections, so
>         ## reign back the regression test parallelism
>         # 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',
> 
>         # run extra TAP tests if listed here
>         # These are the ones omitted without the setting
>         # on a secure single user system it makes sense to enable these
>         # PG_TEST_EXTRA => "ssl ldap kerberos",
> 
>         # Where to put port locks. Default is the buildroot
>         # PG_TEST_PORT_DIR => 'some path',
>     },
> 
>     # env settings to pass to configure. These settings will only be seen 
> by
>     # configure.
>     config_env => {
> 
>         # comment out if not using ccache
>         # ccache is known to cause issues sometimes on msys2
>         # don't set CC at all if using MSVC, especially with meson
>         CC => 'ccache cc',
> 
>         # If using vpath builds, this makes it use true symbolic links
>         # on Msys2. Only use if the user has Create Symbolic Links privilege
>         # See https://github.com/git-for-windows/git/wiki/Symbolic-Links
>         # MSYS => 'winsymlinks:nativestrict',
> 
>         # In the rare event that you need to tell configure where the prove
>         # program lives instead of letting it work it out you do it here.
>         # Msys is one such case.
>         # PROVE => '/bin/prove',
> 
>         # CPPFLAGS can be set here and picked up by configure
>         # This example makes the regression tests run with extra
>         # checking of user names created by the tests
>         # CPPFLAGS => '-DENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS',
> 
>         # where to find a usable pkg-config or equivalent
>         # see for example https://github.com/pkgconf/pkgconf
>         # PKG_CONFIG => 'c:/path/to/pkg-config.exe',
>         # PATH-style list of extra directories to search for .pc files
>         # PKG_CONFIG_PATH => 'c:/path/to/libxml/pkgconfig',
>     },
> 
>     # settings added to those in config_env if valgrind is being used
>     valgrind_config_env_extra => {
> 
>         CFLAGS => "-fno-omit-frame-pointer -O0 -fPIC",
>         CPPFLAGS => "-DUSE_VALGRIND  -DRELCACHE_FORCE_RELEASE",
>     },
> 
>     # 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
> 
>     # set true if running with meson
>     # will be ignored for branches older than 16
>     using_meson => undef,
> 
>     # similar to make_jobs above - how much parallelism do you want for
>     # meson's build and test stages. undef says use meson's default. (1?)
>     meson_jobs => undef,
> 
>     # timeout multiplier for meson test jobs.
>     # default if value is undefined is 3, 0 means no timeout
>     meson_test_timeout => undef,
> 
>     # options used with configure (and not for meson)
>     config_opts => [
>         qw(
>           --enable-cassert
>           --enable-debug
>           --enable-nls
>           --with-perl
>           --with-python
>           --with-tcl
>           --with-openssl
>           --with-ldap
>           --with-libxml
>           --with-libxslt
>           --with-includes=/usr/local/include
>           --with-libraries=/usr/local/lib
>           ),
> 
>         # could also add for example --enable-tap-tests
>     ],
> 
>     # Note, for meson we turn off all the auto options and then 
> selectively
>     # re-enable them using these options, so zlib and readline have to be
>     # explicitly enabled here.
>     # see meson docs re interaction of buildtype, debug and
>     # optimization settings. debugoptimised = debug:on + optimisation:2
>     meson_opts => [
>         qw(
>           -Dcassert=true
>           -Dbuildtype=debugoptimized
>           -Dnls=enabled
>           -Dplperl=enabled
>           -Dplpython=enabled
>           -Dpltcl=enabled
>           -Dgssapi=enabled
>           -Dssl=openssl
>           -Dldap=enabled
>           -Dlibxml=enabled
>           -Dlibxslt=enabled
>           -Dzlib=enabled
>           -Dreadline=enabled
>           ),
> 
>         # could for example add -Dtap_tests=enabled
>     ],
> 
>     # 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"
>         ],
>         HEAD => ['debug_parallel_query = regress'],
>     },
> 
>     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},
>     },
> 
>     # string list of doc targets to build in addition to html
>     # could be "man postgres-US.pdf postgres-A4.pdf epub"
>     # see doc/src/sgml/Makefile for complete list
>     extra_doc_targets => undef,
> 
>     # 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)],
> 
>     # settings used by run_branches.pl
>     global => {
>         branches_to_build => 'ALL',
> 
>         # or 'HEAD_PLUS_LATEST' or 'HEAD_PLUS_LATEST2'
>         # or 'STABLE' (i.e. live branches other than  HEAD)
>         # or [qw( HEAD RELx_y_STABLE etc )]
> 
>         # set this if running multiple animals to have them coordinated
>         # default is this animal's buildroot.
>         global_lock_dir => "/home/pgbuildfarm/locks,
> 
>         # settings for parallel runs
>         parallel_lockdir => undef,    # default is global_lock_dir
>         parallel_stagger => undef,    # default 60
>         max_parallel => undef,        # default 10
> 
>     },
> 
>     my_tap_tests => {
> 
>         # settings for module TestMyTap:
>         # branch setting can be missing altogether, in which case 'main' is
>         # used, or it can be a scalar, in which case that is used for all
>         # branches, or it can be a hashref, in which case the value used
>         # corresponds to the pg branch being used. 'default' is specified,
>         # is for any branch not otherwise specified. If PGBRANCH is mapped,
>         # then the Postgres branch is used.
>         #
>         # testset1 => { url => "git@somewhere.com/testrepo.git",
>         #               branch => 'mymainbranch' # default is 'main'
>         #             },
>         # testset2 => { url => "git@somewhere-else.com/othertestrepo.git",
>         #               branch => { HEAD => 'main',
>         #                           default => 'PGBRANCH' },
>         #             },
>     },
> 
> );
> 
> 
> # MSVC setup
> 
> if ($conf{using_msvc})
> {
>     # get the settings from the VisualStudio installation
> 
>     require "PGBuild/VSenv.pm";    ## no critic (RequireBarewordIncludes)
> 
>     # ancestor of vcvarsall.bat script we will use
>     my $VSdir = "c:/Program Files (x86)/Microsoft Visual Studio/2019";
> 
>     # the more specific you are here the quicker the search will be
>     # e.g.
>     # $VSdir = "$VSdir/BuildTools/VC/Auxiliary/Build";
> 
>     my $vsenv = PGBuild::VSenv::getenv($VSdir, 'x64');
> 
>     # add other elements to the PATH, LIB and INCLUDE if needed
>     $vsenv->{PATH} =
>       join(';', 'c:/prog/depend/bin', 'c:/other/bin', $vsenv->{PATH});
> 
>     %{ $conf{build_env} } = (%{ $conf{build_env} }, %$vsenv);
> 
>     # MSVC non-meson 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.
> 
>     # This will be ignored for meson builds, which use meson_opts rather
>     # than config_opts. See above for meson_opts.
> 
>     $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>
>         tap_tests => undef,         # --enable-tap-tests
>     };
> 
> }
> 
> ##################################
> #
> # examples of per branch processing
> # tailor as required for your site.
> #
> ##################################
> if ($branch eq 'HEAD')
> {
> 
>     #    push(@{$conf{config_opts}},"--enable-depend");
> 
>     #   Note that config_opts is a hashref for MSVC, rather than
>     #   an arrayref like elsewhere. That means the right way to set
>     #   semething there is like this:
>     #
>     #   $conf{config_opts}->{openssl} = 'c:\path\to\openssl\installation';
> }
> 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: 13425 Ranch Road 620 N, Apt 718, Austin, TX 78717-1010



Re: HELP -- what am I missing?

From
Alvaro Herrera
Date:
On 2024-Jul-31, Larry Rosenman wrote:

> Given the below config, why is this failing?

This line is broken in your config:

                global_lock_dir => "/home/pgbuildfarm/locks,

You're missing the closing quote.

-- 
Álvaro Herrera               48°01'N 7°57'E  —  https://www.EnterpriseDB.com/
"La virtud es el justo medio entre dos defectos" (Aristóteles)



Re: HELP -- what am I missing?

From
Larry Rosenman
Date:
On 08/01/2024 7:06 pm, Alvaro Herrera wrote:
> On 2024-Jul-31, Larry Rosenman wrote:
> 
>> Given the below config, why is this failing?
> 
> This line is broken in your config:
> 
>                 global_lock_dir => "/home/pgbuildfarm/locks,
> 
> You're missing the closing quote.
Thank You!
-- 
Larry Rosenman                     http://www.lerctr.org/~ler
Phone: +1 214-642-9640                 E-Mail: ler@lerctr.org
US Mail: 13425 Ranch Road 620 N, Apt 718, Austin, TX 78717-1010



Re: HELP -- what am I missing?

From
Michael Paquier
Date:
On Thu, Aug 01, 2024 at 08:06:26PM -0400, Alvaro Herrera wrote:
> On 2024-Jul-31, Larry Rosenman wrote:
>
> > Given the below config, why is this failing?
>
> This line is broken in your config:
>
>                 global_lock_dir => "/home/pgbuildfarm/locks,
>
> You're missing the closing quote.

Larry, note that it is possible to check the syntax of your
configuration file with a command like `perl -cw build-farm.conf`.
--
Michael

Attachment

Re: HELP -- what am I missing?

From
Alvaro Herrera
Date:
On 2024-Aug-04, Michael Paquier wrote:

> Larry, note that it is possible to check the syntax of your
> configuration file with a command like `perl -cw build-farm.conf`.

Right.

The animal in question is already reporting:

https://buildfarm.postgresql.org/cgi-bin/show_history.pl?nm=anaconda&br=HEAD

Cheers

-- 
Álvaro Herrera         PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"Find a bug in a program, and fix it, and the program will work today.
Show the program how to find and fix a bug, and the program
will work forever" (Oliver Silfridge)