===================================================================
Version 0.48.0 by Aleksey Cheusov, Sun, 12 May 2024 18:39:40 +0400

  Fix distbb_chroot script.

  Minor fix in stage_gen_report for better conformance to
  HTML-4.01/strict

  Update default config file distbb.conf.

  Update README.

  Use native targets "clean" and "package" in unprivileged mode (if
  UNPRIV_USER is set) instead of home-made "Clean" and "Package".

  Set LD_PRELOAD and LIBKVER_OSRELEASE only on slave hosts.

  Introduce new configuration variables OS_VERSION and MACHINE_ARCH.

  Add new target CleanupPkgdb to TARGETS.

  Add new configuration variable SLAVE_CMD

  Configuration variable PKGSRCVER defaults to unknown.

  Add $PKGSRCVER to report.html.

  Minor clean-ups in "distbb_chroot", "distbb.conf",
  "distbb.default.conf", "slave" and "common" configs and scripts.

===================================================================
Version 0.47.2 by Aleksey Cheusov, Sun, 12 Jun 2016 18:59:15 +0300

  Fix: variable USE_DESTDIR disappeared from pkgsrc

===================================================================
Version 0.47.1 by Aleksey Cheusov, Sat, 30 Aug 2014 13:55:30 +0300

  Fixes:
    - exit status of bmake invocation was not checked
    - dirty hacks with PSS_SLAVES when MASTER_MODE=no are no longer
      necessary

===================================================================
Version 0.47.0 by Aleksey Cheusov, Sun,  3 Aug 2014 16:07:19 +0300

  TOOL_DEPENDS is supported by default (pkg_src_summary stage)

  Support for cross-builds (not tested yet)

  stage_checks:
    - gen_unregistered_CONFLICTS was disabled, it is too slow.
    - additional section for memory allocation failures was added.
    - improvements for "missing progs", "missign header" and "library
      not found sections".

  distbb_chroot:
    - Option -p was added and other improvements.

  distbb.conf and distbb.default.conf:
    - Variable OS was renamed to OPSYS
    - home-made function "assign" was replaced with :=
    - New config variable ULIMIT_CMD was introduced.
      It defaults to "ulimit -t 1800"

  upload_pkgs_all_files: fix find(1) arguments.
  Thanks to Andrey Oktyabrski for the report.

===================================================================
Version 0.46.0 by Aleksey Cheusov, Sat,  2 Feb 2013 13:56:38 +0300

  stage_upload_pkgs:
    - delete outdated packages after uploading
    - extra files are removed from remote repo
    - no verbose flag for rsync

  Serious fixes in stage_init
    - PKG_UPDATE_SRC_SUMMARY_CMD: -m is passed to pkg_src_summary by default

  Fix in signals handling

  Fix in "make-depends" (unknown function is_true)

  Fix: distbb -a option works correctly if pkg_summary.txt doesn't exist

  upload_pkgs_all_files:
    - directories and links are also output in addition to files

  distbb checks arguments passed to -x|-X for correctness.

  Configuraton variable SUDO was renamed to to DISTBB_SUDO.
  This fixed build failure of ruby193-base

  Configuraton variable OS was renamed to OPSYS

  Stderr of pkg_summary2deps is now a part of the final report

===================================================================
Version 0.45.1 by Aleksey Cheusov, Sun,  2 Sep 2012 22:19:40 +0300

  On slave hosts run distbb_wrapper with
  "env DISTBB_CONF=$DISTBB_CONF". This may fix some setups.

===================================================================
Version 0.45.0 by Aleksey Cheusov, Sun,  26 Aug 2012 19:52:18 +0300

  Fix rare failures in "Clean" target. Thanks to David Holland!

  New configuration variable SEND_REPORT_FIRST was introduced.

  Boolean variables MASTER_MODE, CROSS_COMPILE, SEND_REPORT_FIRST
  accepts values true|yes|1 for logical TRUE and false|no|0 for
  logical FALSE. This may fix some hacks in single node setups.

  During upload rsync may unexpectedly fail due to connection
  failure. In order to resolve this problem, upload may be repeated
  several times. The following variables were introduced for this
  purpose: UPLOAD_PKGS_ATTEMPTS, UPLOAD_PKGS_PAUSE,
  UPLOAD_LOGS_ATTEMPTS, UPLOAD_LOGS_PAUSE.

  Progress messages now better illustrates internal structure of
  the build process.

  Option -a was added to distbb(1) in order to build updates for
  quarter releases more efficiently.

  stage_checks:
    - double underline in "checks" filename means _ in the report
      text, single underline means space.
    - one more check for broken pkg_summary (REQUIRES field).  It
      checks for libraries under /tmp, /home, /srv and /work
      directories.

  stage_upload_logs:
    - huge pkg_enriched_summary.txt is not uploaded

  README was updated

  Minor clean-ups

===================================================================
Version 0.44.0 by Aleksey Cheusov, Sat, 25 Feb 2012 11:43:56 +0300

  Improvements for report:
    - "^WARNING:" messages are logged
    - Segmentation faults are logged
    - Clean-ups in report_mini.txt and report.txt

  Packages are rebuilt recursively only if it necessary

===================================================================
Version 0.43.0 by Aleksey Cheusov, Mon,  9 Jan 2012 23:27:20 +0300

  Fix for signal handlers (SIGINT, SIGTERM, SIGQUIT).

  Fix in "Depends" stage.
  Unnecessary dependencies are not install anymore.

  Dependency graph. Latest available binary package is always used for
  BUILD_DEPENDS if it satisfies dependencies.

===================================================================
Version 0.42.0 by Aleksey Cheusov, Sat,  3 Dec 2011 20:49:51 +0300

  Support for cross-compilation. Build host dependencies are built on
  demand.  Patch for pkgsrc is needed.
  http://mail-index.netbsd.org/tech-pkg/2011/11/19/msg008003.html

  Support for libkver was added. In order to build packages for
  different version of NetBSD you need to set LIBKVER_OSRELEASE and
  LD_PRELOAD in distbb.conf.

  New transport program distbb_chroot was added.
  It is now the default for TRANSPORT.

===================================================================
Version 0.41.2 by Aleksey Cheusov, Sun, 16 Oct 2011 12:02:35 +0300

  Fix partial bulk builds. Sometimes stage_summary fails when
  multivariant packages are built.

  stage_summary has been completely reimplemented.

===================================================================
Version 0.41.1 by Aleksey Cheusov, Tue, 20 Sep 2011 07:40:31 +0300

  FIX: another problem with packages
  having non-empty PKG_FAIL_REASON.

===================================================================
Version 0.41.0 by Aleksey Cheusov, Mon, 12 Sep 2011 16:59:59 +0300

  FIX: Do not use packages with non-empry PKG_FAIL_REASON for building
  a dependency graph if there are ones without such marker. This
  unbreaks rare failures of bulk builds.

  Changes in dependency graph generation. Old algorithm leads to too
  many failures caused by weak [BUILD_]DEPENDS in pkgsrc. Old
  algorithm is available using "distbb -m1".

  rmd160 and sha512 checksums are generated for packages in
  pkg_summary(5).

  A number of sanity checks and tips for packagers have been
  implemented which are a part of final report.

  stage_report has been renamed to stage_send_report

  New script pkg_summary2build_deps for building dependency graph

===================================================================
Version 0.40.1, by Aleksey Cheusov, Sun,  7 Aug 2011 18:25:25 +0300

  FIX: distbb may fail at stage_summary because not all packages
  that need to be rebuilt are marked as such.

===================================================================
Version 0.40.0, by Aleksey Cheusov, Sat, 23 Apr 2011 00:17:49 +0300

  As of this release completely new algorithm of building a dependency
  graph is used. By default old available binary packages
  (dependencies) are used for building dependent packages unless
  DEPENDS or BUILD_DEPENDS forbid this. As a result significantly less
  packages are rebuilt by bulk builds. Another effect is that
  incompatible changes in ABI overlooked by pkgsrc package maintainers
  may cause package breakages at run time. Also, incompatible changes
  in API may cause package failures at build time if bl3.mk was not
  updated properly.

  Error messages are saved to $meta_dir/errors.txt

  pkg_summary.txt is created under $meta_dir/
  and then is copied to final destination.

  Stage "post_build" was removed

  New configuration variable WEIGH_PACKAGES_CMD was added.
  It contains path to a program that weighs packages.
  It defaults to libexec/distbb/gen_weights.

  'paexec -W2' is used for selecting package to build first.

  Minor fixes in stage_gen_report.

  'distbb -r' after manual editing progress.txt doesn't cause failures
  in stage_gen_report anymore.

  dbb_* targets was removed.
  Available, Excluded, Vars etc. are used instead.

  Targets "install" and "deinstall" was removed from TARGETS.

  Fix for UNPRIV_USER mode on BSD systems.

  Clean-ups in default distbb.conf

===================================================================
Version 0.39.2, by Aleksey Cheusov, Wed, 15 Dec 2010 13:45:20 +0200

  Fix for bug introduced in 0.39.1

===================================================================
Version 0.39.1, by Aleksey Cheusov, Tue, 14 Dec 2010 02:03:12 +0200

  Package with versions going backward are not rebuilt anymore.

  New options -i and -I were added for building
  all installed packages

  distbb:
    - fix for 'continue' operator outside loop
    - fix for -r broken in 0.38.2

  License has been changed from MIT to functionally equivalent
  2-clause BSD.

===================================================================
Version 0.38.2, by Aleksey Cheusov, Mon,  8 Nov 2010 23:52:31 +0200

  pkg_summary-utils>=0.47 is needed

  Long options were removed from distbb.
  Use standard short options!

  -x creates .done files, so they persist between -r sessions

  pkg_summary2build_graph was replaced with pkg_summary2deps -Ap.
       The former will be removed from pkg_summary-utils soon.

===================================================================
Version 0.38.1, by Aleksey Cheusov, Fri, 15 Oct 2010 22:30:15 +0300

  In order to minimize total build time, heavier packages are built
  first.  This is implemented with a help of recent paexec(1).  Simple
  heuristics using source size is used to guess build time of the
  package.  Probably this heuristics needs to be improved.
  Recent paexec >= 0.15.0 is required

  distbb now conforms to POSIX Utility Syntax Guideline.
  Recent runawk >= 1.1.0 is required.

  distbb migrated to mk-configure build system.

===================================================================
Version 0.37.1, by Aleksey Cheusov, Tue, 17 Aug 2010 16:46:45 +0300

  Fixed: error in a newly created "summary" stage.

===================================================================
Version 0.37.0, by Aleksey Cheusov, Sun,  8 Aug 2010 21:35:42 +0300

  Fixes:
     - Warning message about deprecated PKG_SUFX should not appear
       anymore.
     - Html text inside <pre></pre> is quoted (<, >, & , " and '
       symbols)
     - Another fix in report.html (conformance to HTML 4.0.1 Strict)

  New stages have been added:
     - summary: for creating pkg_summary.txt containing summaries
                of successfully built packages only
     - checksum: SHA512.{txt,gz,bz2}

  For partial bulk builds the following stages are disabled
  by default: summary, checksum, upload_pkgs.

  distbb: New option -X, antonym for -x.

  New variable PKG_ALL_SUMMARY keeps filename containing summaries of
  all available binary packages. A number of such packages is not a
  part of the report anymore. PKG_UPDATE_SUMMARY_CMD has been renamed
  to PKG_UPDATE_ALL_SUMMARY_CMD.

  Two new supported variables: GZIP and BZIP2.

===================================================================
Version 0.36.3, by Aleksey Cheusov, Tue,  3 Aug 2010 23:38:47 +0300

  fix: 'trap...' in sh script should be before creating tempdir

  fix: reaching maximum log size limit doesn't break bulk build
  anymore

===================================================================
Version 0.36.2, by Aleksey Cheusov, Sun, 27 Jun 2010 20:27:41 +0300

  FIX: Use of 'pkg_add -I' for installing dependencies
  was bad idea. Some packages may fails due to this change.
  Now pkg_add is use for purpose.

===================================================================
Version 0.36.1, by Aleksey Cheusov, Fri, 25 Jun 2010 14:22:27 +0300

  FIX: Do not use MAKEFLAGS for recursive make invocations. This fixes
  UNPRIV_USER mode. Thanks to Klaus Heinz for the report.

  FIX in pkg_src_summary: remove temporary directory

===================================================================
Version 0.36.0, by Aleksey Cheusov, Sun,  6 Jun 2010 15:01:56 +0300

  report:
    - sections are reordered. The most important are placed at the top
      of report.
    - new better place for JumpTo section
    - final report looks much better with capitalized targets than with targets
      prepanded with dbb_. Target synonyms:
	Init:     dbb_init
	Clean:    dbb_clean
	Vars:     dbb_vars
	Available dbb_available: dbb_canbebuilt
	Excluded: dbb_excluded
	Depends:  dbb_depends
	Package:  dbb_package

  DEPENDS_TARGET=do-bin-install restored.

  target "dbb_depends" (and "Depends"):
    - -I is added to pkg_add for installing dependencies.

  fixed: sometimes "Inspected packages" count may show wrong number.

  EXTRA_DEPS defaults to empty list.

===================================================================
Version 0.35.0, by Aleksey Cheusov, Fri, 28 May 2010 17:51:53 +0300

  Support for unprivileged bulk builds without su/sudo etc.
    Features:
    - The following targets are always run in an unprivileged mode:
      dbb_canbebuilt, dbb_excluded, dbb_vars, fetch, checksum, extract,
      patch, configure and build.
    - "package" targets are run in unprivileged mode
      depending on variables PKG_DESTDIR_SUPPORT, USE_DESTDIR
      and UNPRIV_USER (set in distbb.conf).
    Requirements:
    - slave hosts should be accessed using user "root".
    - special variable UNPRIV_USER should be set to unprivileged user
      in distbb.conf.
    - target "clean" should be replaced with "dbb_clean" in TARGETS
      (the default).
    - target "package" should be changed to "dbb_package" in TARGETS
      (the default).

  stage_init: Minor fix for some broken shells
    (http://gnats.netbsd.org/39466). Solution: touch command
    is used instead 'echo >'

  slave: do-bin-install target is not used anymore,
    there is no need for it.

  BOOTSTRAP_DEPENDS are handled automatically. There is not need to
  list them in EXTRA_DEPS. Latest pkg_summary-utils>=0.39 is needed.

===================================================================
Version 0.34.0, by Aleksey Cheusov, Sat,  1 May 2010 21:03:58 +0300

  ${MSCOMMONDIR} directory visible on master and slave hosts is needed
  for running bulk builds. It defaults to ${PACKAGES}/.distbb.

  FIX: some packages having alternative dependencies unexpectedly
  failed at "depends" phase. Now new target "dbb_depends" is used for
  installing dependencies. Make sure your locally modified TARGETS
  contains "dbb_depends", not "depends".

  New implementation for stage_init which is much smaller, easier and
  cleaner. Some clean-ups and improvements in stage_build.

  Latest pkg_summary-utils, pipestatus and runawk are required.

  fix in stage_init.in: we should not rewrite build_src_summary_log_fn
  file while searching for versions going backward.

  fix in distbb: usage message should not interpret $ signs.

===================================================================
Version 0.33.0, by Aleksey Cheusov, Sat, 24 Oct 2009 13:34:25 +0300

  add: new build stage "upload" in BUILD_STAGES instead of two
  "upload_logs" and "upload_pkgs".

  Two new variables are introduced: CSS_FILE and ICON_FILE.
  Now user can override default the default distbb.css and distbb.ico.
  .pkg-total style is not used for "Inspected packages" line.

===================================================================
Version 0.32.0, by Aleksey Cheusov, Sun, 11 Oct 2009 10:53:00 +0300

  fix: workaround for buggy FreeBSD (at least 6.2-7.2) shell that
  doesn't handle correctly 'if eval false;' statement if 'set -e'
  mode is activated.

  fix: PSS_SLAVES is unset before building src_summary in !MASTER mode.

  New variable RSYNC_CMD is introduced. It sets the command used for
  uploading logs and packages. [rsync]

  New variable REPORT_FILE is introduced. It defaults to
  "report_mini.txt" for shortened report. Set it to "report.txt" for
  full report. REPORT_CMD variable doesn't contain `<' redirection
  anymore.

  New option "distbb -K" for skipping a pkg_summary updating step.

  New option "distbb -l" for labeling a bulk build. Unless -B option
  was applied, BUILD_ID and logging directory will look like
  YYYYMMDD-<label>.

  New option "distbb -x" for excluding specified stages from bulk build.
  For example, "distbb -xupload_pkgs -xupload_logs -p wip/distbb".

  NOTES section in META/report.html is not surrounded by <p></p> pair.
  Do it manually if you need.

  "distbb -B" can get a full path to the logging directory, not just
  subdirectory of $REPORTS_DIR. Such a directory may be everywhere,
  not necessarily under $REPORTS_DIR.

  By default net/tnftp is also a part of EXTRA_DEPS.

  Better handling of REPORT_MINI_SIZE_LIMIT.

  Warning messages about packages versions going backward are
  collected in $build_src_summary_log_fn

===================================================================
Version 0.31.0, by Aleksey Cheusov, Sun,  9 Aug 2009 21:00:34 +0300

  There is no need to add /usr/pkg_distbb/bin to PATH environment
  variable on all build hosts.

===================================================================
Version 0.30.0, by Aleksey Cheusov, Sat, 30 May 2009 18:33:40 +0300

  FIXED: {alter,native}:../depend/encies were handled incorrectly.
  As a result distbb wrongly detected cyclic dependencies, e.g.
     devel/p5-Module-Build -> devel/p5-version
     devel/p5-version -> devel/p5-Module-Build
  To fix this problem an external utility pkg_summary2build_graph is
  used for creating a dependency graph for building packages.

  Improvements for  bulk building multivariant packages.

  PSS_PAEXEC_EXTRA_OPTS is by default set to $PAEXEC_EXTRA_OPTS.
  See pkg_src_summary(1) and paexec(1).

  xxx.done files have been renamed to xxx_done.tmp and therefore are
  not uploaded anymore.

  Minor fixes in Makefile.

===================================================================
Version 0.29.0, by Aleksey Cheusov, Sun, 15 Mar 2009 21:30:20 +0200

  DISTBB now depends on latest paexec.

  New configuration variable PAEXEC_EXTRA_OPTS for passing extra
  options to paexec(1). It defaults to -Z300.

  As of this version if one or more (but not all simultaneously!) of
  your build hosts hanged up, or other type of bad things happened,
  distbb will try to restore connection to them automatically every 5
  minutes (by default, see PAEXEC_EXTRA_OPTS). That is, now you can
  run pkgsrc bulk builds even on not very stable hardware, software
  and even over unreliable network, e.g. internet, without warrying
  about manual restarting a bulk build. Now you can reboot your build
  hosts freely. If you prefer old distbb behaviour, set
  PAEXEC_EXTRA_OPTS to -z. See paexec(1).

===================================================================
Version 0.28.0, by Aleksey Cheusov, Wed,  7 Jan 2009 00:58:45 +0200

  distbb_diff takes into account "not available" packages

===================================================================
Version 0.27.0, by Aleksey Cheusov, Wed,  7 Jan 2009 00:58:45 +0200

  report.*, regress sections:
      - "Breaks" column is added
      - packages failed due to broken dependencies are removed

===================================================================
Version 0.26.0, by Aleksey Cheusov, Sat, 27 Dec 2008 01:14:15 +0200

  all .html pages of the report have favicon taken from here
  http://www.netbsd.org/~dillo/ made by Dieter Baron.
  Later I'll try to create my own...

  added: option -s. If applied, an exit status is 0 if building *ALL*
  packages succeeded, otherwise exit status is 5.

===================================================================
Version 0.25.0, by Aleksey Cheusov, Wed, 24 Dec 2008 01:23:09 +0200

  Now bulk builds don't stop in case of connection failure to the
  build host (power down, segfault, hang up for any reason etc.). Such
  a host is marked as unavailable and distbb continuous to work
  reassigning a failed package (if any) to another build host.

  EXTRA_DEPS_CMD variable has been removed from configuration.
  Packages listed in EXTRA_DEPS are built one-by-one in order they are
  listed in.

  stage_gen_report: new link in "Jumps" section

===================================================================
Version 0.24.0, by Aleksey Cheusov

  distbb.conf is splitted into two parts: global defaults
  (distbb.default.conf) and user's settings (distbb.conf). This is
  major change in distbb! Instead of upgrading your existing
  distbb.conf it is *strongly* recommended to recreate it from
  examples/ template. Sorry for inconvenience.

  added: 'distbb -r|--retry' option. if your bulk build failed for
  some reason, you may continue it from that point it stopped at by
  running 'distbb -r -B YYYYMM.HHMM'

  stage_upload_pkgs now supports NO_BIN_ON_CDROM and NO_BIN_ON_FTP.
  By default all packages are uploaded. If you want to change this,
  set UPLOAD_PKGS_FILES variable in your distbb.conf
  (See distbb.default.conf for a list of available variants).

  stage_xxxx.html improvements. Packages failed due to their
  dependencies now have their own info.html. So, you can see its
  summary and decide whether to fix this package or not.

  DEPENDS_TARGET configuration variable is removed, now it should be
  a part of EXTRA_OPTS. See distbb.default.conf

  mini report is introduced (META/report_mini.txt) which is sent by
  stage_report (by default). In this mini report "Failures per
  maintainer" and "Failed due to dependencies" sections are removed.
  A purpose of this is to reduce a size of the report sent by email
  (pkgsrc-bulk mailing list has limitations).

  New config variable REPORT_MINI_SIZE_LIMIT. report_mini.txt sent by
  email is limited to approximately REPORT_MINI_SIZE_LIMIT bytes.

  PKGNAMEs are removed from report{,_mini}.txt. This also reduces
  report's size.

  New configuration variable BUILD_STAGES which stores a list of
  building stages.  If you want to, for example, send report before
  uploading binaries, change this variable in your distbb.conf.
  But be careful, list of available stages may change in the future.

  dbb_init target does not output useless noise to stdout anymore. As
  a result it is usually not listed in failed package's stage_*.html.

  Usage of REPORT_CMD changed. Now redirection from stdin (report.txt)
  should be inside it. Update your distbb.conf and set I_AM_READY to 4

  ADDED: new config variables USER_MAIL and MAIL_PROG. They are for
  stage_report.

  ADDED: PKG_CMP_SUMMARY_CMD configuration variable, for setting
  a program for comparing pkg_summary(5) for available binaries and
  pkg_src_summary collected from pkgsrc source tree.

  distbb.default.conf SPECIAL_PACKAGES:
  'dbb_canbebuild' and 'replace' targets removed, 'dbb_vars' added

  dbb_vars target fix: POSIX sed does not except \n

===================================================================
Version 0.23.1, by Aleksey Cheusov, Thu,  6 Nov 2008 01:51:28 +0200

  fix: yet another PKGNAME->PKGPATHm_PKGNAME
  movement in stage_gen_report

===================================================================
Version 0.23.0, by Aleksey Cheusov, Sun,  2 Nov 2008 17:04:29 +0200

  While running bulk builds for PKGSRC+WIP packages, I've found that
  PKGNAME is not unique for ALL packages. So, neither PKGPATH nor
  PKGNAME is unique.  This leads to distbb failure happened because
  different packages have the same directory for logging.  To avoid
  this I've changed per-package logging directory from PKGNAME to
  category_package_PKGNAME, e.g. pkgtools_pkg_chk_pkg_chk-1.2.3.

     The same may happen if you build, for example, (for testing
     purposes) both
       textproc/dictem:EMACS_TYPE=xemacs215 and
       textproc/dictem:EMACS_TYPE=xemacs214.
     In both cases PKGNAME remain the same. This case is not fixed yet.

===================================================================
Version 0.22.2, by Aleksey Cheusov, Fri, 31 Oct 2008 19:38:24 +0200

  FIXED: qt3-libs and qt4-libs fail at dbb_vars stage because of '<'
  symbol inside CONFIGURE_ARGS value. NOW it is fixed.

===================================================================
Version 0.22.1, by Aleksey Cheusov, Fri, 24 Oct 2008 11:25:43 +0300

  FIXED typo in stag_gen_report:
       packages_failed_prev_cnt(bug) -> packages_failed_deps_cnt(ok)

  Workaround for the following bug in Korn shell.
     Seen on Interix's /bin/sh, FreeBSD's /bin/sh (and NetBSD's /bin/ksh)

       0 ~>cat /home/cheusov/tmp/1.sh
       #!/bin/sh
       set -e
       if eval false; then
           echo 'Really?'
       fi
       echo "Ok"
       0 ~>/bin/sh /home/cheusov/tmp/1.sh # good
       Ok
       0 ~>/bin/ksh /home/cheusov/tmp/1.sh # bad
       1 ~>

  DISTBB feature list in README

===================================================================
Version 0.22.0, by Aleksey Cheusov, Sun, 19 Oct 2008 12:04:34 +0300

  New stage_post_build containing user's actions is added.
  Actions are defined in 'post_build' shell function in distbb.conf.
  Update your existing distbb.conf! I_AM_READY=3 is required.

  distbb.mk: new 'dbb_vars' target that outputs formatted variables
  values. They may be useful for debugging.
  I put dbb_vars to the default TARGETS.

  Code updating "virtual best" bulk build directory
  is now separated to an individual stage - stage_update_best.
  It is run after 'stage_gen_report'.

  distbb.conf: logging directory default changed from xxx/log to xxx/logs.

  stage_gen_report: progress messages become more verbose 

===================================================================
Version 0.21.0, by Aleksey Cheusov, Mon, 13 Oct 2008 14:04:05 +0300

  DISTBB_CONF environment variable points to the distbb configuration file,
  it is overriden by -C option (distbb -C). -C option is new option.
  By default @@sysconfdir@@/distbb.conf is used.

  distbb.conf:
     New mandatory conf variable DISTBB_LOCAL_MK, that should
     point to distbb.local.mk

  distbb_diff:
     +d means that given package is now built correctly but
     previously was failed DUE TO ITS DEPENDENCIES

     -c means "pkg_src_summary" failed for given package

     n[-+] changed to N[-+]

  REPORT

     META/packages_total.txt renamed to META/packages_built_total.txt,
     new "Packages built (total)" line added to META/report.html
     META/packages_built_total.txt = META/packages_built_{*}.txt

     New report file META/packages_failed_total.txt,
     new "Packages failed (total)" line added to META/report.html
     META/packages_failed_total.txt = META/packages_failed_{*}.txt

     New report file META/packages_failed_notavail.txt that lists
     packages marked as "not available",
     new "packages marked as not available" line added to report.{txt,html}

     New entry to the report: "Inspected packages"

     PKGNAME/stage_xxx.html: links to other stages appear both at the
     top and bottom of the html page

     If building stage succeeded without any output
     (e.g. dbb_canbebuilt or dbb_excluded) it is not listed in other
     PKGNAME/stage_xxx.html files, i.e. no links to such files

     Link to package's summary (PKGNAME/summary.txt) is added to
     PKGNAME/stage_xxx.html

===================================================================
Version 0.20.1, by Aleksey Cheusov, Tue, 30 Sep 2008 00:58:46 +0300

  hot fix for distbb_diff (stage_gen_report might fail)

===================================================================
Version 0.20.0, by Aleksey Cheusov, Sun, 14 Sep 2008 11:11:33 +0300

  FIX: serious bug in "stage_build is rerunable" feature.
  Generating a queue of tasks was not fully correct.

  FIX: stage_gen_report may fail because of spaces inside MAINTAINER
  field in package's summary (lang/gauche/Makefile revision 1.50).
  Now everything after comma is removed, that is only first maintainer
  in the list is printed.

  fix: META/packages_{built,failed}.txt may have duplicates when
  PREFIX/libexec/distbb/stage_build is run more than once
  (rerun manually after unexpected failure)

  New section in report.{html,txt} - "old bulk build vs. new bulk build".
  It contains a list of packages that was built previosuly but failed
  and more. See information about distbb_diff executable below.
  To activate it, run 'distbb -B'. By default this feature is disabled.

  New section in report.{html,txt} - "BEST bulk build vs. new bulk
  build".  The same as "old bulk build vs. new bulk build" but instead
  of "old bulk build", "virtual best" bulk build is used.  It is not a
  real bulk build but a collection of packages that where built
  sucessfully in the past. In this section you'll see ALL regressions,
  not only regressions in comparison with ONE PREVIOUS bulk build.

  report.txt is reorganized. Now it is aligned to 75-columns.
  No "Failed Stage" column, ---- separator between sections,
  "responsible person" is not included anymore
  and other minor changes.

  "failed due to deps" section is reorganized in both report.html and
  report.txt. Both maintainers are output, i.e. maintainer of the
  indirectly failed package and maintainer of failed dependancies.

  New executable - 'distbb_diff' intended for comparing two
  bulk builds.

     usage: distbb_diff [OPTIONS] bbdir1 bbdir2
     OPTIONS:
     -h|--help              display this help message
     -V|--version           distbb version

     bbdir1 - path to bulk build directory, e.g. ~/bulk-logs/20080915.1010
     bbdir2 - path to bulk build directory

     Output format:
     <CMP> <PKGPATH> <PKGBASE> <Version(s)>
     where CMP is a combination of the following characters
     +   - package failed in bbdir1 but succeeded in bbdir2
     -   - package was built sucessfully in bbdir1 but failed in bbdir2
     R   - package was removed or pkg_src_summary failed for it
     d   - package failed due to broken dependency

  fix in stage_gen_report: detecting a "failed stage" is more correct
  now (it takes into acount SPECIAL_PACKAGES field) and becomes clearer.

  Log files PKGNAME/failed_packages.txt have been renamed
         to PKGNAME/failed_deps.txt

  META/*.raw files are not uploaded

  report_html is run once, a whole stage_gen_report is now much faster

  example distbb.conf:
     CREATE_WRKDIR_SYMLINK=no added to EXTRA_OPTS,
     obsolete PAEXEC_BUFSIZE removed,
     -m option added to pkg_src_summary (PKG_UPDATE_SRC_SUMMARY)

===================================================================
Version 0.19.1, by Aleksey Cheusov, Sun, 14 Sep 2008 11:11:33 +0300

  minor addition in stage_gen_report: failed package in "Failed due to
  dependencies" section are now printed in their "short" form.

===================================================================
Version 0.19.0, by Aleksey Cheusov, Sat, 13 Sep 2008 12:00:06 +0300

  Multivariant packages, that is packages/modules for different
  versions of Apache, Python and PHP can be built by "distbb". To
  enable this set PKG_UPDATE_SRC_SUMMARY variable to
    'pkg_src_summary -m ...'
  in your distbb.conf.  Because of this new feature per-package
  logging directories are changed from PKGPATH to PKGNAME. I don't
  like this (sometimes this makes untrivial the searching for logs of
  a particular packages) but I don't see any reasonable
  alternatives. AFAIK Joerg's pbulk does the same.

  "support for multivariant packages" feature has one interesting
  side-effect. PKGPATHs passed to distbb (by -f, -p options or
  LIST_ALL_PKGS_CMD variable in config file) can now be "enriched"
  with building options.
  Format for this "enriched" PKGPATH:
     category/package[:var1=value1[,var2=value2[,...]]]
  For example:
     textproc/dictem:EMACS_TYPE=xemacs214
     www/ap2-wsgi:PKG_APACHE=apache22,PYTHON_VERSION_REQD=25
  Spaces are also allowed inside "valueN", they should be encoded as
  symbol ~ (tilde).
  As a result you can build several variants of a given package
  with different options (see OPTIONS framework) by passing to distbb
  "enriched" PKGPATHs like the following
     sysutils/mc:PKG_OPTIONS.mc=-subshell~-slang~-charset,PKGNAME=mc-light-4.6.1nb4
     sysutils/mc:PKG_OPTIONS.mc=samba,PKGNAME=mc-full-4.6.1nb4
     sysutils/mc:PKG_OPTIONS.mc=-x11,PKGNAME=mc-nox11-4.6.1nb4

  Local copy of pkg_src_summary (i.e. META/pkg_src_summary.txt) is
  used for building packages and generating report. This means that
  after stage_init finished, you may change PKG_SRC_SUMMARY file (by
  another distbb bulk build, pkg_update_src_summary or whatever).

  distbb.conf.in: no need for DISTBB_LOCK variable

  stage_init.in: minor fixes (awk getline vs. end of file)

  stage_init.in: if PKG_UPDATE_SRC_SUMMARY_CMD fails, its stderr is
  output to stderr too, not only to META/build_src_summary_log.txt
  (normally PKG_UPDATE_SRC_SUMMARY_CMD should always exit with exit
  status 0, failure means fatal error).

  Directories for logging (REPORT1_DIR/PKGNAME) are created as soon as
  they become necessary, not all at once at the beginning...
  Code for removing the empty logging directories is moved from
  stage_gen_report to stage_build

===================================================================
Version 0.18.0, by Aleksey Cheusov, Wed,  3 Sep 2008 00:25:49 +0300

  stage_build becomes rerunable. If, for example, your SLAVE hosts
  hanged up, turned off due to power lost or something similar
  happened while BUILDING stage, you can continue running bulk build
  by running PREFIX/libexec/distbb/stage_build <BUILD_ID>.
  NOTE: In case MASTER host hanged up or turned off, rerunning
  stage_build may be not fully correct because of possible data loss.

  stage_build script is fully reworked. As it was planned, tricky and
  dirty shlock/sh/awk code that processes packages graph is now
  removed from distbb. All necessary functionality is generalized and
  becomes a part of external utility "paexec" (see paexec -s option).
  As a result pkgtools/shlock is not used anymore.

  wip/netbsd-uuencode is not used anymore. PAEXEC sends unencoded data
  to distbb.

===================================================================
Version 0.17.0, by Aleksey Cheusov, Fri, 25 Jul 2008 15:57:14 +0300

  ADDED: -p option. If you want to build a few packages, you
  can specify them in command line:

      distbb -p 'wip/dict-server wip/pkg_online wip/distbb'

      Actually this option was added in version 0.16.0.
      I just forgot to mention it in appropriate NEWS section.

  FIXED: packages for which pkg_src_summary (pkgsrc tree scanning) failed
      (bad PKGPATH, errors in Makefile etc.)
      appear in META/packages_built_prev.txt.

      Now such packages are collected in META/package_failed_scan.txt
      If such failures happen, report.html includes an additional line

         Packages failed (pkg_src_summary/scanning)  <COUNT>  <LOGS>

  META/packages_*.txt files now look nicer. MAINTAINER field is
  added. All fields are formatted.

  Slave hosts/chroots save the building logs locally and send them to
  the master host only after building is completed/failed. This can
  speed-up building.

  "Top offenders" -> "Failures per maintainer"
     Some developers treat the word "offender" offensive.

  Packages failed at dbb_canbebuilt (that is packages failed because
  of ONLY_FOR_PLATFORM, ONLY_FOR_PLATFORM etc.) and dbb_excluded
  (packages are excluded from bulk build by person who runs a bulk
  build) stages do not increase "failures per maintainer" counter.

     It is recommended to always include dbb_canbebuilt to TARGETS,
     otherwise counters in "Failures per maintainer" will be not fully
     correct.

  Speeds-ups for stage_gen_report

  dbb_init moved back from distbb.mk to the script "slave"

===================================================================
Version 0.16.0, by Aleksey Cheusov, Sat, 19 Jul 2008 14:13:26 +0300

  fixed: after bulk build finished, not all empty CATEGORY/PACKAGE
  directories were removed.

  packages_built_prev.txt, packages_built.txt, packages_failed.txt,
  packages_failed_deps.txt and packages_total.txt files now contain
  both PKGPATH and PKGNAME

  META/summary_cmp.txt is generated (pkg_summary vs. pkg_src_summary
  comparison) and is included to report.html

  META/pkg_src_summary.txt is generated and is included to report.html

  Progress messages are generated in META/progress.txt.
  This file is included to report.html

  Cleaning the working directories is now optional.
    distbb.conf:
       CLEAN_TARGET=clean    # clean them! (default in example distbb.conf)
       CLEAN_TARGET=dbb_none # keep them!
    Update your distbb.conf!

  html link to itself is removed from report.html

  CATEGORY/PKG/stage_*.html log files also conform to "HTML 4.01 Strict".
  Tested via http://validator.w3.org

  An internal "init" target and initial (before building start)
  "clean" targets are not hard-coded in libexec/distbb/slave script
  anymore.  The special target "dbb_init" is implemented in
  share/distbb/distbb.mk for initialization (removing PREFIX/PKGDBDIR
  and unpacking bootstrap).  Both "dbb_init" and "clean"
  targets should be a part of TARGETS variables.  Update your local
  distbb.conf and set I_AM_READY to 2

  META/packages_built.txt is sorted alphabetically and is included to
  report.html as "list", That is, no "sorted" and unsorted" lists
  anymore.

  Minor fixes and additions in example distbb.conf

===================================================================
Version 0.15.1, by Aleksey Cheusov, Mon,  7 Jul 2008 18:06:24 +0300

 FIXED: another bug in handling EXTRA_DEPS

===================================================================
Version 0.15.0, by Aleksey Cheusov, Sat, 21 Jun 2008 19:59:21 +0300

  META/packages_total.txt file is built that contains a list of built
  packages plus those that are not rebuilt (no need for this). This
  file is uploaded by stage_upload_logs.

  report.html now includes links to META/packages_total.txt,
  META/packages_built_prev.txt, META/packages_built.txt,
  META/packages_failed.txt and META/packages_failed_deps.txt.

  added: option -B to 'distbb' executable. This is useful for
  debugging. It sets an unchangeable BUILD_ID.

  LIST_ALL_PKGS_CMD command is run on the first slave host from
  $SLAVES list in case both SLAVES and TRANSPORT are set.  The problem
  with master host is that master's and slave's /usr/pkgsrc may be not
  the same.

===================================================================
Version 0.14.0, by Aleksey Cheusov, Wed, 18 Jun 2008 22:14:56 +0300

  FIXED: sometimes packages are built in a wrong order.

  FIXED: there were two examples for PKG_UPDATE_SRC_SUMMARY_CMD
  in the sample distbb.conf:
  'pkg_update_src_summary' and 'pkg_src_summary'. But the latter
  just didn't work because these two commands have incompatible usage.
  Now this is fixed but changes are incompatible with old distbb.conf.
  Update it according to the new sample for distbb.conf.
  Also set I_AM_READY variable to 1.
  Side effect: 'pkg_src_summary -A' can now be used for generating summary.
  This will build pkg_src_summary only for requested packages (distbb -f)
  and their dependencies, not for entire pkgsrc
  tree (pkg_update_src_summary).
  Both Hubert's bulk build and pbulk work this way. Now distbb too.

  FIX: EXTRA_DEPS now can contain more than one package and is handled
  correctly. Copy EXTRA_DEPS_CMD from the sample to your distbb.conf

  The following files are sorted alphabetically:
     CATEGORY/PACKAGE/failed_packages.txt
     CATEGORY/PACKAGE/failed_because.txt
     META/packages_built_prev.txt
     META/packages_failed_deps.txt
  In case of LOTS of failures this makes searching in these files much easier.

  Latest paexec, runawk and pkg_summary-utils are needed.

  report.html and all others conforms to HTML 4.01 Strict specification.
  Thanks to validator.w3.org
  UTF-8 charset is also used (See NOTES and RESPONSIBLE variables)

  "build_end" date/time are moved from stage_gen_report to stage_build.

  Lots of comments and suggestions in the sample for distbb.conf

  Other minor fixes, improvements and code clean-ups.

===================================================================
Version 0.13.0, by Aleksey Cheusov, Thu, 12 Jun 2008 23:40:46 +0300

  ADDED: mega-feature/new variable SPECIAL_PACKAGES

     Example and notes from distbb.conf:
     ...
     # some packages fail to build because they are a part of pkgsrc
     # bootstrap.  if you want to build them try to uncomment lines in
     # SPECIAL_PACKAGES variables
     #
     # you may also want to use different building options
     # to build some packages, e.g. to use gcc-3.4 for building audio/festival,
     # under Linux Debian/etch or DragonFlyBSD where it is a part
     # of "base" system, see lines in SPECIAL_PACKAGES.
     # NOTE: There are no quotes around string containing spaces
     #       (this is not shell ;-) )
     # NOTE: An empty string after EACH package section is mandatory
     # NOTE: Do not forget that you can define your own Makefile targets
     #       in distbb.local.mk. this new target can run, for example,
     #       pkg_add -u

     SPECIAL_PACKAGES="\
     #PKGPATH=pkgtools/digest
     #TARGETS=depends fetch checksum configure build package
     #EXTRA_OPTS=BATCH=yes PKG_VERBOSE=1 USE_DESTDIR=full CHECK_SHLIBS=no
     #
     #PKGPATH=pkgtools/bootstrap-mk-files
     #TARGETS=depends fetch checksum configure build package
     #EXTRA_OPTS=BATCH=yes PKG_VERBOSE=1 USE_DESTDIR=full CHECK_SHLIBS=no
     #
     #PKGPATH=net/tnftp
     #TARGETS=depends fetch checksum configure build package
     #EXTRA_OPTS=BATCH=yes PKG_VERBOSE=1 USE_DESTDIR=full CHECK_SHLIBS=no
     #
     #PKGPATH=sysutils/checkperms
     #TARGETS=depends fetch checksum configure build package
     #EXTRA_OPTS=BATCH=yes PKG_VERBOSE=1 USE_DESTDIR=full CHECK_SHLIBS=no
     #
     #PKGPATH=devel/bmake
     #TARGETS=depends fetch checksum configure build package
     #EXTRA_OPTS=BATCH=yes PKG_VERBOSE=1 USE_DESTDIR=full CHECK_SHLIBS=no
     #
     #PKGPATH=pkgtools/pkg_install
     #TARGETS=depends fetch checksum configure build package
     #EXTRA_OPTS=BATCH=yes PKG_VERBOSE=1 USE_DESTDIR=full CHECK_SHLIBS=no
     #
     #PKGPATH=audio/festival # TARGETS is not changed!
     #EXTRA_OPTS=CC=/usr/bin/gcc-3.4 CXX=/usr/bin/g++-3.4
     #
     "

  distbb.conf: 'extract' and 'patch' targets are in TARGETS now.

  distbb.conf: fix in comment: package-deinstall -> deinstall

===================================================================
Version 0.12.0, by Aleksey Cheusov, Sun,  8 Jun 2008 02:49:08 +0300

  Two new variables (for distbb.conf) are introduced:
    - STDIN_FROM_DEV_NULL:
      Some broken packages need an interaction with user even if BATCH
      variable is set to YES. This may "hang" a bulk build. If you
      don't want this, set the following variable to "1", otherwise
      leave it unset.
    - LOG_SIZE_LIMIT:
      If STDIN_FROM_DEV_NULL=1, some packages may produce infinite
      garbage to stdout and in turn may waste ALL your free disk
      space. To prevent this, set the following limit. Leave it unset
      for no limit.

  fix:
     If there is nothing to be built stage_build may fail under Linux,
     Solaris, HP-UX, Interix and probably many others. This is because
     Free/NetBSD xargs works differently - in case of no input it just
     do NOT call program (xargs's argument) at all. Others do.

   stage_*.txt files are not uploaded anymore.
   Only html versions are uploaded.

   README: distbb is NOT fork of pbulk in any way! ;-)
   It was written from scratch.

===================================================================
Version 0.11.0, by Aleksey Cheusov, Thu, 15 May 2008 18:59:18 +0300

  Both .html and .txt report include a number failed dependencies for
  each indirectly failed package. This number was limited by hard-coded
  constant, now it is regulated by variable MAX_FAILED_DEPS_CNT Add it
  to your distbb.conf.

  stage_gen_report: fix for Debian dash - its ` and $( work
  differently :-(

  distbb uses TARGETS variables that contains a list of targets to run
  in order to build, install and create a binary package. TARGETS
  variable can easily be changed by user and this makes distbb very
  flexible - user may change build order or even define his own
  build/packaging procedure. As of this version user can define
  his/her own make rules without changing mk.conf and without
  recreating bootstrap tarball - by changing
  /usr/pkg_distbb/etc/distbb.local.mk file, second configuration file
  of distbb. distbb also defines two its own special targets which you
  can use: dbb_canbebuilt and dbb_excluded.  Read comments in
  /usr/pkg_distbb/share/distbb/distbb.mk about them.  Note that
  etc/distbb/local.mk MUST exist, copy it from
  share/examples/distbb/distbb.local.mk to etc/distbb.local.mk
  and edit for preferences.

===================================================================
Version 0.10.0, by Aleksey Cheusov

  At startup, PREFIX and PKGDBDIR directories are deleted and
  bootstrap is unpacked (on all $SLAVES when MASTER_MODE=yes).
  NOTE: if you are upgrading from previous versions of distbb,
  recheck your EXTRACT_BOOTSTRAP_CMD (tar -C / is needed).

  distbb.conf: more examples for alternative/distributed
  PKG_UPDATE_SRC_SUMMARY_CMD. If you'll use distributed one,
  make sure PATH variable contains /usr/pkg_distbb/bin directory.

===================================================================
Version 0.9.0, by Aleksey Cheusov, Fri,  9 May 2008 13:02:30 +0300

  Instead of red counts the "Breaks" column now contains the link to
  the actual list of indirectly failed packages.

  stage_gen_report: hard-coded string "Responsible person" is not printed

  distbb.conf: another variant for PKG_UPDATE_SUMMARY_CMD

  Additions and more details in README

  BUILD_START renamed to BUILD_ID

===================================================================
Version 0.8.0, by Aleksey Cheusov, Sun,  4 May 2008 20:50:43 +0300

  Sometimes building packages stops because some of them require an
  interaction with user. BATCH=yes doesn't help.  In order to prevent
  this, bmake is run with < /dev/null. As a result, such a bad
  packages can not break/stop bulk builds anymore.

  distbb version is included to the report.

  An information about the person that runs a bulk build, is
  optionally included to the report.

  LIST_ALL_PKGS_CMD variable is introduced.  It defaults to
  'pkg_list_all_pkgs'.  If set, the specified command is run to get
  list of packages to be built.
  You need to upgrade your distbb.conf
     Examples:
        LIST_ALL_PKGS_CMD='@@bindir@@/pkg_list_all_pkgs'
        #LIST_ALL_PKGS_CMD='( @@bindir@@/pkg_list_all_pkgs
                              cat my_extra_wip_packages.txt )'

  added: distbb --version|-V options

  "on <SLAVEHOST>" is appended to 'succeeded' and 'FAILED' log
  messages. That is now it is seen on which host a particular package
  succeeded or failed.

  distbb.conf.in:
  # The following is for pkg_summary-tools > 0.5.0
  #PKG_UPDATE_SRC_SUMMARY_CMD='@@bindir@@/pkg_update_src_summary -f "PKGNAME PKGPATH DEPENDS BUILD_DEPENDS"'

===================================================================
Version 0.7.0, by Aleksey Cheusov, Thu, 17 Apr 2008 12:30:58 +0300

  stage_init.in: completely reimplemented. An algorithm become easier
  and cleaner. FIXED: incorrect calculating "build_previously" count,
  and therefore "total_packages" too. The code also become cleaner.

  FIX: build_init.in now doesn't depend on fields order in
  pkg_src_summary (doesn't reply on that PKGPATH is before
  [BUILD_]DEPENDS). This may cause an infinite loop because of
  incorrect (cyclic) dependencies in META/tmp/trans_closure.tmp

  distbb.conf.in:
    minor fix: pkg_src_update_summary -> pkg_update_src_summary

  Exporting LC_ALL=C and other important initializations have been
  moved from distbb.in to common.in. Now every significant
  initialization is made in PREFIX/libexec/distbb/stage_*, i.e. these
  scripts become more all-sufficient.

  Minor changes and fixes in README

===================================================================
Version 0.6.2, by Aleksey Cheusov, Sun, 13 Apr 2008 12:34:17 +0300

  Failures of PKG_SRC_SUMMARY_CMD for individual packages are logged
  and reported

===================================================================
Version 0.6.1, by Aleksey Cheusov, Sun,  6 Apr 2008 15:33:26 +0300

  distbb.conf:
    BATCH=yes by default in distbb.conf

  FIXED: another BUG in handling EXTRA_DEPS

===================================================================
Version 0.6.0, by Aleksey Cheusov

  distbb.conf:
    @@bindir@@/mail -> /usr/bin/mail
    new variables: PKG_UPDATE_SUMMARY_CMD, PKG_UPDATE_SRC_SUMMARY_CMD
      and EXTRA_DEPS

  distbb:
    added: tests for variables that must not be empty

  pkg_src_update_summary  renamed to pkg_update_src_summary

===================================================================
Version 0.5.0, by Aleksey Cheusov, Wed,  2 Apr 2008 23:31:24 +0300

  First publicly available release
