summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: 65dd0d2eb42131404c1c1eefe717f443ba5a920c (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
# 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-02-24.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'
    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