From 6e0def64746593db460d3677635071884f7ebd21 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Wed, 14 Dec 2022 17:09:34 +0000 Subject: [PATCH 1/5] ci: Install Meson in the build jobs We use the latest 0.64 even if we depend on 0.60 because of fixes in the subproject command. --- .gitlab-ci.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 535e4c90bd..03d3434b09 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -85,6 +85,7 @@ fedora-x86_64: EXTRA_MESON_FLAGS: "--buildtype=debug --default-library=both" script: - .gitlab-ci/show-info-linux.sh + - pip3 install --user meson~=0.64 - meson subprojects download - mkdir _install - meson --prefix=${CI_PROJECT_DIR}/_install @@ -107,6 +108,7 @@ release-build: EXTRA_MESON_FLAGS: "--buildtype=release" script: - .gitlab-ci/show-info-linux.sh + - pip3 install --user meson~=0.64 - meson subprojects download - meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} _build @@ -131,6 +133,7 @@ fedora-mingw64: # mingw64-graphene (rawhide) script: - .gitlab-ci/show-info-linux.sh + - pip3 install --user meson~=0.64 - meson subprojects download - mkdir _build && cd _build - mingw64-meson -Dintrospection=disabled -Dgraphene:introspection=disabled @@ -145,6 +148,7 @@ installed-tests: G_TEST_ACCESSIBLE: 1 script: - .gitlab-ci/show-info-linux.sh + - pip3 install --user meson~=0.64 - meson subprojects download - meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} _build @@ -200,7 +204,7 @@ macos: needs: [] before_script: - bash .gitlab-ci/show-info-osx.sh - - pip3 install --user meson==0.60.3 + - pip3 install --user meson~=0.64 - pip3 install --user ninja - export PATH=/Users/gitlabrunner/Library/Python/3.7/bin:$PATH - export MESON_FORCE_BACKTRACE=1 @@ -339,6 +343,7 @@ static-scan: variables: EXTRA_MESON_FLAGS: "--buildtype=debug" script: + - pip3 install --user meson~=0.64 - meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} _scan_build - ninja -C _scan_build scan-build artifacts: @@ -355,6 +360,7 @@ asan-build: needs: [] variables: script: + - pip3 install --user meson~=0.64 - CC=clang meson --buildtype=debugoptimized -Db_sanitize=address -Db_lundef=false -Dintrospection=disabled _build - ninja -C _build - .gitlab-ci/run-tests.sh _build wayland @@ -370,6 +376,7 @@ reference: variables: EXTRA_MESON_FLAGS: "--buildtype=release --force-fallback-for=gdk-pixbuf,pango" script: + - pip3 install --user meson~=0.64 - meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} -Dgtk_doc=true -Dgdk-pixbuf:gtk_doc=true -Dpango:gtk_doc=true _build - meson compile -C _build - mkdir -p _reference/ From ce9069c85f41a391901a0e43322d9b6f598b05ac Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Wed, 14 Dec 2022 17:31:50 +0000 Subject: [PATCH 2/5] build: Add known to be failing gsk comparison tests The unaligned-offscreen and upside-down-label-3d tests are failing after upgrading our CI images, seemingly because of some font rendering issue that is hard to track. Let's use the "failing" testsuite mechanism that we also use for the reftests. --- testsuite/gsk/meson.build | 48 +++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/testsuite/gsk/meson.build b/testsuite/gsk/meson.build index 3c90dd632e..67514ebf8c 100644 --- a/testsuite/gsk/meson.build +++ b/testsuite/gsk/meson.build @@ -84,8 +84,6 @@ compare_render_tests = [ 'repeat-texture', 'transform-in-transform', 'transform-in-transform-in-transform', - 'unaligned-offscreen', - 'upside-down-label-3d', # not really 3d, but cairo fails it 'rounded-clip-in-clip-3d', # not really 3d, but cairo fails it ] @@ -98,29 +96,49 @@ informative_render_tests = [ ] renderers = [ - # name exclude term - [ 'gl', '' ], - [ 'broadway', '-3d' ], - [ 'cairo', '-3d' ], + { 'name': 'gl' }, + { 'name': 'broadway', 'exclude_term': '-3d' }, + { 'name': 'cairo', 'exclude_term': '-3d' }, +] + +compare_xfails = [ + # Both tests fail because of some font rendering issue + 'unaligned-offscreen', + 'upside-down-label-3d', # not really 3d, but cairo fails it ] foreach renderer : renderers - foreach test : compare_render_tests - if ((renderer[1] == '' or not test.contains(renderer[1])) and - (renderer[0] != 'broadway' or broadway_enabled)) - test(renderer[0] + ' ' + test, compare_render, + foreach testname : compare_render_tests + + renderer_name = renderer.get('name') + exclude_term = renderer.get('exclude_term', '') + + suites = [ + 'gsk', + 'gsk-compare', + 'gsk-' + renderer_name, + 'gsk-compare-' + renderer_name, + ] + + if compare_xfails.contains(testname) + suites += 'failing' + endif + + if ((exclude_term == '' or not testname.contains(exclude_term)) and + (renderer_name != 'broadway' or broadway_enabled)) + test(renderer_name + ' ' + testname, compare_render, args: [ - '--output', join_paths(meson.current_build_dir(), 'compare', renderer[0]), - join_paths(meson.current_source_dir(), 'compare', test + '.node'), - join_paths(meson.current_source_dir(), 'compare', test + '.png'), + '--output', join_paths(meson.current_build_dir(), 'compare', renderer_name), + join_paths(meson.current_source_dir(), 'compare', testname + '.node'), + join_paths(meson.current_source_dir(), 'compare', testname + '.png'), ], env: [ - 'GSK_RENDERER=' + renderer[0], + 'GSK_RENDERER=' + renderer_name, 'GTK_A11Y=test', 'G_TEST_SRCDIR=@0@'.format(meson.current_source_dir()), 'G_TEST_BUILDDIR=@0@'.format(meson.current_build_dir()) ], - suite: [ 'gsk', 'gsk-compare', 'gsk-' + renderer[0], 'gsk-compare-' + renderer[0] ], + suite: suites, ) endif endforeach From cd7627ed024097b73ca50aabf300b4b7148a5368 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Wed, 14 Dec 2022 17:44:27 +0000 Subject: [PATCH 3/5] ci: Consistently use meson subcommands meson setup: configuration meson compile: compilation meson install installation Do not use ninja directly, and do not use `meson` as a synonym for `meson setup`. --- .gitlab-ci.yml | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 03d3434b09..02890c9586 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -88,7 +88,7 @@ fedora-x86_64: - pip3 install --user meson~=0.64 - meson subprojects download - mkdir _install - - meson --prefix=${CI_PROJECT_DIR}/_install + - meson setup --prefix=${CI_PROJECT_DIR}/_install ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} _build - meson compile -C _build @@ -110,9 +110,8 @@ release-build: - .gitlab-ci/show-info-linux.sh - pip3 install --user meson~=0.64 - meson subprojects download - - meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} - _build - - ninja -C _build + - meson setup ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} _build + - meson compile -C _build - .gitlab-ci/run-tests.sh _build x11 fedora-mingw64: @@ -150,10 +149,9 @@ installed-tests: - .gitlab-ci/show-info-linux.sh - pip3 install --user meson~=0.64 - meson subprojects download - - meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} - _build - - ninja -C _build - - sudo ninja -C _build install + - meson setup ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} _build + - meson compile -C _build + - sudo meson install -C _build - dbus-run-session xvfb-run -a -s "-screen 0 1024x768x24" gnome-desktop-testing-runner --report-directory=_build/installed-tests-report/failed/ @@ -209,7 +207,8 @@ macos: - export PATH=/Users/gitlabrunner/Library/Python/3.7/bin:$PATH - export MESON_FORCE_BACKTRACE=1 script: - - meson -Dx11-backend=false + - meson setup + -Dx11-backend=false -Dbroadway-backend=true -Dmacos-backend=true -Dmedia-gstreamer=disabled @@ -218,7 +217,7 @@ macos: -Dpixman:tests=disabled -Dlibjpeg-turbo:simd=disabled _build - - ninja -C _build + - meson compile -C _build artifacts: when: always paths: @@ -344,7 +343,7 @@ static-scan: EXTRA_MESON_FLAGS: "--buildtype=debug" script: - pip3 install --user meson~=0.64 - - meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} _scan_build + - meson setup ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} _scan_build - ninja -C _scan_build scan-build artifacts: paths: @@ -361,7 +360,7 @@ asan-build: variables: script: - pip3 install --user meson~=0.64 - - CC=clang meson --buildtype=debugoptimized -Db_sanitize=address -Db_lundef=false -Dintrospection=disabled _build + - CC=clang meson setup --buildtype=debugoptimized -Db_sanitize=address -Db_lundef=false -Dintrospection=disabled _build - ninja -C _build - .gitlab-ci/run-tests.sh _build wayland artifacts: @@ -377,7 +376,7 @@ reference: EXTRA_MESON_FLAGS: "--buildtype=release --force-fallback-for=gdk-pixbuf,pango" script: - pip3 install --user meson~=0.64 - - meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} -Dgtk_doc=true -Dgdk-pixbuf:gtk_doc=true -Dpango:gtk_doc=true _build + - meson setup ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} -Dgtk_doc=true -Dgdk-pixbuf:gtk_doc=true -Dpango:gtk_doc=true _build - meson compile -C _build - mkdir -p _reference/ - mv _build/docs/reference/gdk/gdk4/ _reference/gdk4/ From 7fca0913714253d938f02c63ad4cc98e31a88a35 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Wed, 14 Dec 2022 18:35:52 +0000 Subject: [PATCH 4/5] ci: Redefine PATH --- .gitlab-ci.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 02890c9586..c78172c2dc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -85,11 +85,16 @@ fedora-x86_64: EXTRA_MESON_FLAGS: "--buildtype=debug --default-library=both" script: - .gitlab-ci/show-info-linux.sh + - export PATH="$HOME/.local/bin:$PATH" - pip3 install --user meson~=0.64 - meson subprojects download - mkdir _install - - meson setup --prefix=${CI_PROJECT_DIR}/_install - ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} + - meson setup + --prefix=${CI_PROJECT_DIR}/_install + ${COMMON_MESON_FLAGS} + ${EXTRA_MESON_FLAGS} + ${BACKEND_FLAGS} + ${FEATURE_FLAGS} _build - meson compile -C _build - meson install -C _build @@ -108,6 +113,7 @@ release-build: EXTRA_MESON_FLAGS: "--buildtype=release" script: - .gitlab-ci/show-info-linux.sh + - export PATH="$HOME/.local/bin:$PATH" - pip3 install --user meson~=0.64 - meson subprojects download - meson setup ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} _build @@ -132,6 +138,7 @@ fedora-mingw64: # mingw64-graphene (rawhide) script: - .gitlab-ci/show-info-linux.sh + - export PATH="$HOME/.local/bin:$PATH" - pip3 install --user meson~=0.64 - meson subprojects download - mkdir _build && cd _build @@ -147,6 +154,7 @@ installed-tests: G_TEST_ACCESSIBLE: 1 script: - .gitlab-ci/show-info-linux.sh + - export PATH="$HOME/.local/bin:$PATH" - pip3 install --user meson~=0.64 - meson subprojects download - meson setup ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} _build @@ -342,6 +350,7 @@ static-scan: variables: EXTRA_MESON_FLAGS: "--buildtype=debug" script: + - export PATH="$HOME/.local/bin:$PATH" - pip3 install --user meson~=0.64 - meson setup ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} _scan_build - ninja -C _scan_build scan-build @@ -359,6 +368,7 @@ asan-build: needs: [] variables: script: + - export PATH="$HOME/.local/bin:$PATH" - pip3 install --user meson~=0.64 - CC=clang meson setup --buildtype=debugoptimized -Db_sanitize=address -Db_lundef=false -Dintrospection=disabled _build - ninja -C _build @@ -375,6 +385,7 @@ reference: variables: EXTRA_MESON_FLAGS: "--buildtype=release --force-fallback-for=gdk-pixbuf,pango" script: + - export PATH="$HOME/.local/bin:$PATH" - pip3 install --user meson~=0.64 - meson setup ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} -Dgtk_doc=true -Dgdk-pixbuf:gtk_doc=true -Dpango:gtk_doc=true _build - meson compile -C _build From a2b00f7ea7db9bd589ce3386c0e9d5be83265bb3 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Wed, 14 Dec 2022 19:00:32 +0000 Subject: [PATCH 5/5] ci: Install tests in a separate prefix Avoid using `sudo` in the installed-tests CI job, since we're installing Meson as the current user. --- .gitlab-ci.yml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c78172c2dc..1f090b4748 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -150,20 +150,28 @@ installed-tests: stage: build needs: [] variables: - EXTRA_MESON_FLAGS: "--prefix=/usr --libdir=/usr/lib64 -Dinstall-tests=true" + EXTRA_MESON_FLAGS: "-Dinstall-tests=true" G_TEST_ACCESSIBLE: 1 script: - .gitlab-ci/show-info-linux.sh - export PATH="$HOME/.local/bin:$PATH" - pip3 install --user meson~=0.64 - meson subprojects download - - meson setup ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} _build + - meson setup + --prefix="${CI_PROJECT_DIR}/_installed" + ${COMMON_MESON_FLAGS} + ${EXTRA_MESON_FLAGS} + ${BACKEND_FLAGS} + ${FEATURE_FLAGS} + _build - meson compile -C _build - - sudo meson install -C _build + - meson install -C _build + - export LD_LIBRARY_PATH=${CI_PROJECT_DIR}/_install/lib64 - dbus-run-session xvfb-run -a -s "-screen 0 1024x768x24" gnome-desktop-testing-runner --report-directory=_build/installed-tests-report/failed/ --parallel=0 + --dirs "${CI_PROJECT_DIR}/_installed/share" gtk-4.0 artifacts: paths: