i3status/.travis.yml
Michael Stapelberg 23da59920c make pulseaudio an optional dependency, follow best practices
For my thoughts about optional dependencies, see
https://michael.stapelberg.ch/posts/2019-05-23-optional-dependencies/

This commit follows the best practices outlined in that article:

1. The travis config was modified to verify both code paths build and link/don’t
   link against pulseaudio.

2. If pulseaudio is missing, the build fails until packagers explicitly pass a
   --disable flag. In practice, I think the only situation when this flag should
   be set is in source-based linux distributions where users can express
   package-level compilation preferences (e.g. Gentoo USE flags).

3. The --version output now reflects the status of the optional dependency.

fixes #359
2019-07-29 21:07:40 +02:00

28 lines
1.1 KiB
YAML

sudo: required
dist: trusty
language: c
compiler:
- gcc
- clang
addons:
# See http://docs.travis-ci.com/user/apt/
apt:
packages:
- libconfuse-dev
- libyajl-dev
- libasound2-dev
- libpulse-dev
- libnl-genl-3-dev
- asciidoc
# xmlto pulls in a2x which we need for generating manpages from asciidoc.
- xmlto
- libcap2-bin
- clang-format-3.8
- libllvm3.5
script:
- clang-format-3.8 -i $(find . -name "*.[ch]" | tr '\n' ' ') && git diff --exit-code || (echo 'Code was not formatted using clang-format!'; false)
# TODO: re-enable sanitizers once issues are fixed
- autoreconf -fi && mkdir -p build && cd build && (../configure --disable-sanitizers || (cat config.log; false)) && make -j 8 V=1 && ldd ./i3status |& grep -q pulse || (echo "not linked against pulseaudio"; exit 1)
- make clean && (../configure --disable-sanitizers --disable-pulseaudio || (cat config.log; false)) && make -j 8 V=1 && ldd ./i3status |& grep -q pulse && (echo "linked against pulseaudio"; exit 1) || true
- make -j 8 check V=1 || (cat test-suite.log; false)