mesonbuild / wrapdb

New wrap requests
https://mesonbuild.com/Adding-new-projects-to-wrapdb.html
MIT License
69 stars 174 forks source link

Meson Wrap Database

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.

How to test a wrap

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

How to contribute new wraps

Getting Started

Wrap Release Meta

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.

CI Configure Meta

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.

Running sanity test locally

How to import one of those wraps into my project

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.