build2 | Community

The build2 toolchain is developed in the open by the community of people who come together to make creating and maintaining build infrastructure for real-world software projects a pleasant experience.

1State of the Project
2Getting Help and Submitting Bugs
3Source Repository
4Staged Toolchain
5Contributing

1 State of the Project

The build2 project is on the final stage of the pre-1.0.0 development. See the roadmap for what's planned and what we are currently working on.

While breaking changes that affect user buildfiles are still allowed, the bar for such changes is very high (it has to be a fundamental design mistake). As a result, the toolchain can be used for real development (it is already successfully used in customer-facing software such as ODB).

2 Getting Help and Submitting Bugs

The build2 project runs a number of public mailing lists. Questions, bug reports, suggestions can all be sent to users@build2.org (you don't have to subscribe to post).

There is also the #build2 channel on cpplang.slack.com (get an invite) where all of the above is welcome as well.

Issues/pull requests can also be submitted on github.com/build2 (see Contributing for details).

3 Source Repository

The build2 project is developed in a number of self-hosted git repositories that are available to browse and clone (via the smart https: protocol) from git.build2.org. Most of these repositories are also mirrored on github.com/build2.

Note that some of the repositories use advanced git features (such as submodules, ignorable changes, etc) so after cloning make sure to check the accompanying README-GIT file (if present) for any special instructions. If you just want to try the latest master, the Staged Toolchain is the recommended way to do this. Otherwise, see the How do I setup the build2 toolchain for development? HOWTO article.

4 Staged Toolchain

The development snapshots (master branch) of the build2 toolchain are periodically (as often as daily) published to the staging infrastructure, which consists of the following services:

stage.build2.org
The staging toolchain repository which only contains the toolchain packages and their dependencies.
queue.stage.build2.org
The staging package repository which may contain new packages that require the staged toolchain to work (and which will be published to cppget.org once the staged version is released).
ci.stage.build2.org
The staging CI service which may contain new build configurations not yet available on ci.cppget.org.

If you would like to test (or start using) new functionality and packages before the release, then using the staged toolchain is the easiest way: simply download the staged install scripts (they contain the -stage suffix in their names) and follow the standard Installation Instructions. You can also upgrade from one staged version to another in the same release series with the --upgrade option.

5 Contributing

There is a number of ways to contribute to the build2 project, listed in the order of increasing difficulty:

  1. Start using build2 in your own projects, run into a bug or missing feature, and report it either by filing an issue on github.com/build2, sending it to the users@build2.org mailing list, or mentioning it on the #build2 channel on cpplang.slack.com (get an invite).

    Then help us come up with the solution by providing feedback, doing research, testing fixes, etc. Issue #51 is a great example of this process.

  2. Package third-party projects for build2, preferably the ones that you want to use as dependencies in your own projects (we are strong believers in the "scratch your own itch" workflow). Then publish them to cppget.org.

    While you can do this in your personal workspace, we've also setup the github.com/build2-packaging organization as a convenient collaboration place.

  3. Write build2 build system modules to support source code generators, other programming languages, or to provide additional build system functionality (operations, functions, etc).

    In the 0.12.0 release we have added support for dynamically-loadable and on-demand-buildable build system modules. While this feature is still somewhat experimental and the documentation is still a work in progress, there is the libbuild2-hello sample module to get you started plus some folks have already begun experimenting with real modules: see the "Yacc module?" mailing list thread (continues here).

  4. Start hacking on the build2 code itself.

    See The build2 Project Roadmap for what's planned and what we are currently working on.

    To submit patches you can either email them to the users@build2.org mailing list or create an issue/pull request on github.com/build2.

    Setting up the environment to develop the build2 toolchain itself is unfortunately somewhat complicated primarily because we use it (including bdep) for its own development and that often poses chicken-and-egg kinds of problems. For details see the How do I setup the build2 toolchain for development? HOWTO article.