Giter Club home page Giter Club logo

buildstream's Introduction

About

image

image

GitHub Workflow Status

image

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 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 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 previously built elements (artifacts) from a local/remote cache, or builds the elements 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?

To get started, first install BuildStream by following the installation guide and then follow our tutorial in the user guide.

We also recommend exploring some existing BuildStream projects:

If you have any questions please ask on our #buildstream channel in irc.gnome.org

Availability in distros

  • BuildStream:

image

  • BuildStream external plugins (bst-external)

image

buildstream's People

Contributors

abderrahim avatar aevri avatar beckyella16 avatar benjaminschubert avatar cs-shadow avatar ctraoul avatar cytolentino avatar danielsilverstone-ct avatar devcurmudgeon avatar edbaunton avatar gokcennurlu avatar gtristan avatar jjardon avatar jmacarthur avatar jonathanmaw avatar juergbi avatar knownnexus avatar leeming avatar phildawson-ct avatar phildawson1 avatar qinusty avatar richardmaw-codethink avatar ssssam avatar tlater avatar tmewett avatar tom--pollard avatar tomcoldrick-ct avatar traveltissues avatar valentindavid avatar wsalmonct avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.