summaryrefslogtreecommitdiff
path: root/circle.yml
blob: 377cb970bc8d8f0ff06f238ab3964e2e7ad138b2 (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
138
139
140
141
142
143
144
# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0:

libinput_jobs:
  default_settings: &default_settings
    working_directory: ~/libinput
  # Define a couple of standardized build targets
  # that we call from every build container
  build_and_test_default: &build_and_test_default
    name: Build
    command: |
      rm -rf build
      meson build ${MESON_PARAMS}
      meson configure build
      ninja -v -C build ${NINJA_ARGS}
    environment:
      MESON_PARAMS: --prefix=/opt/libinput
  build_and_test: &build_and_test
    run:
      <<: *build_and_test_default
  build_no_libwacom: &build_no_libwacom
    run:
      <<: *build_and_test_default
      name: Build - No libwacom
      environment:
        MESON_PARAMS: -Dlibwacom=false
  build_no_debug_gui: &build_no_debug_gui
    run:
      <<: *build_and_test_default
      name: Build - No debug-gui
      environment:
        MESON_PARAMS: -Ddebug-gui=false
  build_no_tests: &build_no_tests
    run:
      <<: *build_and_test_default
      name: Build - No tests
      environment:
        MESON_PARAMS: -Dtests=false
  build_no_docs: &build_no_docs
    run:
      <<: *build_and_test_default
      name: Build - No docs
      environment:
        MESON_PARAMS: -Ddocumentation=false
  build_dist: &build_dist
    run:
      <<: *build_and_test_default
      name: Build - ninja dist
      environment:
        NINJA_ARGS: dist
  ninja_scan_build: &ninja_scan_build
    run:
      <<: *build_and_test_default
      name: Ninja scan-build
      environment:
        NINJA_ARGS: scan-build
  install: &install
    run:
      name: Installing
      command: ninja -v -C build install
  export_logs: &export_logs
    store_artifacts:
      path: ~/libinput/build/meson-logs

fedora_install: &fedora_install
  run:
    name: Install prerequisites
    command: |
      dnf upgrade -y libsolv
      dnf install -y git gcc gcc-c++ meson check-devel libudev-devel libevdev-devel doxygen graphviz valgrind binutils libwacom-devel cairo-devel gtk3-devel glib2-devel mtdev-devel

fedora_build_all: &fedora_build_all
  <<: *default_settings
  steps:
    - *fedora_install
    - checkout
    - *build_and_test
    - *install
    - *export_logs
    - *build_no_libwacom
    - *build_no_debug_gui
    - *build_no_tests
    - *build_no_docs
    - *build_dist

ubuntu_install: &ubuntu_install
  run:
    name: Install prerequisites
    command: |
      apt-get update
      apt-get install -y software-properties-common
      add-apt-repository universe
      apt-get update
      apt-get install -y git gcc g++ meson check libudev-dev libevdev-dev doxygen graphviz valgrind binutils libwacom-dev libcairo2-dev libgtk-3-dev libglib2.0-dev libmtdev-dev

ubuntu_build_all: &ubuntu_build_all
  <<: *default_settings
  steps:
    - *ubuntu_install
    - checkout
    - *build_and_test
    - *install
    - *export_logs
    - *build_no_libwacom
    - *build_no_debug_gui
    - *build_no_tests
    - *build_no_docs
    - *build_dist

scan_build_run: &scan_build_run
  <<: *default_settings
  steps:
    - *fedora_install
    - run:
        name: Install clang and find
        command: dnf install -y clang-analyzer findutils
    - checkout
    - *ninja_scan_build
    - *export_logs
    - run:
        name: Check scan-build results
        command: test ! -d ~/libinput/build/meson-logs/scanbuild || test $(find ~/libinput/build/meson-logs/scanbuild -maxdepth 0 ! -empty -exec echo "not empty" \; | wc -l) -eq 0 || (echo "Check scan-build results" && false)

version: 2
jobs:
  fedora_latest:
    <<: *fedora_build_all
    docker:
      - image: fedora:latest
  ubuntu_17_10:
    <<: *ubuntu_build_all
    docker:
      - image: ubuntu:artful
  scan_build:
    <<: *scan_build_run
    docker:
      - image: fedora:latest

workflows:
  version: 2
  compile:
    jobs:
      - fedora_latest
      - scan_build
      - ubuntu_17_10