mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-10 11:26:16 +01:00
8efe28c570
While we can’t add markers to the macro implementations to cause lcov to ignore them automatically, we can change our lcov configuration to ignore all calls to them. See https://github.com/linux-test-project/lcov/issues/44. This causes all the un-takeable branches and un-reachable assertions to be ignored by our code coverage, which bumps our statistics: • Lines: 74.9% → 74.8% • Functions: 82.3% → 82.3% • Branches: 53.3% → 64.2% The rationale is that nobody should be testing programmer error handling, as g_return_*if_fail() are used to guard against — so it’s not reasonable to count missed branches like that in code coverage statistics. Signed-off-by: Philip Withnall <withnall@endlessm.com>
210 lines
5.8 KiB
YAML
210 lines
5.8 KiB
YAML
image: registry.gitlab.gnome.org/gnome/glib/master:v8
|
|
|
|
stages:
|
|
- build
|
|
- coverage
|
|
- deploy
|
|
|
|
cache:
|
|
paths:
|
|
- _ccache/
|
|
|
|
variables:
|
|
MESON_TEST_TIMEOUT_MULTIPLIER: 2
|
|
G_MESSAGES_DEBUG: all
|
|
MESON_COMMON_OPTIONS: "--buildtype debug --fatal-meson-warnings"
|
|
|
|
fedora-x86_64:
|
|
stage: build
|
|
except:
|
|
- tags
|
|
variables:
|
|
CFLAGS: "-coverage -ftest-coverage -fprofile-arcs"
|
|
script:
|
|
- meson ${MESON_COMMON_OPTIONS} --werror -Dsystemtap=true -Ddtrace=true -Dfam=true _build
|
|
- ninja -C _build
|
|
- mkdir -p _coverage
|
|
- lcov --config-file .gitlab-ci/lcovrc --directory _build --capture --initial --output-file "_coverage/${CI_JOB_NAME}-baseline.lcov"
|
|
- meson test -C _build --timeout-multiplier ${MESON_TEST_TIMEOUT_MULTIPLIER}
|
|
- lcov --config-file .gitlab-ci/lcovrc --directory _build --capture --output-file "_coverage/${CI_JOB_NAME}.lcov"
|
|
artifacts:
|
|
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- "_build/config.h"
|
|
- "_build/glib/glibconfig.h"
|
|
- "_build/meson-logs"
|
|
- "_coverage"
|
|
|
|
.cross-template: &cross-template
|
|
stage: build
|
|
except:
|
|
- tags
|
|
artifacts:
|
|
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- "_build/meson-logs"
|
|
|
|
fedora-autotools-x86_64:
|
|
stage: build
|
|
except:
|
|
- tags
|
|
variables:
|
|
CFLAGS: "-Werror"
|
|
V: "1"
|
|
MAKEFLAGS: "-j8"
|
|
script:
|
|
- mkdir _build
|
|
- cd _build
|
|
- ../autogen.sh --enable-always-build-tests --enable-systemtap --enable-dtrace
|
|
- make
|
|
- make check
|
|
artifacts:
|
|
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- "_build/config.h"
|
|
- "_build/glib/glibconfig.h"
|
|
- "_build/*.log"
|
|
- "_build/*/*.log"
|
|
- "_build/*/*/*.log"
|
|
- "_build/*/*/*/*.log"
|
|
- "_build/*/*/*/*/*.log"
|
|
- "_build/*/*/*/*/*/*.log"
|
|
|
|
cross-android_api21_arm64:
|
|
<<: *cross-template
|
|
script:
|
|
# FIXME: add --werror
|
|
- meson ${MESON_COMMON_OPTIONS} --cross-file=/opt/cross_file_android_arm64_21.txt -Diconv=gnu -Dinternal_pcre=true _build
|
|
- ninja -C _build
|
|
|
|
cross-android_api28_arm64:
|
|
<<: *cross-template
|
|
script:
|
|
# FIXME: add --werror
|
|
- meson ${MESON_COMMON_OPTIONS} --cross-file=/opt/cross_file_android_arm64_28.txt -Dinternal_pcre=true _build
|
|
- ninja -C _build
|
|
|
|
cross-mingw64:
|
|
<<: *cross-template
|
|
script:
|
|
# FIXME: Add --werror
|
|
- meson ${MESON_COMMON_OPTIONS} --cross-file=/opt/cross_file_mingw64.txt _build
|
|
- ninja -C _build
|
|
|
|
msys2-mingw32:
|
|
stage: build
|
|
except:
|
|
- tags
|
|
tags:
|
|
- win32
|
|
variables:
|
|
MSYSTEM: "MINGW32"
|
|
CHERE_INVOKING: "yes"
|
|
script:
|
|
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu --ask 20
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./.gitlab-ci/test-msys2.sh"
|
|
artifacts:
|
|
name: "glib-%CI_JOB_NAME%-%CI_COMMIT_REF_NAME%"
|
|
when: always
|
|
paths:
|
|
- _build/meson-logs
|
|
- _coverage/
|
|
|
|
vs2017-x64:
|
|
stage: build
|
|
except:
|
|
- tags
|
|
tags:
|
|
- win32
|
|
script:
|
|
- .gitlab-ci/test-msvc.bat
|
|
artifacts:
|
|
name: "glib-%CI_JOB_NAME%-%CI_COMMIT_REF_NAME%"
|
|
when: always
|
|
paths:
|
|
- _build/meson-logs
|
|
|
|
freebsd-11-x86_64:
|
|
when: manual
|
|
stage: build
|
|
tags:
|
|
# To run a FreeBSD builder, install gitlab-runner package and start both
|
|
# gitlab-runner and dbus service because we need /var/lib/dbus/machine-id.
|
|
# To compile GLib, you still have to install the following packages:
|
|
# desktop-file-utils gettext libiconv meson pkgconf python3 shared-mime-info
|
|
- freebsd-11
|
|
variables:
|
|
# CPPFLAGS is required because libintl doesn't use pkg-config.
|
|
CPPFLAGS: -I/usr/local/include
|
|
# FIXME: Workaround meson inability to set LD_LIBRARY_PATH.
|
|
# https://github.com/mesonbuild/meson/issues/1383
|
|
# https://github.com/mesonbuild/meson/issues/1635
|
|
# https://github.com/mesonbuild/meson/issues/2881
|
|
LDFLAGS: -L/usr/local/lib -Wl,--disable-new-dtags
|
|
# FreeBSD doesn't have C.UTF-8 locale.
|
|
LANG: en_US.UTF-8
|
|
script:
|
|
# We cannot use -Wl,--no-undefined because GLib uses 'environ' variable.
|
|
# FreeBSD iconv doesn't handle transliteration, so we use GNU libiconv here.
|
|
# FreeBSD supports xattr, but its API is different from Linux xattr.
|
|
# FIXME: extattr(2) support: https://gitlab.gnome.org/GNOME/glib/issues/1404
|
|
- meson ${MESON_COMMON_OPTIONS} -Db_lundef=false -Diconv=gnu -Dxattr=false _build
|
|
- ninja -C _build
|
|
- meson test -C _build --timeout-multiplier "${MESON_TEST_TIMEOUT_MULTIPLIER}"
|
|
# FIXME: Remove this when we have a stable FreeBSD runner
|
|
# https://gitlab.gnome.org/Infrastructure/GitLab/issues/286
|
|
allow_failure: true
|
|
except:
|
|
- tags
|
|
artifacts:
|
|
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- "_build/config.h"
|
|
- "_build/glib/glibconfig.h"
|
|
- "_build/meson-logs"
|
|
|
|
coverage:
|
|
stage: coverage
|
|
except:
|
|
- tags
|
|
artifacts:
|
|
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
paths:
|
|
- _coverage/
|
|
script:
|
|
- bash -x ./.gitlab-ci/coverage-docker.sh
|
|
coverage: '/^\s+lines\.+:\s+([\d.]+\%)\s+/'
|
|
|
|
pages:
|
|
stage: deploy
|
|
only:
|
|
- master
|
|
script:
|
|
- mv _coverage/ public/
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
|
|
dist-job:
|
|
stage: build
|
|
only:
|
|
- tags
|
|
script:
|
|
- meson --buildtype release --fatal-meson-warnings -Dgtk_doc=true -Dman=true _build
|
|
- cd _build
|
|
- ninja dist
|
|
- ninja glib-doc gobject-doc gio-doc
|
|
- tar -c -f "glib-docs-$CI_COMMIT_TAG.tar.xz" -C docs/reference/glib html
|
|
- tar -c -f "gobject-docs-$CI_COMMIT_TAG.tar.xz" -C docs/reference/gobject html
|
|
- tar -c -f "gio-docs-$CI_COMMIT_TAG.tar.xz" -C docs/reference/gio html
|
|
artifacts:
|
|
paths:
|
|
- "${CI_PROJECT_DIR}/_build/glib-docs.tar.xz"
|
|
- "${CI_PROJECT_DIR}/_build/gobject-docs.tar.xz"
|
|
- "${CI_PROJECT_DIR}/_build/gio-docs.tar.xz"
|
|
- "${CI_PROJECT_DIR}/_build/meson-dist/glib-*.tar.xz"
|