Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 12 additions & 25 deletions ci_config.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"_comment": [
"_comment_broken": [
"This is intentionally undocumented in README.md, do not use it.",
"Using it is an automatic CI error.",
"broken_linux, broken_windows and broken_darwin are lists of wraps that are known",
Expand All @@ -23,6 +23,15 @@
"graphite2",
"mocklibc"
],
"_comment_global": [
"global_build_options are passed to every build except for the project",
"they control; for example glib:tests=false is passed to every project",
"except glib. This helps avoid irrelevant CI failures in dependencies."
],
"global_build_options": [
"glib:tests=false",
"libxml2:iconv=disabled"
],
"apache-orc": {
"test_options": [
"--timeout-multiplier=2"
Expand Down Expand Up @@ -92,13 +101,11 @@
"cairo": {
"_comment": [
"- Force-enable fontconfig to avoid https://gitlab.freedesktop.org/cairo/cairo/-/issues/862",
"- Prevent libxml2 from requiring iconv",
"- fontconfig warns on v1 wraps; fixed in next release",
"- Some tests fails and they are still run despite -Dtests=disabled"
],
"build_options": [
"cairo:fontconfig=enabled",
"libxml2:iconv=disabled"
"cairo:fontconfig=enabled"
],
"fatal_warnings": false,
"skip_tests": true
Expand Down Expand Up @@ -275,9 +282,6 @@
"alpine_packages": [
"bash"
],
"build_options": [
"libxml2:iconv=disabled"
],
"fatal_warnings": false
},
"freeglut": {
Expand Down Expand Up @@ -323,7 +327,6 @@
"- By default Glycin is mandatory on Linux",
"- Disable man because it requires rst2man",
"- Enable miscellaneous built-in loaders",
"- glib tests don't build on clang-cl",
"- Disable fatal warnings because of v1 wraps",
"- Disable fatal warnings because of https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/merge_requests/156",
"- Disable tests because one is broken: https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/issues/215",
Expand All @@ -332,8 +335,7 @@
"build_options": [
"gdk-pixbuf:glycin=disabled",
"gdk-pixbuf:man=false",
"gdk-pixbuf:others=enabled",
"glib:tests=false"
"gdk-pixbuf:others=enabled"
],
"alpine_packages": [
"shared-mime-info"
Expand Down Expand Up @@ -456,7 +458,6 @@
],
"fatal_warnings": false,
"build_options": [
"glib:tests=false",
"harfbuzz:glib=enabled",
"harfbuzz:gobject=enabled",
"harfbuzz:freetype=enabled",
Expand Down Expand Up @@ -826,11 +827,6 @@
"diffutils"
]
},
"libxmlpp": {
"build_options": [
"libxml2:iconv=disabled"
]
},
"libxkbcommon": {
"build_options": [
"libxkbcommon:enable-docs=false",
Expand Down Expand Up @@ -873,11 +869,6 @@
"libx11-dev"
]
},
"libxslt": {
"build_options": [
"libxml2:iconv=disabled"
]
},
"libxv": {
"_comment": "X11 needs a POSIX system",
"build_on": {
Expand Down Expand Up @@ -1127,14 +1118,10 @@
},
"pango": {
"_comment": [
"- Avoid sysprof build errors on Windows",
"- fontconfig warns on v1 wraps; fixed in next release",
"- skip dependency checks for optionally provided dependencies",
"- Known test failure: https://gitlab.gnome.org/GNOME/pango/-/issues/682"
],
"build_options": [
"glib:sysprof=disabled"
],
"fatal_warnings": false,
"skip_dependency_check": [
"pangoft2",
Expand Down
4 changes: 2 additions & 2 deletions tools/sanity_checks.py
Original file line number Diff line number Diff line change
Expand Up @@ -447,7 +447,7 @@ def check_new_release(self, name: str, builddir: str = '_build', deps=None, prog
fatal_warnings = ci.get('fatal_warnings', expect_working) and self.fatal_warnings
if fatal_warnings:
options.append('--fatal-meson-warnings')
options += [f'-D{o}' for o in ci.get('build_options', [])]
options += self.ci_config.get_option_arguments(name)
if Path(builddir, 'meson-private', 'cmd_line.txt').exists():
options.append('--wipe')
meson_env = self.install_packages(ci)
Expand Down Expand Up @@ -745,7 +745,7 @@ def get_meson_version_deps(self, name: str, builddir: str, wrap: configparser.Co
version_request += '.0'

options = ['-Dpython.install_env=auto', f'-Dwraps={name}']
options += [f'-D{o}' for o in ci.get('build_options', [])]
options += self.ci_config.get_option_arguments(name)
try:
subprocess.check_call(
['meson', 'rewrite', 'kwargs', 'set', 'project', '/', 'meson_version', '>=0'],
Expand Down
6 changes: 6 additions & 0 deletions tools/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,12 @@ def broken(self) -> list[str]:
system = platform.system().lower()
return T.cast('list[str]', self.get(f'broken_{system}', []))

def get_option_arguments(self, name: str) -> list[str]:
global_opts = T.cast('list[str]', self.get('global_build_options', []))
opts = [o for o in global_opts if not o.startswith(f'{name}:')]
opts += self.get(name, {}).get('build_options', [])
return [f'-D{o}' for o in opts]

def wrap_path(name: str) -> Path:
return Path('subprojects', f'{name}.wrap')

Expand Down
Loading