blob: 36e8763c496e3e264acc8d6612b1b77e484e06e5 (
plain)
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
123
124
125
126
127
|
# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0 filetype=yaml:
#
# This CI uses the freedesktop.org ci-templates.
# Please see the ci-templates documentation for details:
# https://freedesktop.pages.freedesktop.org/ci-templates/
.templates_sha: &template_sha 34f4ade99434043f88e164933f570301fd18b125 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
include:
# FreeBSD container builder template
- project: 'freedesktop/ci-templates'
ref: *template_sha
file: '/templates/freebsd.yml'
- project: 'freedesktop/ci-templates'
ref: *template_sha
file: '/templates/ci-fairy.yml'
- template: Security/SAST.gitlab-ci.yml
stages:
- prep # prep work like rebuilding the container images if there is a change
- build # for actually building and testing things in a container
- test
- deploy
variables:
FDO_UPSTREAM_REPO: 'xorg/driver/xf86-input-mouse'
# The tag should be updated each time the list of packages is updated.
# Changing a tag forces the associated image to be rebuilt.
# Note: the tag has no meaning, we use a date format purely for readability
FDO_DISTRIBUTION_TAG: '2022-01-17.0'
FDO_DISTRIBUTION_VERSION: '13.0'
# Packages needed to build enough of xorg-server to build this driver
EXTRA_PACKAGES: 'meson ninja pixman xtrans libXau libXdmcp libXfont2 libxkbfile libxcvt libpciaccess font-util'
FDO_DISTRIBUTION_PACKAGES: 'git gcc pkgconf autoconf automake libtool xorg-macros xorgproto $EXTRA_PACKAGES'
#
# Verify that commit messages are as expected
#
check-commits:
extends:
- .fdo.ci-fairy
stage: prep
script:
- ci-fairy check-commits --junit-xml=results.xml
except:
- master@xorg/driver/xf86-input-mouse
variables:
GIT_DEPTH: 100
artifacts:
reports:
junit: results.xml
#
# Verify that the merge request has the allow-collaboration checkbox ticked
#
check-merge-request:
extends:
- .fdo.ci-fairy
stage: deploy
script:
- ci-fairy check-merge-request --require-allow-collaboration --junit-xml=results.xml
artifacts:
when: on_failure
reports:
junit: results.xml
allow_failure: true
#
# Build a container with the given tag and the packages pre-installed.
# This only happens if the tag changes, otherwise the existing image is
# re-used.
#
container-prep:
extends:
- .fdo.qemu-build@freebsd@x86_64
stage: prep
variables:
GIT_STRATEGY: none
#
# The default build, runs on the image built above.
#
build:
stage: build
extends:
- .fdo.distribution-image@freebsd
variables:
XSERVER_MESON_FLAGS: -Dglx=false -Dglamor=false -Dudev=false -Dudev_kms=false
script:
# start the VM. This also sets up ssh/scp to connect to "vm"
# correctly.
- /app/vmctl start
# copy our workspace to the VM
# The quotes are required to stop the ':' from parsing as yaml
- scp -r $PWD "vm:"
# We don't want any failed commands to exit our script until VM
# cleanup has been completed.
- set +e
# First we need to build and install the Xorg server to get the SDK headers
- |
/app/vmctl exec "git clone --depth=1 https://gitlab.freedesktop.org/xorg/xserver.git"
/app/vmctl exec "mkdir xserver/_builddir"
/app/vmctl exec "cd xserver/_builddir && meson setup $XSERVER_MESON_FLAGS"
/app/vmctl exec "cd xserver/_builddir && ninja"
/app/vmctl exec "cd xserver/_builddir && ninja install"
# Now build this driver
- |
/app/vmctl exec "mkdir $CI_PROJECT_NAME/_builddir"
/app/vmctl exec "cd $CI_PROJECT_NAME/_builddir && ../autogen.sh --disable-silent-rules PKG_CONFIG_PATH=/usr/local/lib/pkgconfig"
/app/vmctl exec "cd $CI_PROJECT_NAME/_builddir && make"
/app/vmctl exec "cd $CI_PROJECT_NAME/_builddir && make check"
/app/vmctl exec "cd $CI_PROJECT_NAME/_builddir && env PKG_CONFIG_PATH=/usr/local/lib/pkgconfig make distcheck" && touch .success
# copy any test results from the VM to our container so we can
# save them as artifacts
# - scp -r vm:$CI_PROJECT_NAME/test-results.xml .
# shut down the VM
- /app/vmctl stop
# VM cleanup is complete, any command failures now should result in
# a CI failed job
- set -e
# our CI script exit code should match the test command exit status
- test -e .success || exit 1
|