Skip to content
Choose a tag to compare

This update to Release 13 fixes errors that occur from the new default branch name checking code when used with versions of git that are too old. This code is now disabled if the git version is not capable of running it, and in verbose mode a warning is printed. The warning can be disabled by explicitly setting "skip_git_default_check => 1" in the config file. In either case, the owner will need to update their git installation or remove all branch and mirror repositories when the default branch name changes.

Choose a tag to compare


  • add tests for a few cases that were previously missing
  • more fine-grained control over which TAP test sets run
  • --no-keepall can be specified on the command line
  • repair a repo if it crashed during a copy operation
  • make sure the repo is really clean (including free of ignored files)
  • generate stack traces on CYGWIN
  • collect stack traces for TAP tests
  • Extract MSVC settings at runtime rather than had coding them in the config file (see below)
  • cross version upgrade tests now run on Windows, both for msys2 and MSVC builds
  • add support for inhibit-runs and force-one-run trigger files( see below)
  • add experimental module for running arbitrary out of tree TAP tests
  • Adjust if an upstream repo changes the default branch name (see below)
  • add use_discard_caches caches setting (see below)

MSVC animals are now very much simpler to set up, and to upgrade to a new compiler. Using the new mechanism, as shown in the sample config file, all that's needed is to specify a location where the standard script vcvarsall.bat can be found. The script will then run that script and extract the settings and apply them. Tha means that upgrading to a new version of Visual Studio would entail just a one line change in the config file.

If you put a file called [animalname].inhibit-runs in the build root, all runs will be stopped until the file is removed. If you put a file called [animalname].force-one-run in the build root, each configured branch will be forced to run once, and the file will be removed. These only apply if you use the script.

The client should transparently deal with any change that is made in the upstream repository's default branch name. This avoids the need for a flag day when we eventually change the default branch name for postgresql, as I assume we will do before long. The branch bf_HEAD which the client creates now refers to the upstream default whatever it might be, rather than the hardcoded name 'master'. The code of the SCM module underwent quite a lot of change in order to make this happen; the checkout code had become quite long and convoluted and I had to refactor it somewhat before I was able to make and test this change. The changes have been fairly extensively tested, but I'm still slightly nervous about them. Owners are asked to report any issues promptly.

the use_discard_caches setting reflects a change in the way postgres handles this - it's now a runtime setting rather than a compile time setting. On older branches it sets "-DCLOBBER_CACHE_ALWAYS". If you use this setting don't use that define.

Choose a tag to compare

Apart from some minor fixes and code tidy up. this includes the following more notable changes:

  • the TextUpgradeXVersion module is brought up to date with various core code changes
  • a module-neutral, animal-based save mechanism replaces the bespoke mechanism that was implemented in TestUpgradeXVersion. This will enable future development like testing openssl builds against NSS builds etc.
  • a standardized way of accumulating log files is implemented. This will enable some planned server side improvements.
  • requests are now signed using SHA256 nstead of SHA1.
  • there is a separate config section for settings to be used with valgrind. This makes it easier to turn valgrind on or off.
  • typedefs detection is improved for OSX
  • there is a setting for additional docs build targets, in addition to the standard html target.
  • use of the configure "accache" is made substantially more robust
  • timed out processes are more verbose
Choose a tag to compare

Bug fixes plus following features

  • Allow list of branches as positional arguments to
    This overrides what is found in the config file. The list can't include
    metabranches like ALL, nor can it contain regexes.
  • improve diagnostic capture for git and fetching branches of interest
  • unify config.log and configure.log
  • add siginfo to gdb output
  • improve test coverage
    • run check for test modules marked NO_INSTALLCHECK
    • run TAP tests for test modules that have them
    • run TAP tests for contrib modules that have them
  • explicitly use "trust" with initdb
Choose a tag to compare

Principal feature: support for non-standard repositories:

  • support multi-element branch names, such as "dev/featurename" or "bug/ticket_number/branchname"
  • provide a get_branches() method in SCM module
  • support regular expression branches of interest. This is matched against the list of available branches
  • prune branches when doing git fetch.

Other features/ behaviour changes:

  • support for testing cross version upgrade extended back to 9.2
  • support for core Postgres changes:
    • extended support for USE_MODULE_DB
    • new extra_float_digits regime
    • removal of user table oid support
    • removal of abstime and friends
    • changed log file locations
  • don't search for valgrind messages unless valgrind is configured
  • make detection of when NO_TEMP_INSTALL is allowed more bulletproof

There are also various minor bug fixes and code improvements.

Choose a tag to compare

Along with numerous fixes of minor bugs and a couple of not so minor bugs, this release has the following features:

  • new command line parameter --run-parallel for runs all branches in parallel, possibly across animals as well
  • new config setting max_load_avg inhibits a run if the load average is higher than the setting
  • new config_option archive_reports saves that number of generations of the report sent to the server
  • new command line parameter --show-error-log which outputs the error log if any on stdout
  • automatically rerun 3 hours after a git failure, useful on back branches where commits can be infrequent
  • automatically convert old URLs to
  • better logic to detect when temp installs are unnecessary
  • better valgrind processing
  • new module to check core perl code for style and syntax
  • allow upstream repos to be rebased
  • add animal name and branch to verbose traces, useful in parallel runs
  • remove old if $branch eq 'global' processing in config file, replace with a simple global stanza, the legacy use is still supported.

If you want to run in parallel and you are just running a single animal, changing --run-all to --run-parallel in the command line should be all you need to do. Parallel runs are not run all at once. By default they are launched every 60 seconds. You can also limit the maximum number of parallel runs. The default is 10. I will be adding some notes to the Buildfarm Howto on how to use this feature.

The max_load_avg setting only works on Unix, and requires the installation of the non-standard perl module Unix::Uptime. If this value is set to a non-zero value and the module is not present the script will die. The setting is compared to the load average in the last minute and the last 5 minutes. If either are higher then the run is cancelled.

Choose a tag to compare

This release contains a number of small changes to make using the
--from-source feature a bit nicer. It also contains a good deal of code
cleanup to be perlcritic clean, with some exceptions, down to severity
level 3, and also to remove some out of date code that referred to
Postgresql branches we no longer support.

It also contains the following features:

  • --tests and --schedule now apply to the check step as well as the
    installcheck step
  • a new --delay-check switch delays the check step until after
    install. This helps work around a bug or lack of capacity w.r.t.
    LD_LIBRARY_PATH on Alpine Linux
  • if the environment value BFLIB exists it is added to the perl search
    path. That means it is possible to install the top level scripts
    separately from the support modules.