Metadata-Version: 2.1
Name: BuildStream
Version: 1.6.9
Summary: A framework for modelling build pipelines in YAML
Home-page: https://gitlab.com/BuildStream/buildstream
Author: BuildStream Developers
Author-email: dev@buildstream.apache.org
License: LGPL
Project-URL: Documentation, https://buildstream.gitlab.io/buildstream/
Project-URL: Tracker, https://gitlab.com/BuildStream/buildstream/issues
Project-URL: Mailing List, https://lists.apache.org/list.html?dev@buildstream.apache.org
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Software Development :: Build Tools
Requires-Python: ~=3.5
Description-Content-Type: text/x-rst; charset=UTF-8
License-File: COPYING
Requires-Dist: Click
Requires-Dist: grpcio>=1.30
Requires-Dist: jinja2>=2.10
Requires-Dist: pluginbase
Requires-Dist: protobuf>=3.19
Requires-Dist: psutil
Requires-Dist: ruamel.yaml
Requires-Dist: setuptools
Requires-Dist: ujson

About
-----
.. image:: https://img.shields.io/github/workflow/status/apache/buildstream/PR%20Checks/bst-1
   :alt: GitHub Workflow Status
   :target: https://github.com/apache/buildstream/actions/workflows/ci.yml?query=branch%3Abst-1

What is BuildStream?
====================
BuildStream is a Free Software tool for building/integrating software stacks.
It takes inspiration, lessons and use-cases from various projects including
OBS, Reproducible Builds, Yocto, Baserock, Buildroot, Aboriginal, GNOME Continuous,
JHBuild, Flatpak Builder and Android repo.

BuildStream supports multiple build-systems (e.g. autotools, cmake, cpan, distutils,
make, meson, qmake), and can create outputs in a range of formats (e.g. debian packages,
flatpak runtimes, sysroots, system images) for multiple platforms and chipsets.


Why should I use BuildStream?
=============================
BuildStream offers the following advantages:

* **Declarative build instructions/definitions**

  BuildStream provides a a flexible and extensible framework for the modelling
  of software build pipelines in a declarative YAML format, which allows you to
  manipulate filesystem data in a controlled, reproducible sandboxed environment.

* **Support for developer and integrator workflows**

  BuildStream provides traceability and reproducibility for integrators handling
  stacks of hundreds/thousands of components, as well as workspace features and
  shortcuts to minimise cycle-time for developers.

* **Fast and predictable**

  BuildStream can cache previous builds and track changes to source file content
  and build/config commands. BuildStream only rebuilds the things that have changed.

* **Extensible**

  You can extend BuildStream to support your favourite build-system.

* **Bootstrap toolchains and bootable systems**

  BuildStream can create full systems and complete toolchains from scratch, for
  a range of ISAs including x86_32, x86_64, ARMv7, ARMv8, MIPS.


How do I use BuildStream?
=========================
Please refer to the `documentation <https://buildstream.gitlab.io/buildstream/>`_
for  information about installing BuildStream, and about the BuildStream YAML format
and plugin options.


How does BuildStream work?
==========================
BuildStream operates on a set of YAML files (.bst files), as follows:

* loads the YAML files which describe the target(s) and all dependencies
* evaluates the version information and build instructions to calculate a build
  graph for the target(s) and all dependencies and unique cache-keys for each
  element
* retrieves elements from cache if they are already built, or builds them in a
  sandboxed environment using the instructions declared in the .bst files
* transforms/configures and/or deploys the resulting target(s) based on the
  instructions declared in the .bst files.


How can I get started?
======================
The easiest way to get started is to explore some existing .bst files, for example:

* https://gitlab.gnome.org/GNOME/gnome-build-meta/
* https://gitlab.com/freedesktop-sdk/freedesktop-sdk
* https://gitlab.com/baserock/definitions
* https://gitlab.com/BuildStream/buildstream-examples/tree/master/build-x86image
* https://gitlab.com/BuildStream/buildstream-examples/tree/master/netsurf-flatpak

If you have any questions please ask on our `#buildstream <irc://irc.gnome.org/buildstream>`_ channel in `irc.gnome.org <irc://irc.gnome.org>`_

