:orphan: .. _main_authoring: Authoring Projects ================== This section details how to use the BuildStream YAML format to create your own project or modify existing projects. Project format -------------- * :ref:`formatintro` * :ref:`format_structure` * :ref:`format_composition` * :ref:`format_directives` * :ref:`projectconf` * :ref:`project_essentials` * :ref:`project_shell` * :ref:`project_plugins` * :ref:`project_options` * :ref:`project_defaults` * :ref:`project_builtin_defaults` * :ref:`format` * :ref:`format_basics` * :ref:`format_dependencies` * :ref:`format_variables` * :ref:`public` Plugins ------- Plugins provide their own individual plugin specific YAML configurations, The element ``.bst`` files can specify plugin specific configuration in the :ref:`config section `, while sources declared on a given element specify their plugin specific configuration :ref:`directly on their main dictionary `. Elements ~~~~~~~~ The following element types are provided with BuildStream: General Elements '''''''''''''''' * :mod:`stack ` - Symbolic Element for dependency grouping * :mod:`import ` - Import sources directly * :mod:`compose ` - Compose the output of multiple elements * :mod:`script ` - Run scripts to create output * :mod:`junction ` - Integrate subprojects * :mod:`filter ` - Extract a subset of files from another element Build Elements '''''''''''''' * :mod:`manual ` - Manual Build Element * :mod:`autotools ` - Autotools Build Element * :mod:`cmake ` - CMake Build Element * :mod:`qmake ` - QMake Build Element * :mod:`distutils ` - Python Distutils Build Element * :mod:`makemaker ` - Perl MakeMaker Build Element * :mod:`modulebuild ` - Perl Module::Build Build Element * :mod:`meson ` - Meson Build Element * :mod:`pip ` - Pip build element Sources ~~~~~~~ The following source types are provided with BuildStream: * :mod:`local ` - A Source implementation for local files and directories * :mod:`tar ` - A Source implementation for tarballs * :mod:`zip ` - A Source implementation for zip archives * :mod:`git ` - A Source implementation for git * :mod:`bzr ` - A Source implementation for bazaar * :mod:`ostree ` - A Source implementation for ostree * :mod:`patch ` - A Source implementation for applying local patches External Plugins ---------------- External plugins need to be installed separately, here is a list of BuildStream plugin projects known to us at this time: * `bst-external `_