diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1f090b4748506982903f51979466255d972c122e..fbe70a21ff1da2821bcb2b97e043e65d8a75224c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -88,6 +88,7 @@ fedora-x86_64: - export PATH="$HOME/.local/bin:$PATH" - pip3 install --user meson~=0.64 - meson subprojects download + - meson subprojects update --reset - mkdir _install - meson setup --prefix=${CI_PROJECT_DIR}/_install @@ -116,6 +117,7 @@ release-build: - export PATH="$HOME/.local/bin:$PATH" - pip3 install --user meson~=0.64 - meson subprojects download + - meson subprojects update --reset - meson setup ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} _build - meson compile -C _build - .gitlab-ci/run-tests.sh _build x11 @@ -141,9 +143,21 @@ fedora-mingw64: - export PATH="$HOME/.local/bin:$PATH" - pip3 install --user meson~=0.64 - meson subprojects download - - mkdir _build && cd _build - - mingw64-meson -Dintrospection=disabled -Dgraphene:introspection=disabled - - ninja + - meson subprojects update --reset + # Test that mingw64-meson still fails. If it has stopped failing, the CI + # will fail and now you should remove the hack that follows this. + - FAILED=false + - mingw64-meson --version || FAILED=true + - test $FAILED = false && echo "mingw64-meson works now, remove the hack" && exit 1 + # HACK: Running mingw64-meson directly fails on the CI with: + # /usr/bin/mingw64-meson: line 92: fg: no job control + # Because rpm is not evaluating %__meson and it gets interpreted as a job + # specifier. So we fix that and run it ourselves. + - rpm --eval "%{mingw64_meson}" > mingw64-meson.sh + - sed -i -e 's/%__meson/meson/' mingw64-meson.sh + - chmod +x mingw64-meson.sh + - ./mingw64-meson.sh -Dintrospection=disabled -Dgraphene:introspection=disabled _build + - ninja -C _build installed-tests: extends: .build-fedora-default @@ -157,6 +171,7 @@ installed-tests: - export PATH="$HOME/.local/bin:$PATH" - pip3 install --user meson~=0.64 - meson subprojects download + - meson subprojects update --reset - meson setup --prefix="${CI_PROJECT_DIR}/_installed" ${COMMON_MESON_FLAGS} diff --git a/.gitlab-ci/test-msvc.bat b/.gitlab-ci/test-msvc.bat index cf8d9b130cb2387bab6c6407a5e3d428682bd68a..c985c413fca4f3b0c471172e52fd4733aa401155 100644 --- a/.gitlab-ci/test-msvc.bat +++ b/.gitlab-ci/test-msvc.bat @@ -5,7 +5,7 @@ call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliar @echo on :: FIXME: make warnings fatal -pip3 install --upgrade --user meson==0.60.3 || goto :error +pip3 install --upgrade --user meson~=0.64 || goto :error meson -Ddebug=false -Dmedia-gstreamer=disabled _build || goto :error ninja -C _build || goto :error diff --git a/docs/reference/meson.build b/docs/reference/meson.build index df5e3d9909008c9b68956920e3c99afb5a323eec..0d294137d796aeffdad54480c654e42842af3b15 100644 --- a/docs/reference/meson.build +++ b/docs/reference/meson.build @@ -1,7 +1,9 @@ toml_conf = configuration_data() toml_conf.set('version', meson.project_version()) -gidocgen = find_program('gi-docgen', required: get_option('gtk_doc')) +gidocgen = find_program('gi-docgen', + required: get_option('gtk_doc') and get_option('introspection').enabled(), + native: true) gidocgen_common_args = [ '--quiet', diff --git a/gtk/meson.build b/gtk/meson.build index 72e283b71deabba367d696c6ec179cc136148a7a..61185696dd79a0bfea9c160a081e89860c9d4fd3 100644 --- a/gtk/meson.build +++ b/gtk/meson.build @@ -779,21 +779,14 @@ theme_deps = [] # For git checkouts, but not for tarballs... if not fs.exists('theme/Default/Default-light.css') # ... build the theme files - sassc = find_program('sassc', required: false) - if not sassc.found() - subproject('sassc') - sassc = find_program('sassc', required: true) - endif - - if sassc.found() - sassc_opts = [ '-a', '-M', '-t', 'compact' ] + sassc = find_program('sassc', native: true) + sassc_opts = [ '-a', '-M', '-t', 'compact' ] - subdir('theme/Default') + subdir('theme/Default') - theme_deps += [ - default_theme_deps, - ] - endif + theme_deps += [ + default_theme_deps, + ] endif diff --git a/meson.build b/meson.build index cabe74c30d49d53031c66a26a15ac28a0a1a97d1..d0d3b432c52ba44c209ff76d99af69229ecd9f44 100644 --- a/meson.build +++ b/meson.build @@ -12,7 +12,7 @@ project('gtk', 'c', glib_req = '>= 2.72.0' pango_req = '>= 1.50.0' # keep this in sync with .gitlab-ci/test-msys.sh -harfbuzz_req = '>= 2.6.0' +harfbuzz_req = '>= 2.6.0' fribidi_req = '>= 0.19.7' cairo_req = '>= 1.14.0' gdk_pixbuf_req = '>= 2.30.0' @@ -368,80 +368,44 @@ gtkinc = include_directories('gtk') testinc = include_directories('tests') # Dependencies -glib_dep = dependency('glib-2.0', version: glib_req, - fallback : ['glib', 'libglib_dep']) -gobject_dep = dependency('gobject-2.0', version: glib_req, - fallback : ['glib', 'libgobject_dep']) +glib_dep = dependency('glib-2.0', version: glib_req) +gobject_dep = dependency('gobject-2.0', version: glib_req) if os_win32 - giowin32_dep = dependency('gio-windows-2.0', version: glib_req, required: win32_enabled, - fallback : ['glib', 'libgio_dep']) + giowin32_dep = dependency('gio-windows-2.0', version: glib_req, required: win32_enabled) endif if os_unix - giounix_dep = dependency('gio-unix-2.0', version: glib_req, required: false, - fallback : ['glib', 'libgio_dep']) + giounix_dep = dependency('gio-unix-2.0', version: glib_req, required: false) endif -gmodule_dep = dependency('gmodule-2.0', version: glib_req, - fallback : ['glib', 'libgmodule_dep']) +gmodule_dep = dependency('gmodule-2.0', version: glib_req) cairo_dep = dependency('cairo', version: cairo_req, - fallback : ['cairo', 'libcairo_dep'], default_options: ['zlib=enabled', 'tests=disabled']) -cairogobj_dep = dependency('cairo-gobject', version: cairo_req, - fallback : ['cairo', 'libcairogobject_dep']) -pango_dep = dependency('pango', version: pango_req, - fallback : ['pango', 'libpango_dep']) -fribidi_dep = dependency('fribidi', version: fribidi_req, - fallback : ['fribidi', 'libfribidi_dep']) +cairogobj_dep = dependency('cairo-gobject', version: cairo_req) +pango_dep = dependency('pango', version: pango_req) +fribidi_dep = dependency('fribidi', version: fribidi_req) harfbuzz_dep = dependency('harfbuzz', version: harfbuzz_req, - fallback: ['harfbuzz', 'libharfbuzz_dep'], default_options: ['coretext=enabled']) # Require PangoFT2 if on X11 or wayland -require_pangoft2 = wayland_enabled or x11_enabled - -if require_pangoft2 - pangoft_dep = dependency('pangoft2', version: pango_req, - fallback : ['pango', 'libpangoft2_dep']) -else - pangoft_dep = dependency('pangoft2', required: false) -endif +pangoft_dep = dependency('pangoft2', version: pango_req, + required: wayland_enabled or x11_enabled) if win32_enabled # for GTK_IM_CONTEXT_IME pangowin32_dep = dependency('pangowin32') endif -is_msvc_like = cc.get_argument_syntax() == 'msvc' - -pangocairo_dep = dependency('pangocairo', version: pango_req, - fallback : ['pango', 'libpangocairo_dep']) +pangocairo_dep = dependency('pangocairo', version: pango_req) pixbuf_dep = dependency('gdk-pixbuf-2.0', version: gdk_pixbuf_req, - fallback : ['gdk-pixbuf', 'gdkpixbuf_dep'], default_options: ['png=enabled', 'jpeg=enabled', 'builtin_loaders=png,jpeg', 'man=false']) -png_dep = dependency(is_msvc_like ? 'png' : 'libpng', - fallback: ['libpng', 'libpng_dep'], - required: true) -tiff_dep = dependency(is_msvc_like ? 'tiff' : 'libtiff-4', - fallback: ['libtiff', 'libtiff4_dep'], - required: true) -jpeg_dep = dependency(is_msvc_like ? 'jpeg' : 'libjpeg', - fallback: ['libjpeg-turbo', 'jpeg_dep'], - required: true) - -epoxy_dep = dependency('epoxy', version: epoxy_req, - fallback: ['libepoxy', 'libepoxy_dep']) -harfbuzz_dep = dependency('harfbuzz', version: '>= 2.1.0', required: false, - fallback: ['harfbuzz', 'libharfbuzz_dep'], - default_options: ['coretext=enabled']) +png_dep = dependency('libpng', 'png') +tiff_dep = dependency('libtiff-4', 'tiff') +jpeg_dep = dependency('libjpeg', 'jpeg') + +epoxy_dep = dependency('epoxy', version: epoxy_req) xkbdep = dependency('xkbcommon', version: xkbcommon_req, required: wayland_enabled) graphene_dep = dependency('graphene-gobject-1.0', version: graphene_req, - fallback: ['graphene', 'graphene_dep'], default_options: ['tests=false']) iso_codes_dep = dependency('iso-codes', required: false) - -gidocgen_dep = dependency('gi-docgen', version: '>= 2021.1', - fallback: ['gi-docgen', 'dummy_dep'], - required: get_option('gtk_doc') and get_option('introspection').enabled(), - native: true) gi_dep = dependency('gobject-introspection-1.0', version: introspection_req, required: get_option('introspection').enabled() and get_option('build-tests')) @@ -514,11 +478,9 @@ cdata.set('HAVE_PANGOFT', pangoft_dep.found()) wayland_pkgs = [] if wayland_enabled wlclientdep = dependency('wayland-client', version: wayland_req, - fallback: 'wayland', default_options: ['documentation=false']) wlprotocolsdep = dependency('wayland-protocols', version: wayland_proto_req) - wlegldep = dependency('wayland-egl', - fallback: 'wayland') + wlegldep = dependency('wayland-egl') wlproto_dir = wlprotocolsdep.get_variable('pkgdatadir') @@ -654,10 +616,6 @@ endif cloudproviders_dep = dependency('cloudproviders', required: get_option('cloudproviders'), version: cloudproviders_req, - fallback: [ - 'libcloudproviders', - 'libcloudproviders_dep', - ], default_options: [ 'vapigen=false', ]) @@ -677,7 +635,6 @@ if not get_option('sysprof').disabled() 'sysprofd=none', 'help=false', ], - fallback: ['sysprof', 'libsysprof_capture_dep'], ) cdata.set('HAVE_SYSPROF', libsysprof_capture_dep.found()) libsysprof_dep = dependency('sysprof-4', @@ -692,7 +649,6 @@ if not get_option('sysprof').disabled() 'sysprofd=none', 'help=false', ], - fallback: ['sysprof', 'libsysprof_dep'], ) profiler_enabled = true else diff --git a/subprojects/cairo.wrap b/subprojects/cairo.wrap index d09964e401cb907df070b769924e4a66a32e568c..fb8aa712b3dd4993c5abaa9d21c13a4d8c2d1089 100644 --- a/subprojects/cairo.wrap +++ b/subprojects/cairo.wrap @@ -1,6 +1,10 @@ [wrap-git] -directory=cairo -url=https://gitlab.freedesktop.org/cairo/cairo.git -push-url=ssh://git@gitlab.freedesktop.org:cairo/cairo.git -revision=master -depth=1 +directory = cairo +url = https://gitlab.freedesktop.org/cairo/cairo.git +push-url = ssh://git@gitlab.freedesktop.org:cairo/cairo.git +revision = master +depth = 1 + +[provide] +cairo = libcairo_dep +cairo-gobject = libcairogobject_dep diff --git a/subprojects/fribidi.wrap b/subprojects/fribidi.wrap new file mode 100644 index 0000000000000000000000000000000000000000..20ba8edf1d08eaf560ebc3d885a84ac48355040b --- /dev/null +++ b/subprojects/fribidi.wrap @@ -0,0 +1,9 @@ +[wrap-git] +directory = fribidi +url = https://github.com/fribidi/fribidi.git +push-url = git@github.com:fribidi/fribidi.git +revision = master +depth = 1 + +[provide] +dependency_names = fribidi diff --git a/subprojects/gdk-pixbuf.wrap b/subprojects/gdk-pixbuf.wrap index 123ea163f95ecef448cece1470827e9e3ced6fcc..d3a2db833f265eaa1c60357125b4a4cdb2d880b9 100644 --- a/subprojects/gdk-pixbuf.wrap +++ b/subprojects/gdk-pixbuf.wrap @@ -1,6 +1,10 @@ [wrap-git] -directory=gdk-pixbuf -url=https://gitlab.gnome.org/GNOME/gdk-pixbuf.git -push-url=ssh://git@gitlab.gnome.org:GNOME/gdk-pixbuf.git -revision=master -depth=1 +directory = gdk-pixbuf +url = https://gitlab.gnome.org/GNOME/gdk-pixbuf.git +push-url = ssh://git@ssh.gitlab.gnome.org:GNOME/gdk-pixbuf.git +revision = master +depth = 1 + +[provide] +dependency_names = gdk-pixbuf-2.0 +program_names = gdk-pixbuf-query-loaders, gdk-pixbuf-pixdata, gdk-pixbuf-csource, gdk-pixbuf-thumbnailer diff --git a/subprojects/gi-docgen.wrap b/subprojects/gi-docgen.wrap index 98cd9211820011f033dbf269c36ef364e1857bca..85c85da16f78efb897d5bf56d1c1fd430de8acdf 100644 --- a/subprojects/gi-docgen.wrap +++ b/subprojects/gi-docgen.wrap @@ -1,6 +1,9 @@ [wrap-git] -directory=gi-docgen -url=https://gitlab.gnome.org/GNOME/gi-docgen.git -push-url=ssh://git@gitlab.gnome.org:GNOME/gi-docgen.git -revision=main -depth=1 +directory = gi-docgen +url = https://gitlab.gnome.org/GNOME/gi-docgen.git +push-url = ssh://git@ssh.gitlab.gnome.org:GNOME/gi-docgen.git +revision = main +depth = 1 + +[provide] +program_names = gi-docgen diff --git a/subprojects/glib.wrap b/subprojects/glib.wrap index c785910d9f5c3b8a6059e9d4226fbc72d648a340..525a37bbf37e8a23a3f52af36766d2a041abd5e0 100644 --- a/subprojects/glib.wrap +++ b/subprojects/glib.wrap @@ -1,6 +1,10 @@ [wrap-git] -directory=glib -url=https://gitlab.gnome.org/GNOME/glib.git -push-url=ssh://git@gitlab.gnome.org:GNOME/glib.git -revision=main -depth=1 +directory = glib +url = https://gitlab.gnome.org/GNOME/glib.git +push-url = ssh://git@ssh.gitlab.gnome.org:GNOME/glib.git +revision = main +depth = 1 + +[provide] +dependency_names = gthread-2.0, gobject-2.0, gmodule-no-export-2.0, gmodule-export-2.0, gmodule-2.0, glib-2.0, gio-2.0, gio-windows-2.0, gio-unix-2.0 +program_names = glib-genmarshal, glib-mkenums, glib-compile-schemas, glib-compile-resources, gio-querymodules, gdbus-codegen diff --git a/subprojects/graphene.wrap b/subprojects/graphene.wrap index 902095dbd74057afa67bb5b66a580182f571bb23..e15c661551443e9a646bfc06e57aca54b70336cf 100644 --- a/subprojects/graphene.wrap +++ b/subprojects/graphene.wrap @@ -1,5 +1,8 @@ [wrap-git] -directory=graphene -url=https://github.com/ebassi/graphene.git -revision=master -depth=1 +directory = graphene +url = https://github.com/ebassi/graphene.git +revision = master +depth = 1 + +[provide] +dependency_names = graphene-1.0, graphene-gobject-1.0 diff --git a/subprojects/harfbuzz.wrap b/subprojects/harfbuzz.wrap index a57870b2e0296760427f8041476a601cc7eaf19f..9245bfb525864a507b9ce34b2ec671fec31b4cc1 100644 --- a/subprojects/harfbuzz.wrap +++ b/subprojects/harfbuzz.wrap @@ -1,6 +1,9 @@ [wrap-git] -directory=harfbuzz -url=https://github.com/harfbuzz/harfbuzz.git -push-url=git@github.com:harfbuzz/harfbuzz.git -revision=4.0.0 -depth=1 +directory = harfbuzz +url = https://github.com/harfbuzz/harfbuzz.git +push-url = git@github.com:harfbuzz/harfbuzz.git +revision = 4.0.0 +depth = 1 + +[provide] +harfbuzz = libharfbuzz_dep diff --git a/subprojects/libcloudproviders.wrap b/subprojects/libcloudproviders.wrap index baa31bb003d31b23e3f12cc237d4de417e2685fa..919c70345f0e28dfea60f2725284954d30ba5e10 100644 --- a/subprojects/libcloudproviders.wrap +++ b/subprojects/libcloudproviders.wrap @@ -1,5 +1,9 @@ [wrap-git] -directory=libcloudproviders -url=https://gitlab.gnome.org/World/libcloudproviders.git -revision=master -depth=1 +directory = libcloudproviders +url = https://gitlab.gnome.org/World/libcloudproviders.git +push-url = ssh://git@ssh.gitlab.gnome.org:World/libcloudproviders.git +revision = master +depth = 1 + +[provide] +libcloudproviders = libcloudproviders_dep diff --git a/subprojects/libepoxy.wrap b/subprojects/libepoxy.wrap index fc5147a22bd7a7978aa818369810c4f28df7190e..245769050a648d4c85956ce5ac66a4d9afbbadb4 100644 --- a/subprojects/libepoxy.wrap +++ b/subprojects/libepoxy.wrap @@ -1,5 +1,8 @@ [wrap-git] -directory=libepoxy -url=https://github.com/anholt/libepoxy.git -revision=master -depth=1 +directory = libepoxy +url = https://github.com/anholt/libepoxy.git +revision = master +depth = 1 + +[provide] +dependency_names = epoxy diff --git a/subprojects/pango.wrap b/subprojects/pango.wrap index 64317f97fe29fcda7bc52ba74b84651e1da46a3c..b75c158b8633aa0aee78a656f1f9980e5c187167 100644 --- a/subprojects/pango.wrap +++ b/subprojects/pango.wrap @@ -1,6 +1,13 @@ [wrap-git] -directory=pango -url=https://gitlab.gnome.org/GNOME/pango.git -push-url=ssh://git@gitlab.gnome.org:GNOME/pango.git -revision=main -depth=1 +directory = pango +url = https://gitlab.gnome.org/GNOME/pango.git +push-url = ssh://git@ssh.gitlab.gnome.org:GNOME/pango.git +revision = main +depth = 1 + +[provide] +pango = libpango_dep +pangoft2 = libpangoft2_dep +pangoxft = libpangoxft_dep +pangowin32 = libpangowin32_dep +pangocairo = libpangocairo_dep diff --git a/subprojects/sassc.wrap b/subprojects/sassc.wrap index edd76c61beda78176e566c2cf053d2681b2d1ddb..2930f5c1a364e2497ccc2b002fd6442f2b89918e 100644 --- a/subprojects/sassc.wrap +++ b/subprojects/sassc.wrap @@ -1,5 +1,8 @@ [wrap-git] -directory=sassc -url=https://github.com/lazka/sassc.git -revision=meson -depth=1 +directory = sassc +url = https://github.com/lazka/sassc.git +revision = meson +depth = 1 + +[provide] +program_names = sassc diff --git a/subprojects/sysprof.wrap b/subprojects/sysprof.wrap index 99aa36ce8708f61724e79e03bcf470debd842223..29dcbdc13025ee43adb527e0d7eea83b962e8181 100644 --- a/subprojects/sysprof.wrap +++ b/subprojects/sysprof.wrap @@ -1,5 +1,8 @@ [wrap-git] -directory=sysprof -url=https://gitlab.gnome.org/GNOME/sysprof.git -revision=master -depth=1 +directory = sysprof +url = https://gitlab.gnome.org/GNOME/sysprof.git +revision = master +depth = 1 + +[provide] +dependency_names = sysprof-4, sysprof-capture-4, sysprof-ui-4 diff --git a/subprojects/wayland.wrap b/subprojects/wayland.wrap index 5be67bf491f457a2d033e220ea449c9fcada8d78..7dc36737f7df989d4d68c16102e38081d81f92f9 100644 --- a/subprojects/wayland.wrap +++ b/subprojects/wayland.wrap @@ -1,8 +1,9 @@ [wrap-git] -directory=wayland -url=https://gitlab.freedesktop.org/wayland/wayland.git -revision=main -depth=1 +directory = wayland +url = https://gitlab.freedesktop.org/wayland/wayland.git +push-url = git@gitlab.freedesktop.org:wayland/wayland +revision = main +depth = 1 [provide] dependency_names = wayland-client, wayland-egl