This is a proposal to allow `bst build` or `bst checkout` to
optionally produce a manifest file describing the collection of
sources used to build the output. This will allow CI to be
configured to produce a build manifest which can be referenced
and compared against for releases.
This comes from a downstream issue in freedesktop and is also
documented as buildstream issue #235.
Problem Statement
~~~~~~~~~~~~
BuildStream currently collects a collection of .bst files to
configure and build a collection of artifacts. On a release,
project maintainers may wish to provide a manifest of build
sources, which currently means raking through a collection of
.bst files for sources.
Proposed Solution
~~~~~~~~~~~
When `bst build` is supplied with an option "--build-manifest"
it will produce a YAML dictionary containing the date/time of
the build, the version of buildstream used, a collection of
elements and their sources (name, url, ref).
This feature will be opt-in and therefore will not change the
default behaviour of buildstream while still adding a useful
feature for those users who choose to use it.
Alternatives
~~~~~~~
Alternatively to this solution, this functionality could be
added to the proposed `bst artifact` subcommand as a way of
listing the current artifacts within your project.
However I believe that producing a manfiest file from a build
is more about having a reference of the contents of the build,
what sources were used and what artifacts have been produced.
Cheers,
Josh (Qinusty)