mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-26 23:46:15 +01:00
7058efb390
This effectively renders those tests useless (since realistically nobody runs tests locally), but it’s better than every other CI run failing for unrelated reasons. The idea is that the ‘flaky’ tag can be temporarily applied to a test while a problem is being investigated or fixed, and then removed later. Signed-off-by: Philip Withnall <withnall@endlessm.com>
223 lines
6.3 KiB
YAML
223 lines
6.3 KiB
YAML
image: registry.gitlab.gnome.org/gnome/glib/master:v11
|
|
|
|
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
|
|
--default-library=both
|
|
--prefix=$HOME/glib-installed
|
|
--libdir=lib
|
|
-Dsystemtap=true
|
|
-Ddtrace=true
|
|
-Dfam=true
|
|
-Dinstalled_tests=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} --no-suite flaky
|
|
- lcov --config-file .gitlab-ci/lcovrc --directory _build --capture --output-file "_coverage/${CI_JOB_NAME}.lcov"
|
|
# FIXME: We should run all installed tests, but do only this one for now
|
|
# because it cannot run uninstalled. Reconfigure with dtrace disabled
|
|
# because it breaks static link.
|
|
- meson configure -Ddtrace=false _build
|
|
- ninja -C _build install
|
|
- GLIB_TEST_COMPILATION=1 $HOME/glib-installed/libexec/installed-tests/glib/static-link.py $HOME/glib-installed/lib/pkgconfig
|
|
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:
|
|
stage: build
|
|
only:
|
|
- branches@GNOME/glib
|
|
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}" --no-suite flaky
|
|
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"
|