summaryrefslogtreecommitdiffstats
path: root/.travis.yml
blob: 0f1c6a4a42f9e0bd3a31965b71ebcb754daa6303 (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
language: c++

matrix:
  include:
    - os: linux
      dist: xenial
      sudo: required
      compiler: gcc
    - os: osx
      compiler: clang

git:
  depth: 1

services:
  # Virtual X is needed for analyzer waveform tests
  - xvfb

addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
    packages:
      - libavformat-dev
      - libchromaprint-dev
      - libfaad-dev
      - libflac-dev
      - libid3tag0-dev
      - liblilv-dev
      - libmad0-dev
      - libmodplug-dev
      - libmp3lame-dev
      - libmp4v2-dev
      - libopus-dev
      - libopusfile-dev
      - libportmidi-dev
      - libprotobuf-dev
      - libqt5opengl5-dev
      - libqt5sql5-sqlite
      - libqt5svg5-dev
      - libqt5x11extras5-dev
      - librubberband-dev
      - libshout3-dev
      - libsndfile1-dev
      - libsoundtouch-dev
      - libsqlite3-dev
      - libtag1-dev
      - libupower-glib-dev
      - libusb-1.0-0-dev
      - libwavpack-dev
      - portaudio19-dev
      - protobuf-compiler
      - qt5-default
      - qtscript5-dev
      - qt5keychain-dev
      - scons
  homebrew:
    update: true
    packages:
      - chromaprint
      - faad2
      - ffmpeg
      - flac
      - lame
      - libsndfile
      - libogg
      - libvorbis
      - libshout
      - libmodplug
      - libid3tag
      - libmad
      - lilv
      - mp4v2
      - opusfile
      - portaudio
      - portmidi
      - protobuf
      - qt5
      - rubberband
      - scons
      - sound-touch
      - taglib
      - wavpack

install:
  # Build flags common to OS X and Linux.
  # Parallel builds are important for avoiding OSX build timeouts.
  # We turn off verbose output to avoid going over the 4MB output limit.
  # TODO(2019-07-21): Add "ffmpeg=1" if FFmpeg 4.x becomes available in Ubuntu
  - export COMMON_FLAGS="-j4 test=1 mad=1 faad=1 opus=1 modplug=1 wv=1 hss1394=0 virtualize=0 debug_assertions_fatal=1 verbose=0"

  # Ubuntu Xenial build prerequisites
  - if [ "$TRAVIS_OS_NAME" = "linux" ]; then export EXTRA_FLAGS="localecompare=1"; fi

  # Define QTDIR.
  - if [ "$TRAVIS_OS_NAME" = "osx" ]; then export QTDIR=$(find /usr/local/Cellar/qt -d 1 | tail -n 1); fi

  # Workaround for bug in libopus's opus.h including <opus_multistream.h>
  # instead of <opus/opus_multistream.h>.
  - if [ "$TRAVIS_OS_NAME" = "osx" ]; then export CXXFLAGS="-isystem /usr/local/include/opus"; fi
  - if [ "$TRAVIS_OS_NAME" = "osx" ]; then export CFLAGS="-isystem /usr/local/include/opus"; fi

  # NOTE(rryan): 2016-11-15 we are experiencing Travis timeouts for the OSX
  # build.  Turning off optimizations to see if that speeds up compile times.
  # TODO(rryan): localecompare doesn't work on Travis with qt5 for some reason.
  # TODO(2019-07-21): Move "ffmpeg=1" into COMMON_FLAGS if FFmpeg 4.x becomes available in Ubuntu
  - if [ "$TRAVIS_OS_NAME" = "osx" ]; then export EXTRA_FLAGS="ffmpeg=1 optimize=none asan=0 localecompare=0"; fi

  - scons $COMMON_FLAGS $EXTRA_FLAGS

before_script:
  # Virtual X (Xvfb) is needed for analyzer waveform tests
  - if [ "$TRAVIS_OS_NAME" = "linux" ]; then export DISPLAY=:99.0; fi

script:
  # NOTE(sblaisot): 2018-01-02 removing gdb wrapper on linux due to a bug in
  # return code in order to avoid having a successful build when a test fail.
  # https://bugs.launchpad.net/mixxx/+bug/1699689
  - if [ "$TRAVIS_OS_NAME" = "linux" ]; then ./mixxx-test; fi
  # lldb doesn't provide an easy way to exit 1 on error:
  # https://bugs.llvm.org/show_bug.cgi?id=27326
  - if [ "$TRAVIS_OS_NAME" = "osx" ]; then lldb ./mixxx-test --batch -o run -o quit -k 'thread backtrace all' -k "script import os; os._exit(1)"; fi

notifications:
  webhooks:
    - https://mixxx.zulipchat.com/api/v1/external/travis?stream=travis&topic=build-status&api_key=$ZULIP_API_KEY