# Enable build config validation (opt-in) version: ~> 1.0 # Default build environment os: linux dist: bionic # Default programming language language: cpp # 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. env: global: # For SCons builds - SCONSFLAGS="battery=1 bulk=1 debug_assertions_fatal=1 hid=1 hss1394=0 lilv=1 opus=1 qtkeychain=1 shoutcast=1 test=1 verbose=0 vinylcontrol=1 virtualize=0" # For CMake builds # TODO: Set -DDEBUG_ASSERTIONS_FATAL=OFF before deploying CI builds as releases!!! - CMAKEFLAGS="-DCMAKE_BUILD_TYPE=Release -DBATTERY=ON -DBROADCAST=ON -DBULK=ON -DDEBUG_ASSERTIONS_FATAL=ON -DHID=ON -DLILV=ON -DOPUS=ON -DQTKEYCHAIN=ON -DVINYLCONTROL=ON" - GTEST_COLOR=1 - CTEST_OUTPUT_ON_FAILURE=1 # Render analyzer waveform tests to an offscreen buffer - QT_QPA_PLATFORM=offscreen # DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY_PASSWORD for deploys. - secure: aS40s8gx1mM01oRj2pskFqR+rBID1nnTY7hwSqkT1bgJT+JF0tMZt/SkMjR08bp+3soNbBtqJgZKAhQ6Tts2DtkWQGbUiXgU5QpowUcecTxge/jqxZeWdJWThpB+qWs70Fm0QhzZXIyBPM8EGljWbLum5ncR7AUBEasRboNZ0P8= jobs: include: - name: pre-commit if: type != pull_request language: python python: 3.7 # There are too many files in the repo that have formatting issues. We'll # disable these checks for now when pushing directly (but still run these # on Pull Requests!). env: SKIP=end-of-file-fixer,trailing-whitespace,clang-format,eslint cache: directories: - $HOME/.cache/pre-commit before_install: - pip install pre-commit==2.5.1 script: - pre-commit run --all-files addons: [] - name: pre-commit-pr if: type == pull_request language: python python: 3.7 cache: directories: - $HOME/.cache/pre-commit before_install: - pip install pre-commit==2.5.1 script: # HEAD is the not yet integrated PR merge commit +refs/pull/xxxx/merge # HEAD^1 is the PR target branch and HEAD^2 is the HEAD of the source branch - pre-commit run --from-ref HEAD^1 --to-ref HEAD --show-diff-on-failure addons: [] - name: Ubuntu/gcc/SCons build compiler: gcc # Ubuntu Bionic build prerequisites before_install: - sudo apt install -y scons install: # TODO for Ubuntu Focal: faad=0 ffmpeg=1 - scons -j "$(nproc)" faad=1 ffmpeg=0 localecompare=1 mad=1 modplug=1 wv=1 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 - ./mixxx-test - name: Ubuntu/gcc/CMake build compiler: gcc cache: ccache # Ubuntu Bionic build prerequisites # TODO for Ubuntu Focal: Replace "-DFAAD=ON" with "-DFFMPEG=ON" env: CMAKEFLAGS_EXTRA="-DENGINEPRIME=ON -DFAAD=ON -DLOCALECOMPARE=ON -DMAD=ON -DMODPLUG=ON -DWAVPACK=ON -DWARNINGS_FATAL=ON" before_install: - export CMAKE_BUILD_PARALLEL_LEVEL="$(nproc)" - export CTEST_PARALLEL_LEVEL="$(nproc)" - export PATH="$HOME/.local/bin:$PATH" - pip install --user cmake - cmake --version - ccache -s install: - mkdir cmake_build - cd cmake_build - cmake -L $CMAKEFLAGS $CMAKEFLAGS_EXTRA .. - cmake --build . - cpack -G DEB script: # Run tests and benchmarks - ctest - cmake --build . --target benchmark - name: OSX/clang/SCons build os: osx # The XCode version should match that on the build server! osx_image: xcode9.4 compiler: clang cache: directories: - $HOME/Library/Caches/Homebrew - /usr/local/Homebrew addons: homebrew: update: true packages: - chromaprint - flac - lame - libsndfile - libogg - libvorbis - libshout - libid3tag - libmad - lilv - opusfile - portaudio - portmidi - protobuf - qt5 - qtkeychain - rubberband - sound-touch - taglib # Workaround for bug in libopus's opus.h including # instead of . env: >- CFLAGS="-isystem /usr/local/include/opus" CXXFLAGS="-isystem /usr/local/include/opus" before_install: - brew install scons - export QTDIR="$(find /usr/local/Cellar/qt -d 1 | tail -n 1)" - echo "QTDIR=$QTDIR" install: # We are hardcoding 4 threads here since "$(sysctl -n hw.ncpu)" only # returns 2 and makes the travis job run into a timeout: # https://docs.travis-ci.com/user/reference/overview/#virtualization-environments - scons -j4 coreaudio=1 script: # lldb doesn't provide an easy way to exit 1 on error: # https://bugs.llvm.org/show_bug.cgi?id=27326 - lldb ./mixxx-test --batch -o run -o quit -k 'thread backtrace all' -k "script import os; os._exit(1)" before_cache: # Avoid indefinite cache growth - brew cleanup # Cache only .git files under "/usr/local/Homebrew" so "brew update" # does not take 5min every build # Source: https://discourse.brew.sh/t/best-practice-for-homebrew-on-travis-brew-update-is-5min-to-build-time/5215/12 - find /usr/local/Homebrew \! -regex ".+\.git.+" -delete - name: OSX/clang/CMake build os: osx # The XCode version should match that on the build server! osx_image: xcode9.4 compiler: clang cache: ccache: true directories: - $HOME/Library/Caches/Homebrew - /usr/local/Homebrew # Workaround for bug in libopus's opus.h including # instead of . # Virtual X (Xvfb) is needed for analyzer waveform tests addons: homebrew: update: true packages: - ccache env: >- MIXXX_ENVPATH="${HOME}/buildenv" CMAKEFLAGS_EXTRA="-DCOREAUDIO=ON -DHSS1394=ON" PATH="/usr/local/opt/ccache/bin:$PATH" CMAKE_BUILD_PARALLEL_LEVEL=4 CTEST_PARALLEL_LEVEL=1 before_install: # Print some information about CMake and ccache - cmake --version - ccache -s # Download and prepare our build environment - mkdir "${MIXXX_ENVPATH}" - read -r MIXXX_ENVNAME < build/osx/golden_environment - curl "https://downloads.mixxx.org/builds/buildserver/2.3.x-macosx/${MIXXX_ENVNAME}.tar.gz" | tar xzf - --strip 1 -C "${MIXXX_ENVPATH}" # FIXME: This fixes some wrong hardcoded paths inside pkg-config files of the build environment (e.g. in "lib/pkgconfig/taglib.pc") # This will only work if neither MIXXX_ENVNAME nor MIXXX_ENVPATH contain special regex characters! - find "${MIXXX_ENVPATH}" -name "*.pc" -or -path "*/bin/taglib-config" -exec sed -i".orig" -e "s|/Users/mixxx/bs-2.3-mac/amd64/environment/${MIXXX_ENVNAME}|${MIXXX_ENVPATH}|g" {} \; - export QT_DIR="$(find "${MIXXX_ENVPATH}" -type d -path "*/cmake/Qt5")" - export QT_QPA_PLATFORM_PLUGIN_PATH="$(find "${MIXXX_ENVPATH}" -type d -path "*/plugins")" install: - mkdir cmake_build - cd cmake_build - cmake -L $CMAKEFLAGS $CMAKEFLAGS_EXTRA -DCMAKE_PREFIX_PATH=${MIXXX_ENVPATH} -DQt5_DIR=${QT_DIR} .. - cmake --build . - cpack -G DragNDrop script: # Run tests and benchmarks - ctest - cmake --build . --target benchmark before_cache: # Avoid indefinite cache growth - brew cleanup # Cache only .git files under "/usr/local/Homebrew" so "brew update" # does not take 5min every build # Source: https://discourse.brew.sh/t/best-practice-for-homebrew-on-travis-brew-update-is-5min-to-build-time/5215/12 - find /usr/local/Homebrew \! -regex ".+\.git.+" -delete git: depth: 1 # Common Addons addons: apt: sources: - ubuntu-toolchain-r-test packages: - libavformat-dev - libchromaprint-dev - libebur128-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 - qtdeclarative5-dev - qtscript5-dev - qt5keychain-dev notifications: webhooks: - https://mixxx.zulipchat.com/api/v1/external/travis?stream=travis&topic=build-status&api_key=$ZULIP_API_KEY deploy: provider: script skip_cleanup: true # Deploy is executed from cmake_build. script: ../build/travis/deploy.sh on: all_branches: true condition: "\"${TRAVIS_JOB_NAME}\" =~ CMake"