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.wrapfile 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.buildandpatch_directory = my-subprojectshould be added into the wrap file. Note that the wholesubprojects/packagefiles/my-projectsubtree 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-projectdirectory and update packagefiles directory at the end. This can be done usingtools/update-packagefiles.pyscript. -
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: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 changed is made in the meson port.dependency_names: (Optional) List of dependency names (e.g. pkg-config name such asglib-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:build_options: (Optional) List ofoption=valuestrings 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 works. When runningtools/sanity_checks.pylocally, this list will be printed but not installed.
-
Test locally by running
tools/sanity_checks.pyscript. 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.