-
Notifications
You must be signed in to change notification settings - Fork 24
/
.gitlab-ci.yml
122 lines (113 loc) · 4.29 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# 2024-06-11: ubuntu:latest = 24.04, ubuntu:rolling = 24.04, ubuntu:devel = 24.10
# See https://hub.docker.com/_/ubuntu
image: ubuntu:rolling
stages:
- build
- deploy
variables:
MESON_GCC_DEPS: g++
gettext
git
yelp-tools
gtk-doc-tools
python3-pygments
python3-setuptools
libglib2.0-dev
libcairo2-dev
libpango1.0-dev
libgtk-4-dev
mm-common
libsigc++-3.0-dev
libsigc++-3.0-doc
libglibmm-2.68-dev
libglibmm-2.68-doc
libcairomm-1.16-dev
libcairomm-1.16-doc
libpangomm-2.48-dev
libpangomm-2.48-doc
libxml-libxml-perl
meson
ninja-build
glib-networking
# If libgtk-4-dev is too old, gtk4 is built as a subproject of gtkmm-4.0.
GTK4_BUILD_DEPS: libgstreamer1.0-dev
libgstreamer-plugins-base1.0-dev
libgstreamer-plugins-good1.0-dev
libgstreamer-plugins-bad1.0-dev
libgudev-1.0-dev
libsass-dev
libxml2-dev
glslc
GTK4_MESON_OPTIONS: -Dgtk4:build-demos=false
-Dgtk4:build-testsuite=false
-Dgtk4:build-examples=false
-Dgtk4:build-tests=false
GIO_EXTRA_MODULES: "/usr/lib/x86_64-linux-gnu/gio/modules"
GIT_SUBMODULE_STRATEGY: normal
.build_default:
before_script:
- export DEBIAN_FRONTEND=noninteractive
- apt update && apt -y upgrade && apt -y install $DEPENDENCIES
release_gcc_build:
extends: .build_default
stage: build
variables:
DEPENDENCIES: $MESON_GCC_DEPS $GTK4_BUILD_DEPS
script:
- mkdir _build && cd _build
# -Ddebug=false + -Doptimization=3 correspond to -Dbuildtype=release
# Don't use warning_level and werror. They are applied also to subprojects.
# meson setup --prefix=/usr --libdir=lib -Ddebug=false -Doptimization=3 -Dwarnings=fatal -Dwarning_level=3 -Dwerror=true
# Don't use warnings=fatal. Accept that functions can be deprecated in gtk but not in gtkmm.
# meson setup --prefix=/usr --libdir=lib -Ddebug=false -Doptimization=3 -Dwarnings=fatal
- meson setup --prefix=/usr --libdir=lib -Ddebug=false -Doptimization=3 -Dwarnings=max $GTK4_MESON_OPTIONS
- meson compile
# Some tests fail with
# Unable to init Broadway server: Could not connect: No such file or directory
# Gtk-WARNING **: 14:38:45.180: cannot open display:
# Skip tests. Most test cases are not executed anyway, only built by 'meson compile'.
# - meson test
- meson install --quiet
artifacts:
when: always
paths:
- _build/docs/reference
- _build/meson-logs/testlog.txt
- _build/meson-logs/meson-log.txt
release_clang_build:
extends: .build_default
stage: build
variables:
DEPENDENCIES: $MESON_GCC_DEPS $GTK4_BUILD_DEPS clang
script:
- mkdir _build && cd _build
# -Ddebug=false + -Doptimization=3 correspond to -Dbuildtype=release
# Don't use warning_level and werror. They are applied also to subprojects.
# CC=clang CXX=clang++ meson setup --prefix=/usr --libdir=lib -Ddebug=false -Doptimization=3 -Dwarnings=fatal -Dwarning_level=3 -Dwerror=true
# Don't use warnings=fatal. Accept that functions can be deprecated in gtk but not in gtkmm.
# CC=clang CXX=clang++ meson setup --prefix=/usr --libdir=lib -Ddebug=false -Doptimization=3 -Dwarnings=fatal
- CC=clang CXX=clang++ meson setup --prefix=/usr --libdir=lib -Ddebug=false -Doptimization=3 -Dwarnings=max $GTK4_MESON_OPTIONS
- meson compile
# See comment in the release_gcc_build job.
# - meson test
- meson install --quiet
allow_failure: true
artifacts:
when: on_failure
paths:
- _build/meson-logs/testlog.txt
- _build/meson-logs/meson-log.txt
expire_in: 1 week
# Publish reference documentation at gnome.pages.gitlab.gnome.org/gtkmm
pages:
stage: deploy
needs: [release_gcc_build]
script:
- mkdir public
- mv _build/docs/reference/html/* public
artifacts:
paths:
- public
only:
refs:
- master