Release Notes for Buildbot v0.8.8
=================================

..
    Any change that adds a feature or fixes a bug should have an entry here.
    Most simply need an additional bulleted list item, but more significant
    changes can be given a subsection of their own.

The following are the release notes for Buildbot v0.8.8
Buildbot v0.8.8 was released on August 22, 2013

Master
------

Features
~~~~~~~~
* The ``MasterShellCommand`` step now correctly handles environment variables passed as list.

* The master now poll the database for pending tasks when running buildbot in multi-master mode.


* The algorithm to match build requests to slaves has been rewritten :pull:`615`.
  The new algorithm automatically takes locks into account, and will not schedule a build only to have it wait on a lock.
  The algorithm also introduces a ``canStartBuild`` builder configuration option which can be used to prevent a build request being assigned to a slave.

* ``buildbot stop`` and ``buildbot restart`` now accept ``--clean`` to stop or restart the master cleanly (allowing all running builds to complete first).

* The :bb:reporter:`IRC` bot now supports clean shutdown and immediate shutdown by using the command 'shutdown'.
  To allow the command to function, you must provide `allowShutdown=True`.

* :bb:step:`CopyDirectory` has been added.

* ``BuildslaveChoiceParameter`` has been added to provide a way to explicitly choose a buildslave
  for a given build.

* default.css now wraps preformatted text by default.

* Slaves can now be paused through the web status.

* The latent buildslave support is less buggy, thanks :pull:`646`.

* The ``treeStableTimer`` for ``AnyBranchScheduler`` now maintains separate timers for separate branches, codebases, projects, and repositories.

* :bb:step:`SVN` has a new option `preferLastChangedRev=True` to use the last changed revision for ``got_revision``

* The build request DB connector method :py:meth:`~buildbot.db.buildrequests.BuildRequestsConnectorComponent.getBuildRequests` can now filter by branch and repository.

* A new :bb:step:`SetProperty` step has been added in ``buildbot.steps.master`` which can set a property directly without accessing the slave.

* The new :bb:step:`LogRenderable` step logs Python objects, which can contain renderables, to the logfile.
  This is helpful for debugging property values during a build.

* 'buildbot try' now has an additional option `--property` option to set properties.
  Unlike the existing option `--properties` option, this new option supports setting
  only a single property and therefore allows commas to be included in the property
  name and value.

* The ``Git`` step has a new ``config`` option, which accepts a dict of git configuration options to
  pass to the low-level git commands.  See :bb:step:`Git` for details.

* In :bb:step:`ShellCommand` ShellCommand now validates its arguments during config and will identify any invalid arguments before a build is started.

* The list of force schedulers in the web UI is now sorted by name.

* OpenStack-based Latent Buildslave support was added.
  See :pull:`666`.

* Master-side support for P4 is available, and provides a great deal more flexibility than the old slave-side step.
  See :pull:`596`.

* Master-side support for Repo is available.
  The step parameters changed to camelCase.
  ``repo_downloads``, and ``manifest_override_url`` properties are no longer hardcoded, but instead consult as default values via renderables.
  Renderable are used in favor of callables for ``syncAllBranches`` and ``updateTarball``.

* Builder configurations can now include a ``description``, which will appear in the web UI to help humans figure out what the builder does.

* GNUAutoconf and other pre-defined factories now work correctly (:bug:`2402`)

* The pubDate in RSS feeds is now rendered correctly (:bug:`2530`)

Deprecations, Removals, and Non-Compatible Changes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* The ``split_file`` function for :bb:chsrc:`SVNPoller` may now return a dictionary instead of a tuple.
  This allows it to add extra information about a change (such as ``project`` or ``repository``).

* The ``workdir`` build property has been renamed to ``builddir``.
  This change accurately reflects its content; the term "workdir" means something different.
  ``workdir`` is currently still supported for backwards compatibility, but will be removed eventually.

* The ``Blocker`` step has been removed.

* Several polling ChangeSources are now documented to take a ``pollInterval`` argument, instead of ``pollinterval``.
  The old name is still supported.

* StatusReceivers' checkConfig method should no longer take an `errors` parameter.
  It should indicate errors by calling :py:func:`~buildbot.config.error`.

* Build steps now require that their name be a string.
  Previously, they would accept anything, but not behave appropriately.

* The web status no longer displays a potentially misleading message, indicating whether the build
  can be rebuilt exactly.

* The ``SetProperty`` step in ``buildbot.steps.shell`` has been renamed to :bb:step:`SetPropertyFromCommand`.

* The EC2 and libvirt latent slaves have been moved to ``buildbot.buildslave.ec2`` and ``buildbot.buildslave.libirt`` respectively.

* Pre v0.8.7 versions of buildbot supported passing keyword arguments to ``buildbot.process.BuildFactory.addStep``, but this was dropped.
  Support was added again, while still being deprecated, to ease transition.

Changes for Developers
~~~~~~~~~~~~~~~~~~~~~~

* Added an optional build start callback to ``buildbot.status.status_gerrit.GerritStatusPush``
  This release includes the fix for :bug:`2536`.

* An optional ``startCB`` callback to :bb:reporter:`GerritStatusPush` can be used
  to send a message back to the committer.
  See the linked documentation for details.

* bb:sched:`ChoiceStringParameter` has a new method ``getChoices`` that can be used to generate
  content dynamically for Force scheduler forms.

Slave
-----

Features
~~~~~~~~

* The fix for Twisted bug #5079 is now applied on the slave side, too.
  This fixes a perspective broker memory leak in older versions of Twisted.
  This fix was added on the master in Buildbot-0.8.4 (see :bug:`1958`).

* The ``--nodaemon`` option to ``buildslave start`` now correctly prevents the slave from forking before running.

Deprecations, Removals, and Non-Compatible Changes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Details
-------

For a more detailed description of the changes made in this version, see the
git log itself:

.. code-block:: none

   git log v0.8.7..v0.8.8
