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
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

The build2 project runs a number of public mailing lists. Questions, bug reports, suggestions can all be sent to users@build2.org. There is also the #build2 channel on cpplang.slack.com (get an invite) where all of the above is welcome as well. Bugs can also be reported 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, then the Staged Toolchain might be an easier way.

4 Staged Toolchain

The development snapshots (master branch) of the build2 toolchain are periodically (as often as daily) published to stage.build2.org, the staging package repository. There is also ci.stage.build2.org, the staging CI service which may contain new build configuration not yet available on ci.cppget.org.

If you would like to test (or start using) new functionality 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 not straightforward primarily because we use it (including bdep) for its own development and that often poses chicken-and-egg kinds of problems. But we are planning to write the setup instructions soon and if you are interested, please ping Issue #58 or let us know on the mailing list/slack.