summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: bfee17e02ec6a5afec42a4af224eb505c6ffe181 (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
128
129
130
131
132
133
134
135
136
137
# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0:

include:
  # Arch container builder template
  - project: 'freedesktop/ci-templates'
    ref: 6f86b8bcb0cd5168c32779c4fea9a893c4a0c046
    file:
      - '/templates/arch.yml'

# global variables to be used by most/all jobs.
variables:
  FDO_UPSTREAM_REPO: 'xorg/proto/xorgproto'
  # Changing the tag will rebuild the container images. The value is just a
  # string, but we use the date for human benefits.
  FDO_DISTRIBUTION_TAG: '2021-04-30.0'

stages:
  - prep
  - check
  - build
  - test

container-prep:
  extends:
    - .fdo.container-build@arch
  stage: prep
  variables:
    GIT_STRATEGY: none
    # minimal set of packages required to build and install
    BASE_PACKAGES: 'meson ninja gcc autoconf automake make xorg-util-macros pkgconf'
    # extra packages we need for various tests
    EXTRA_PACKAGES: 'git libevdev python python-libevdev python-black jq'
    FDO_DISTRIBUTION_PACKAGES: $BASE_PACKAGES $EXTRA_PACKAGES

meson:
  extends:
    - .fdo.distribution-image@arch
  stage: build
  parallel:
    matrix:
      - MESON_OPTIONS: ['', '-Dlegacy=true']
  script:
    - mkdir -p ../_inst
    - meson builddir --prefix="$PWD/../_inst" $MESON_OPTIONS
    - meson configure builddir
    - ninja -C builddir test
    - ninja -C builddir install

autotools:
  extends:
    - .fdo.distribution-image@arch
  stage: build
  parallel:
    matrix:
      - CONFIGURE_OPTIONS: ['', '--enable-legacy']
  script:
    - mkdir -p ../_inst _build
    - autoreconf -ivf
    - pushd _build
    - ../configure --prefix="$PWD/../_inst" $CONFIGURE_OPTIONS
    - make check
    - make install
    - make distcheck
    - mv xorgproto*.tar.gz ..
    - popd
  artifacts:
    paths:
      - xorgproto*.tar.gz

meson from tarball:
  extends:
    - .fdo.distribution-image@arch
  stage: test
  script:
    - mkdir -p _tarball_build
    - tar xf xorgproto-*.tar.gz -C _tarball_build
    - pushd _tarball_build/xorgproto-*
    - meson builddir
    - meson configure builddir
    - ninja -C builddir test
  needs:
    - autotools
  variables:
    GIT_STRATEGY: none

compare meson and autotools:
  extends:
    - .fdo.distribution-image@arch
  stage: test
  script:
    - mkdir -p $PWD/_meson_inst
    - mkdir -p $PWD/_autotools_inst
    # the prefix ends up in the pkgconfig files, so we use a symlink
    # to use the same --prefix for meson and autotools
    - ln -sf $PWD/_meson_inst $PWD/_inst
    - meson builddir
    - meson configure builddir --prefix=$PWD/_inst
    - ninja -C builddir install
    - rm $PWD/_inst
    - ln -sf $PWD/_autotools_inst $PWD/_inst
    - autoreconf -ivf
    # meson doesn't build the specs yet
    - ./configure --prefix=$PWD/_inst --disable-specs
    - make && make install
    - diff --brief --recursive $PWD/_meson_inst $PWD/_autotools_inst

check evdev keysyms:
  extends:
    - .fdo.distribution-image@arch
  stage: test
  script:
    - ./scripts/keysym-generator.py --header=include/X11/XF86keysym.h verify

check formatting:
  extends:
    - .fdo.distribution-image@arch
  stage: check
  script:
    - black scripts/keysym-generator.py
    - git diff --exit-code || (echo "Please run Black against the Python script" && false)
  only:
    changes:
      - scripts/keysym-generator.py

check versions are in sync:
  extends:
    - .fdo.distribution-image@arch
  stage: test
  script:
    - autoreconf -ivf
    - ./configure --version | head -n 1 | sed -e 's/xorgproto configure //' > autotools.version
    - |
      meson builddir
      pushd builddir
      meson introspect --projectinfo | jq -r '.version' > ../meson.version
      popd
    - diff -u autotools.version meson.version || (echo "ERROR - autotools and meson versions not in sync" && false)