Bob 1.1 Release Notes
=====================

Changes made since Bob 1.0 include the following.

New features
------------

Recipes
~~~~~~~

* Bob gained the ability to express dependencies between tools.

  A tool declared by :ref:`configuration-recipes-provideTools` can specify
  additional tool dependencies via ``dependTools`` and/or ``dependToolsWeak``.
  If a recipe uses the declared tool, all specified dependencies will be added
  implicitly to the used tool list.

  See :pull:`639`.
* The :ref:`configuration-recipes-shared` attribute was upgraded to a full
  boolean property.

  Previously, the ``shared`` attribute could just be set statically to
  ``True``.  Now it is possible to use a boolean expression to control the
  sharing based on the recipe input.

  See :pull:`640`.
* Package steps can now optionally get access to all dependencies.

  So far, dependencies named in the "depends" section were only available
  during the build step. Sometimes recipes only need to gather results from
  other packages. For this case, it is nice to have the dependencies available
  in the package step too. The :ref:`configuration-recipes-packagedepends`
  boolean attribute optionally enables access to all dependencies in the
  package step.

  See :issue:`647` and :pull:`645`.

Bob ls-recipes
~~~~~~~~~~~~~~

Bob gained a new command: :ref:`manpage-ls-recipes`. It can be used to list all
known recipes. In contrast to the :ref:`manpage-bob-ls` command, which works on
packages, this command works on recipes. Additionally, the ouput can be
filtered to show only used recipes or recipes that are currently orphaned,
i.e., not referenced by a root package.

See :pull:`649`.

Improvements
------------

* Bob has been made more resilient with respect to binary artifact corruptions.

  Any downloaded artifact is checked for its integrity. Specifically, the
  checksum of the extracted files is compared to the audit trail. This should
  detect any accidental corruptions. See :issue:`636` and :pull:`637`.
* Bob now prints the full file name of files where the YAML parsing has failed.
  (:issue:`641`, :pull:`642`).
* The ``$(resubst)`` regular expression :ref:`string substitution function
  <configuration-principle-subst>` has been added. (:pull:`643`)
* Bob :ref:`manpage-bob-query-recipe` learned to handle generic :ref:`package path
  queries <manpage-bobpaths>`. It is now possible to find the source files of
  multiple packages at once. (:pull:`648`)

Bug fixes
---------

* DNS resolution failures are not treated as error any more when downloading
  artifacts. (:pull:`638`)
* A crash in :meth:`bob.input.Package.isAlias` has been fixed.
* Fixed repeated invocation of deterministic URL SCMs with gz/xz compressed
  files that are uncompressed by Bob. Previously, the file would be truncated
  if the checkout step got re-executed for whatever reason. (:pull:`650`)
