blob: 1d8c4414aa3db199c8a711f1b9dae1ca52766242 [file] [log] [blame]
.. BuildStream documentation master file, created by
sphinx-quickstart on Mon Nov 7 21:03:37 2016.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
.. toctree::
:maxdepth: 2
BuildStream Documentation
=========================
About BuildStream
-----------------
BuildStream is a flexible and extensible framework for the modelling of build
pipelines in a declarative YAML format, written in python.
These pipelines are composed of abstract elements which perform mutations on
on *filesystem data* as input and output, and are related to eachother by their
dependencies.
Basic element types for importing SDKs in the form of tarballs or ostree checkouts,
building software components and exporting SDKs or deploying bootable filesystem images
will be included in BuildStream, but it is expected that projects forge their own custom
elements for doing more elaborate things such as deploying software in special ways.
Using BuildStream
=================
Here are some resources to help understand the BuildStream format and also to get
off the ground installing it on a new host.
* :ref:`installing`
* :ref:`invoking`
* :ref:`completion`
* :ref:`config`
* :ref:`projectconf`
* :ref:`format`
* :ref:`public`
* :ref:`artifacts`
* :ref:`project_from_scratch`
Elements
--------
General Elements
~~~~~~~~~~~~~~~~
* :mod:`stack <elements.stack>` - Symbolic Element for dependency grouping
* :mod:`import <elements.import>` - Import sources directly
* :mod:`compose <elements.compose>` - Compose the output of multiple elements
* :mod:`script <elements.script>` - Run scripts to create output
* :mod:`x86image <elements.x86image>` - Create x86 bootable disk images
* :mod:`dpkg_deploy <elements.dpkg_deploy>` - Create debian packages
Build Elements
~~~~~~~~~~~~~~
* :mod:`manual <elements.manual>` - Manual Build Element
* :mod:`autotools <elements.autotools>` - Autotools Build Element
* :mod:`cmake <elements.cmake>` - CMake Build Element
* :mod:`qmake <elements.qmake>` - QMake Build Element
* :mod:`distutils <elements.distutils>` - Python Distutils Build Element
* :mod:`makemaker <elements.makemaker>` - Perl MakeMaker Build Element
* :mod:`modulebuild <elements.modulebuild>` - Perl Module::Build Build Element
* :mod:`meson <elements.meson>` - Meson Build Element
* :mod:`dpkg_build <elements.dpkg_build>` - Dpkg-based build element
* :mod:`pip <elements.pip>` - Pip build element
Sources
--------
The following source types are provided with BuildStream:
* :mod:`local <sources.local>` - A Source implementation for local files and directories
* :mod:`tar <sources.tar>` - A Source implementation for tarballs
* :mod:`git <sources.git>` - A Source implementation for git
* :mod:`bzr <sources.bzr>` - A Source implementation for bazaar
* :mod:`ostree <sources.ostree>` - A Source implementation for ostree
* :mod:`patch <sources.patch>` - A Source implementation for applying local patches
.. _core_framework:
Core Framework
--------------
The core public APIs are of interest to anyone who wishes to
implement custom :mod:`Element <buildstream.element>` or
:mod:`Source <buildstream.source>` plugins.
* :mod:`Plugin <buildstream.plugin>` - Base Class for all plugins
* :mod:`Source <buildstream.source>` - Base Source Class
* :mod:`Element <buildstream.element>` - Base Element Class
* :mod:`BuildElement <buildstream.buildelement>` - Build Element Class
* :mod:`ScriptElement <buildstream.scriptelement>` - Script Element Class
* :mod:`Context <buildstream.context>` - Invocation Context
* :mod:`Project <buildstream.project>` - Loaded Project
* :mod:`Sandbox <buildstream.sandbox.sandbox>` - Build Sandbox
* :mod:`Utilities <buildstream.utils>` - Utilities for Plugins
Indices and tables
------------------
* :ref:`modindex`
* :ref:`genindex`