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.
1 | State of the Project |
---|---|
2 | Getting Help and Submitting Bugs |
3 | Source Repository |
4 | Staged Toolchain |
5 | Contributing |
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 and XSD).
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:
- Start using
build2
in your own projects, run into a bug or missing feature, and report it either by filing an issue ongithub.com/build2
, sending it to theusers@build2.org
mailing list, or mentioning it on the#build2
channel oncpplang.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.
- 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 tocppget.org
.The Packaging Guide provides a comprehensive, step-by-step guide to the packaging process. There is also the
github.com/build2-packaging
organization which we have setup as a convenient collaboration place for such efforts. - 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 the documentation is still a work in progress, there is already a number of sample modules to get you started plus some folks have already begun experimenting with real modules: see the "Yacc module?" mailing list thread (continues here). - 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 ongithub.com/build2
.Setting up the environment to develop the
build2
toolchain itself is unfortunately somewhat complicated primarily because we use it (includingbdep
) for its own development and that often poses chicken-and-egg kinds of problems. For details see the How do I setup thebuild2
toolchain for development? HOWTO article.