Configuration Format Changes
============================

Version 1 (Alias '0.10')
------------------------

Added
~~~~~

- Include mechanism
- Version check


Version 2
---------

Changed
~~~~~~~

- Configuration file versions are now integers

Fixed
~~~~~

- Including files from repos that are not defined in the current file

Version 3
---------

Added
~~~~~

- ``Task`` key that allows one to specify which task to run (``bitbake -c``)

Version 4
---------

Added
~~~~~

- ``Target`` key now allows one to pass a list of target names

Version 5
---------

Changed behavior
~~~~~~~~~~~~~~~~

- Using ``multiconfig:*`` targets adds appropriate ``BBMULTICONFIG`` entries to
  the ``local.conf`` automatically.

Version 6
---------

Added
~~~~~

- ``env`` key now allows one to pass custom environment variables to the
  bitbake build process.

Version 7
---------

Added
~~~~~

- ``type`` property to ``repos`` to be able to express which version control
  system to use.

Version 8
---------

Added
~~~~~

- ``patches`` property to ``repos`` to be able to apply additional patches to
  the repo.

Version 9
---------

Added
~~~~~

- ``defaults`` key can now be used to set a default value for the repository
  property ``refspec`` and the repository patch property ``repo``. These
  default values will be used if the appropriate properties are not defined
  for a given repository or patch.

Version 10
----------

Added
~~~~~

- ``build_system`` property to pre-select OE or Isar.

Version 11
----------

Changed behavior
~~~~~~~~~~~~~~~~

- String item ``includes`` are now using repo-relative paths. File-relative is
  still supported by issues a deprecation warning.
- bblayers.conf is generated with ``BBPATH`` and ``BBFILES`` preset to common
  defaults. Those can still be overwritten via ``bblayers_conf_headers``.

Added
~~~~~

- ``menu_configuration`` key stores the selections done via ``kas menu`` in a
  configuration file. It is only evaluated by that plugin.

Version 12
----------

Added
~~~~~

- For repositories, ``url`` and ``path`` can now be overridden with a
  null-value to switch between version-controlled repositories and unversioned
  local folders.

Version 13
----------

Added
~~~~~

- Variables used in the ``env`` section can now be assigned *null* as value. In
  this case the variables are only exported to the bb env whitelist.

Version 14
----------

Added
~~~~~

- The keys ``commit`` and ``branch`` are introduced as replacement of
  ``refspec`` in ``repos`` and ``defaults``. ``refspec`` is now deprecated and
  will eventually be removed.
- The ``overrides`` top-level entry can be used to pin floating repo branches.
- ``_source_dir`` top-level entry is auto-generated when using the menu plugin
  and provides the path to the top repo at time of invoking the plugin.
- ``_source_dir_host`` top-level entry is auto-generated by kas-container to
  track the source path outside of the container.

Version 15
----------

Added
~~~~~

- The key ``tag`` is introduced as a complement to ``commit`` and ``branch``
  in ``repos``.

Version 16
----------

Fixed
~~~~~

- The key ``tag`` introduced in v15 was not supported in ``defaults``.
  It's now added.

Version 17
----------

Added
~~~~~

- The key ``artifacts`` is introduced to describe expected build artifacts.

Version 18
----------

Added
~~~~~

The repo keys ``tag`` and ``branch`` can now be set to ``null`` to remove
these properties from the repo. This is needed in case a default value is
set in the ``defaults`` section that should not apply to a repo.

Version 19
----------

Added
~~~~~

Various keys for signature verification of repositories were added:

- top level ``signers`` object to specify keys for signature verification
- in repo definitions, ``signed`` and ``allowed_signers`` are added to
  specify whether a repo is signed and which data to use for verification.
