mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-26 15:36:14 +01:00
c3645a84b6
gitlab will drop cmd.exe support with GitLab 13 so I took the opportunity to add new runners with Windows 2016 and powershell as default. These runners are tagged with win32-ps instead of win32. The old runners will be switched off in the coming weeks. The main difference is that all commands and env expansions use powershell and Windows 2016 instead of 2012r2.
482 lines
15 KiB
YAML
482 lines
15 KiB
YAML
stages:
|
|
- style-check
|
|
- build
|
|
- coverage
|
|
- analysis
|
|
- deploy
|
|
|
|
cache:
|
|
paths:
|
|
- _ccache/
|
|
|
|
variables:
|
|
FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/glib/fedora:v8"
|
|
DEBIAN_IMAGE: "registry.gitlab.gnome.org/gnome/glib/debian-stable:v6"
|
|
ANDROID_IMAGE: "registry.gitlab.gnome.org/gnome/glib/android-ndk:v2"
|
|
MINGW_IMAGE: "registry.gitlab.gnome.org/gnome/glib/mingw:v2"
|
|
MESON_TEST_TIMEOUT_MULTIPLIER: 2
|
|
G_MESSAGES_DEBUG: all
|
|
MESON_COMMON_OPTIONS_NO_WARNING: "--buildtype debug --wrap-mode=nodownload"
|
|
MESON_COMMON_OPTIONS: "${MESON_COMMON_OPTIONS_NO_WARNING} --fatal-meson-warnings"
|
|
|
|
.only-default:
|
|
only:
|
|
- branches
|
|
except:
|
|
- tags
|
|
|
|
.build:
|
|
extends: .only-default
|
|
before_script:
|
|
- bash .gitlab-ci/show-execution-environment.sh
|
|
- cp -r $HOME/subprojects/* subprojects/
|
|
|
|
style-check-diff:
|
|
extends: .only-default
|
|
image: $DEBIAN_IMAGE
|
|
stage: style-check
|
|
allow_failure: true
|
|
script:
|
|
- .gitlab-ci/run-style-check-diff.sh
|
|
|
|
check-todos:
|
|
extends: .only-default
|
|
image: $DEBIAN_IMAGE
|
|
stage: style-check
|
|
allow_failure: true
|
|
script:
|
|
- .gitlab-ci/run-check-todos.sh
|
|
|
|
fedora-x86_64:
|
|
extends: .build
|
|
image: $FEDORA_IMAGE
|
|
stage: build
|
|
variables:
|
|
CFLAGS: "-coverage -ftest-coverage -fprofile-arcs"
|
|
script:
|
|
# FIXME: Cannot use MESON_COMMON_OPTIONS here because meson warns about gtkdoc
|
|
# feature introduced in 0.52 but we only depends on 0.49. So we cannot build
|
|
# with --fatal-meson-warnings.
|
|
- meson ${MESON_COMMON_OPTIONS_NO_WARNING}
|
|
--werror
|
|
--default-library=both
|
|
--prefix=$HOME/glib-installed
|
|
--libdir=lib
|
|
-Dsystemtap=true
|
|
-Ddtrace=true
|
|
-Dfam=true
|
|
-Dinstalled_tests=true
|
|
-Dgtk_doc=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"
|
|
- .gitlab-ci/run-tests.sh
|
|
- lcov --config-file .gitlab-ci/lcovrc --directory _build --capture --output-file "_coverage/${CI_JOB_NAME}.lcov"
|
|
artifacts:
|
|
reports:
|
|
junit: "_build/${CI_JOB_NAME}-report.xml"
|
|
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- "_build/config.h"
|
|
- "_build/glib/glibconfig.h"
|
|
- "_build/meson-logs"
|
|
- "_build/docs/reference/glib/glib-undeclared.txt"
|
|
- "_build/docs/reference/glib/glib-undocumented.txt"
|
|
- "_build/docs/reference/glib/glib-unused.txt"
|
|
- "_build/docs/reference/gobject/gobject-undeclared.txt"
|
|
- "_build/docs/reference/gobject/gobject-undocumented.txt"
|
|
- "_build/docs/reference/gobject/gobject-unused.txt"
|
|
- "_build/docs/reference/gio/gio-undeclared.txt"
|
|
- "_build/docs/reference/gio/gio-undocumented.txt"
|
|
- "_build/docs/reference/gio/gio-unused.txt"
|
|
- "_build/${CI_JOB_NAME}-report.xml"
|
|
- "_coverage"
|
|
|
|
debian-stable-x86_64:
|
|
extends: .build
|
|
image: $DEBIAN_IMAGE
|
|
stage: build
|
|
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
|
|
- .gitlab-ci/run-tests.sh
|
|
artifacts:
|
|
reports:
|
|
junit: "_build/${CI_JOB_NAME}-report.xml"
|
|
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- "_build/config.h"
|
|
- "_build/glib/glibconfig.h"
|
|
- "_build/meson-logs"
|
|
- "_build/${CI_JOB_NAME}-report.xml"
|
|
|
|
installed-tests:
|
|
extends: .build
|
|
image: $FEDORA_IMAGE
|
|
stage: build
|
|
script:
|
|
# dtrace is disabled because it breaks the static-link.py test
|
|
- meson ${MESON_COMMON_OPTIONS}
|
|
--werror
|
|
--prefix=/usr --libdir=/usr/lib64
|
|
-Dfam=true
|
|
-Dinstalled_tests=true
|
|
-Ddefault_library=both
|
|
-Ddtrace=false
|
|
_build
|
|
- ninja -C _build
|
|
- sudo ninja -C _build install
|
|
- sudo chown -R `id -un`:`id -gn` _build/
|
|
# FIXME Install newer xdg-desktop-portal with
|
|
# GMemoryMonitor support, see:
|
|
# https://github.com/flatpak/xdg-desktop-portal/pull/365
|
|
- git clone --single-branch https://github.com/flatpak/xdg-desktop-portal.git
|
|
- cd xdg-desktop-portal
|
|
- git reset --hard 1.6.0
|
|
- ./autogen.sh --prefix=/usr --libdir=/usr/lib64 --disable-libportal --disable-dependency-tracking
|
|
- make
|
|
- sudo make install
|
|
- cd ..
|
|
# FIXME install newer gobject-introspection
|
|
# with GMemoryMonitor support, see:
|
|
# https://gitlab.gnome.org/GNOME/gobject-introspection/merge_requests/193
|
|
- git clone --single-branch https://gitlab.gnome.org/GNOME/gobject-introspection.git
|
|
- cd gobject-introspection
|
|
- /usr/bin/meson _build --prefix=/usr --libdir=/usr/lib64
|
|
- ninja -C _build
|
|
- sudo ninja -C _build install
|
|
- cd ..
|
|
# Work-around https://gitlab.gnome.org/GNOME/gnome-desktop-testing/merge_requests/2
|
|
- mkdir -p _build/installed-tests-report/logs/
|
|
- GLIB_TEST_COMPILATION=1 gnome-desktop-testing-runner
|
|
--report-directory=_build/installed-tests-report/failed/
|
|
--log-directory=_build/installed-tests-report/logs/
|
|
--parallel=0
|
|
glib
|
|
artifacts:
|
|
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- "_build/config.h"
|
|
- "_build/glib/glibconfig.h"
|
|
- "_build/meson-logs"
|
|
- "_build/installed-tests-report/"
|
|
|
|
G_DISABLE_ASSERT:
|
|
extends: .build
|
|
image: $FEDORA_IMAGE
|
|
stage: build
|
|
script:
|
|
- meson ${MESON_COMMON_OPTIONS}
|
|
--werror
|
|
-Dsystemtap=true
|
|
-Ddtrace=true
|
|
-Dfam=true
|
|
-Dinstalled_tests=true
|
|
-Dglib_assert=false
|
|
_build
|
|
- ninja -C _build
|
|
- bash -x ./.gitlab-ci/run-tests.sh
|
|
artifacts:
|
|
reports:
|
|
junit: "_build/${CI_JOB_NAME}-report.xml"
|
|
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- "_build/config.h"
|
|
- "_build/glib/glibconfig.h"
|
|
- "_build/meson-logs"
|
|
- "_build/${CI_JOB_NAME}-report.xml"
|
|
|
|
valgrind:
|
|
extends: .build
|
|
image: $FEDORA_IMAGE
|
|
stage: analysis
|
|
variables:
|
|
MESON_TEST_TIMEOUT_MULTIPLIER: 10
|
|
script:
|
|
- meson ${MESON_COMMON_OPTIONS}
|
|
--werror
|
|
-Dsystemtap=true
|
|
-Ddtrace=true
|
|
-Dfam=true
|
|
-Dinstalled_tests=true
|
|
_build
|
|
- ninja -C _build
|
|
- bash -x ./.gitlab-ci/run-tests.sh
|
|
--log-file _build/meson-logs/testlog-valgrind.json
|
|
--wrap "valgrind --tool=memcheck --error-exitcode=1 --track-origins=yes --leak-check=full --leak-resolution=high --num-callers=50 --show-leak-kinds=definite,possible --show-error-list=yes --suppressions=${CI_PROJECT_DIR}/glib.supp"
|
|
--no-suite no-valgrind
|
|
--no-suite slow
|
|
# FIXME: Remove this when we have zero valgrind leaks.
|
|
# https://gitlab.gnome.org/GNOME/glib/issues/333
|
|
allow_failure: true
|
|
artifacts:
|
|
reports:
|
|
junit: "_build/${CI_JOB_NAME}-report.xml"
|
|
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- "_build/config.h"
|
|
- "_build/glib/glibconfig.h"
|
|
- "_build/meson-logs"
|
|
|
|
.cross-template: &cross-template
|
|
extends: .build
|
|
stage: build
|
|
artifacts:
|
|
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- "_build/meson-logs"
|
|
|
|
cross-android_api21_arm64:
|
|
<<: *cross-template
|
|
image: $ANDROID_IMAGE
|
|
script:
|
|
# FIXME: add --werror
|
|
# We use -Diconv=auto to test that we successfully detect that iconv is not
|
|
# provided by android api 21, and detect the external iconv instead.
|
|
- meson ${MESON_COMMON_OPTIONS} --cross-file=/opt/cross_file_android_arm64_21.txt -Diconv=auto -Dinternal_pcre=true _build
|
|
- ninja -C _build
|
|
|
|
cross-android_api28_arm64:
|
|
<<: *cross-template
|
|
image: $ANDROID_IMAGE
|
|
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
|
|
image: $MINGW_IMAGE
|
|
script:
|
|
# FIXME: Add --werror
|
|
- meson ${MESON_COMMON_OPTIONS} --cross-file=/opt/cross_file_mingw64.txt _build
|
|
- ninja -C _build
|
|
|
|
msys2-mingw32:
|
|
extends: .only-default
|
|
stage: build
|
|
tags:
|
|
- win32-ps
|
|
variables:
|
|
MSYSTEM: "MINGW32"
|
|
CHERE_INVOKING: "yes"
|
|
script:
|
|
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu --ask 20
|
|
- C:\msys64\usr\bin\bash .gitlab-ci/show-execution-environment.sh
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./.gitlab-ci/test-msys2.sh"
|
|
artifacts:
|
|
reports:
|
|
junit: "_build/${env:CI_JOB_NAME}-report.xml"
|
|
name: "glib-${env:CI_JOB_NAME}-${env:CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- _build/meson-logs
|
|
- "_build/${env:CI_JOB_NAME}-report.xml"
|
|
- _coverage/
|
|
|
|
vs2017-x64:
|
|
extends: .only-default
|
|
stage: build
|
|
tags:
|
|
- win32-ps
|
|
script:
|
|
- .gitlab-ci/test-msvc.bat
|
|
artifacts:
|
|
reports:
|
|
junit: "_build/${env:CI_JOB_NAME}-report.xml"
|
|
name: "glib-${env:CI_JOB_NAME}-${env:CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- _build/meson-logs
|
|
- "_build/${env:CI_JOB_NAME}-report.xml"
|
|
|
|
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
|
|
before_script:
|
|
- bash .gitlab-ci/show-execution-environment.sh
|
|
script:
|
|
# We cannot use -Wl,--no-undefined because GLib uses 'environ' variable.
|
|
# FreeBSD iconv doesn't handle transliteration, so we use (external) 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=external -Dxattr=false _build
|
|
- ninja -C _build
|
|
- bash -x ./.gitlab-ci/run-tests.sh
|
|
artifacts:
|
|
reports:
|
|
junit: "_build/${CI_JOB_NAME}-report.xml"
|
|
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- "_build/config.h"
|
|
- "_build/glib/glibconfig.h"
|
|
- "_build/meson-logs"
|
|
- "_build/${CI_JOB_NAME}-report.xml"
|
|
|
|
freebsd-12-x86_64:
|
|
stage: build
|
|
only:
|
|
- branches@GNOME/glib
|
|
tags:
|
|
- freebsd-12
|
|
variables:
|
|
CPPFLAGS: -I/usr/local/include
|
|
LDFLAGS: -L/usr/local/lib -Wl,--disable-new-dtags
|
|
LANG: en_US.UTF-8
|
|
before_script:
|
|
- bash .gitlab-ci/show-execution-environment.sh
|
|
script:
|
|
- meson ${MESON_COMMON_OPTIONS} -Db_lundef=false -Diconv=external -Dxattr=false _build
|
|
- ninja -C _build
|
|
- bash -x ./.gitlab-ci/run-tests.sh
|
|
except:
|
|
- tags
|
|
artifacts:
|
|
reports:
|
|
junit: "_build/${CI_JOB_NAME}-report.xml"
|
|
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- "_build/config.h"
|
|
- "_build/glib/glibconfig.h"
|
|
- "_build/meson-logs"
|
|
- "_build/${CI_JOB_NAME}-report.xml"
|
|
|
|
macos:
|
|
extends: .only-default
|
|
stage: build
|
|
only:
|
|
- branches@GNOME/glib
|
|
tags:
|
|
- macos
|
|
before_script:
|
|
- bash .gitlab-ci/show-execution-environment.sh
|
|
- pip3 install --user meson==0.49.2
|
|
- pip3 install --user ninja
|
|
- export PATH=/Users/gitlabrunner/Library/Python/3.7/bin:$PATH
|
|
script:
|
|
# FIXME: Add --werror
|
|
# FIXME: Use --wrap-mode=default so we download dependencies each time,
|
|
# until the macOS runner is a VM where we can use a pre-made image which
|
|
# already contains the dependencies. See:
|
|
# - https://gitlab.gnome.org/GNOME/glib/merge_requests/388
|
|
# - https://gitlab.gnome.org/Infrastructure/Infrastructure/issues/225
|
|
- meson ${MESON_COMMON_OPTIONS}
|
|
--wrap-mode=default
|
|
_build
|
|
- ninja -C _build
|
|
# FIXME: Multiple unit tests currently fails
|
|
- .gitlab-ci/run-tests.sh || true
|
|
artifacts:
|
|
reports:
|
|
junit: "_build/${CI_JOB_NAME}-report.xml"
|
|
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- "_build/config.h"
|
|
- "_build/glib/glibconfig.h"
|
|
- "_build/meson-logs"
|
|
- "_build/${CI_JOB_NAME}-report.xml"
|
|
|
|
coverage:
|
|
extends: .only-default
|
|
image: $FEDORA_IMAGE
|
|
stage: coverage
|
|
artifacts:
|
|
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
paths:
|
|
- _coverage/
|
|
before_script:
|
|
- bash .gitlab-ci/show-execution-environment.sh
|
|
script:
|
|
- bash -x ./.gitlab-ci/coverage-docker.sh
|
|
coverage: '/^\s+lines\.+:\s+([\d.]+\%)\s+/'
|
|
|
|
scan-build:
|
|
extends: .build
|
|
image: $FEDORA_IMAGE
|
|
stage: analysis
|
|
script:
|
|
- meson ${MESON_COMMON_OPTIONS}
|
|
--werror
|
|
--default-library=both
|
|
--prefix=$HOME/glib-installed
|
|
--libdir=lib
|
|
-Dsystemtap=true
|
|
-Ddtrace=true
|
|
-Dfam=true
|
|
-Dinstalled_tests=true
|
|
_scan_build
|
|
- ninja -C _scan_build scan-build
|
|
artifacts:
|
|
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- "_scan_build/meson-logs/scanbuild"
|
|
|
|
pages:
|
|
stage: deploy
|
|
only:
|
|
- master
|
|
script:
|
|
- mv _coverage/ public/
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
|
|
dist-job:
|
|
image: $FEDORA_IMAGE
|
|
stage: build
|
|
only:
|
|
- tags
|
|
script:
|
|
# FIXME: Cannot use --fatal-meson-warnings here because meson warns about gtkdoc
|
|
# feature introduced in 0.52 but we only depends on 0.49.
|
|
- meson ${MESON_COMMON_OPTIONS_NO_WARNING} --buildtype release -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"
|