|
|
|
Contributing to the Meson build system
|
|
|
|
|
|
|
|
There are two simple ways to submit your patches. The preferred way is
|
|
|
|
to send a github pull request. Small changes can also be sent as
|
|
|
|
patches as emails to the Meson mailing list.
|
|
|
|
|
|
|
|
|
|
|
|
Python Coding style
|
|
|
|
|
|
|
|
Meson follows the basic Python coding style. Additional rules are the
|
|
|
|
following:
|
|
|
|
|
|
|
|
- indent 4 spaces, no tabs ever
|
|
|
|
- indent meson.build files with two spaces
|
|
|
|
- try to keep the code as simple as possible
|
|
|
|
- contact the mailing list before embarking on large scale projects
|
|
|
|
to avoid wasted effort
|
|
|
|
- all new features must come with a test (or several if it is
|
|
|
|
a big feature)
|
|
|
|
|
|
|
|
Meson uses Flake8 for style guide enforcement. The Flake8 options for
|
|
|
|
the project are contained in setup.cfg.
|
|
|
|
|
|
|
|
To run Flake8 on your local clone of Meson:
|
|
|
|
|
|
|
|
$ python3 -m pip install flake8
|
|
|
|
$ cd meson
|
|
|
|
$ flake8
|
|
|
|
|
|
|
|
C/C++ coding style
|
|
|
|
|
|
|
|
Meson has a bunch of test code in several languages. The rules for
|
|
|
|
those are simple.
|
|
|
|
|
|
|
|
- indent 4 spaces, no tabs ever
|
|
|
|
- brace always on the same line as if/for/else/function definition
|
|
|
|
|
|
|
|
|
|
|
|
External dependencies
|
|
|
|
|
|
|
|
The goal of Meson is to be as easily usable as possible. The user
|
|
|
|
experience should be "get Python3 and Ninja, run", even on
|
|
|
|
Windows. Unfortunately this means that we can't have dependencies on
|
|
|
|
projects outside of Python's standard library. This applies only to
|
|
|
|
core functionality, though. For additional helper programs etc the use
|
|
|
|
of external dependencies may be ok. If you feel that you are dealing
|
|
|
|
with this kind of case, please raise the issue on the mailing list
|
|
|
|
first.
|
|
|
|
|
|
|
|
|
|
|
|
What not to contribute?
|
|
|
|
|
|
|
|
There are a few things that people seem to want to add to Meson but which
|
|
|
|
are not there by design and will not be added either.
|
|
|
|
|
|
|
|
The first one is defining your own functions or a generalized for loop.
|
|
|
|
These are bad because they would make Meson's DSL Turing complete. The
|
|
|
|
second feature is a Make backend.
|
|
|
|
|
|
|
|
The FAQ has specific information why these two features will not be
|
|
|
|
added to Meson: https://github.com/mesonbuild/meson/wiki/FAQ
|
|
|
|
|
|
|
|
Merge requests adding either of these two features will be automatically
|
|
|
|
rejected. Please save everyone's time (especially your own) and don't start
|
|
|
|
working on these features.
|
|
|
|
|
|
|
|
|
|
|
|
Do I need to sign a CLA?
|
|
|
|
|
|
|
|
No. All contributions are welcome.
|