This is a collection of projects that use Meson as their build system, or have a meson port maintained by the Meson team. They can be used as subproject to any Meson project that needs them as dependency.
Clone this repository locally, and set the wraps
option with a comma separated
list of wraps that needs to be built.
For example to test libjpeg-turbo and zlib:
meson setup builddir -Dwraps=libjpeg-turbo,zlib
meson compile -C builddir
-
Write
my-project.wrap
file and add it insubprojects/
directory. -
If upstream project's build system is not Meson, a port can be added in
subprojects/packagefiles/my-project/meson.build
andpatch_directory = my-subproject
should be added into the wrap file. Note that the wholesubprojects/packagefiles/my-project
subtree will be copied onto the upstream's source tree, but it is generally not accepted to override upstream files. -
It is often easier to develop in
subprojects/my-project
directory and update packagefiles directory at the end. This can be done usingtools/update-packagefiles.py
script.
Add your release information in releases.json
. It is a dictionary where the
key is the wrap name and the value is a dictionary containing with the following keys:
Option | Description |
---|---|
versions |
Sorted list (newest first) of release tags in the format <upstream version>-<revision> where the revision starts at 1 and is incremented when a change is made in the meson port. |
dependency_names |
(Optional) List of dependency names (e.g. pkg-config name such as glib-2.0 ) provided by the wrap. It must match information from wrap's [provide] section. |
program_names |
(Optional) List of program names (e.g. glib-compile-resources ) provided by the wrap. It must match information from wrap's [provide] section. |
Configure CI in ci_config.json
. It is a dictionary where the key is the wrap
name and the value is a dictionary containing with the following keys:
Option | Description |
---|---|
build_options |
(Optional) List of <your subproject>:option=value strings that will be used to build the project on the CI. |
debian_packages |
(Optional) List of extra packages that will be installed on debian-like CI runners. Dependencies that can be provided by other wraps should not be added here because it's better to test that fallbacks work. When running tools/sanity_checks.py locally, this list will be printed but not installed. |
brew_packages |
(Optional) List of extra packages that will be installed on MacOS CI runners. |
choco_packages |
(Optional) List of extra packages that will be installed on Windows CI runners. |
linux_only |
(Optional) If set to true , indicates the wrap should be tested only on Linux CI. |
fatal_warnings |
(Optional) If set to false removes --fatal-meson-warning. Use this only when there is no other way to fix the warning. |
skip_dependency_check |
(Optional) List of platform-specific dependency names that are not always provided by the project. |
test_options |
(Optional) List of arguments that will be passed to meson test command (e.g. --timeout-multiplier , --no-suite ). |
skip_tests |
(Optional) If set to true tests will not be run. This is useful when tests are known to fail because of upstream issues, or require a specific environment hard to set up. |
-
Test locally by running
tools/sanity_checks.py
script. It will be executed on the CI and must always return success before merging any PR. -
Create Pull Request with your changes.
Run meson wrap install <name>
on the top source dir of your project. It
will install subprojects/<name>.wrap
file used by Meson to download the
dependency. For more information on the wrap command refer to the documentation.