summaryrefslogtreecommitdiffstats
path: root/.travis.yml
blob: b54c464aa0dc0df57e84bfac11e3a176a462d6a6 (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
145
146
147
148
os: linux
dist: bionic
language: c
env:
  global:
    # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created via
    # the "travis encrypt" command using the project repo's public key
    - secure: "Uodrn3x36plX2yk4+c7eimCuv7j6p6n1XCNbNEYxibRX77730eQMCVS0BvM40OgD7m5K9s2hIQaMV7EMj3qKuRmemULDVJVTgNd1fbx6t4BhYh+Hrf6FhsNcm9nFxvQQrdJAVSOwIAlrUilVFotDRt9qKqLwwZiBKIs5gBPcHQY="

addons:
  coverity_scan:
    project:
      name: "DaveDavenport/rofi"
      description: "Build submitted via Travis CI"
    notification_email: qball@gmpclient.org
    # TODO: What do these actually do?
    build_command_prepend: "meson setup build"
    build_command: "ninja -C build"
    branch_pattern: coverity_scan
  apt:
    packages:
      - discount
      - doxygen
      - fluxbox
      - gdb
      - graphviz
      - lcov
      - libpango1.0-dev
      - libstartup-notification0-dev
      - libxcb-ewmh-dev
      - libxcb-icccm4-dev
      - libxcb-randr0-dev
      - libxcb-util0-dev
      - libxcb-xinerama0-dev
      - libxcb-xkb-dev
      - libxcb-xrm-dev
      - libxkbcommon-dev
      - libxkbcommon-dev
      - libxkbcommon-x11-dev
      - ninja-build
      #- markdown
      - python3-pip
      - python3-setuptools
      - python3-wheel
      - texi2html
      - texinfo
      - xdotool
      - xfonts-base
      - xterm
      - xutils-dev

# TODO: Potentially switch to coverxygen (active project with the same goal) at
# some point in the future?
before_install:
  # doxy-coverage is not packaged in Ubuntu 18.04 (Bionic), clone the helper
  # scripts manually:
  - git clone https://github.com/alobbs/doxy-coverage
  # Ubuntu 18.04 ships an outdated version of check. Install a more recent
  # version instead:
  - curl -L https://github.com/libcheck/check/releases/download/0.14.0/check-0.14.0.tar.gz | tar xzf -
  - cd check-0.14.0
  - ./configure
  - make
  # Disable tests for non-"debug" runs:
  #- make check
  - sudo make install
  - sudo ldconfig
  - cd ..


# YAML anchor, ignored by Travis CI (albeit present in the JSON render):
.autotools: &autotools
  before_script: &autotools_before_script
    # Generate the configure script:
    - autoreconf --install
    # Make the build directory:
    - mkdir build
    # Change into the build directory:
    - cd build
    # Configure the build directory
    - ../configure
  # TODO: Fix X11 tests (and check whether or not changing the user's resource
  #       limit is still required for the X11 tests).
  script: &autotools_script # Build the project:
    - make
    # Run tests:
    - make distcheck
    # TODO: Use make to create the doxygen log!
    # Code coverage:
    - make doxy 2>&1 > doxygen.log
    - test $(grep -c warning doxygen.log) -eq 0
    - ../doxy-coverage/doxy-coverage.py doc/html/xml/

# YAML anchor, ignored by Travis CI (albeit present in the JSON render):
.meson: &meson
  install: &meson_install
    # Ubuntu's meson version is outdated. Use pip to install a more recent
    # release:
    - pip3 install --user meson
    # ~/.local/bin is not a part of $PATH by default. Update $PATH to include it:
    - PATH="$PATH:$HOME/.local/bin"
  before_script:
    &meson_before_script # Configure the build directory with meson:
    - meson setup build
  # TODO: Fix X11 tests (and check whether or not changing the user's resource
  #       limit is still required for the X11 tests).
  script: &meson_script # Build the project:
    - ninja -C build
    # Run tests:
    - ninja -C build test
    #- ulimit -c unlimited
    #- ninja -C build test-x
    - ninja -C build doc/html 2>&1 > doxygen.log
    - test $(grep -c warning doxygen.log) -eq 0
    - ../doxy-coverage/doxy-coverage.py build/doc/html/xml/

after_success:
  - bash <(curl -s https://codecov.io/bash)

# Travis CI doesn't propagate the compiler key to individual jobs. Define
# a _single_ compiler for each job, as a list will only result in the first
# compiler being used!

jobs:
  include:
    - name: "Autotools - Clang"
      compiler: clang
      # Merge keys from the .autotools map:
      <<: *autotools
    - name: "Autotools - GCC"
      compiler: gcc
      # Merge keys from the .autotools map:
      <<: *autotools
    - name: "Meson - Clang"
      compiler: clang
      # Merge keys from the .meson map:
      <<: *meson
    - name: "Meson - GCC"
      compiler: gcc
      # Merge keys from the .meson map:
      <<: *meson

notifications:
  webhooks:
    urls:
      - secure: "AqDM5SkWJPSBeCiyGdXzHYLnFCML/vKxWW/0wE00ocX+97Fa5ixeU7apMJ0OMZ0ZQVXG96xVtlJ513ZSpnRYHx6FF+Ivvw5pYeZjKHqtxThEhOueW1YynYWMX7HJrA4P19ollqRLrtsJqG6x7BhVEnIyhyu9eXtgj6hiI70F0SE="
    on_success: change
# vim: et sw=2 ts=2