language: c group: edge os: linux dist: bionic before_script: - export -f travis_fold - export OS="$TRAVIS_OS_NAME" script: - "bash .ci.sh" addons: apt: packages: &core_build # This is all the bits we need to enable all options - libasound2-dev - libevdev-dev - libola-dev - libjack-jackd2-dev - liblua5.3-dev - python3-dev - libssl-dev - lintian packages: &core_build_gpp_latest - *core_build - gcc-8 - g++-8 packages: &core_build_clang_latest - *core_build - clang-6.0 packages: &core_build_windows - *core_build - mingw-w64 packages: &linters - python3 - python3-pip - lintian - codespell - shellcheck - cloc jobs: fast_finish: true include: - os: linux dist: bionic compiler: clang env: TASK='compile' addons: apt: packages: - *core_build_clang_latest - os: linux dist: bionic compiler: gcc env: TASK='compile' addons: apt: packages: - *core_build_gpp_latest - os: linux dist: bionic compiler: mingw32-gcc env: - TASK='windows' - CC='x86_64-w64-mingw32-gcc' addons: apt: packages: - *core_build_windows - os: linux dist: bionic compiler: clang env: TASK='sanitize' addons: apt: packages: - *core_build_clang_latest - os: osx osx_image: xcode10.2 compiler: clang env: - TASK='compile' - os: osx osx_image: xcode10.2 compiler: clang env: - TASK='sanitize' - os: linux dist: bionic env: TASK='codesmell' addons: apt: packages: - *linters - os: linux dist: bionic env: TASK='spellcheck' addons: apt: packages: - *linters allow_failures: - os: linux dist: bionic env: TASK='codesmell' - os: linux dist: bionic env: TASK='spellcheck' env: global: # No colours in terminal (to reduce log file size) - TERM=dumb # Parallel make build - MAKEFLAGS="-j 4" cache: apt: true before_install: # Travis clones with --branch, which omits tags. Since we use them for the version string at build time, fetch them - git pull --tags - printf "This is %s on %s\n" "$(git describe)" "$TRAVIS_OS_NAME" - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; fi # 'brew install' sometimes returns non-zero for some arcane reason. Executing 'true' resets the exit code and allows Travis to continue building... # Travis seems to have Python 2.7 installed by default, which for some reason prevents pkg-config from reading python3.pc - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install ola lua openssl jack python3; brew link --overwrite python; true; fi # OpenSSL is not a proper install due to some Apple bull, so provide additional locations via the environment... # Additionally, newer versions of this "recipe" seem to use the name 'openssl@1.1' instead of plain 'openssl' and there seems to be # no way to programmatically get the link and include paths. Genius! Hardcoding the new version for the time being... - export CFLAGS="$CFLAGS -I/usr/local/opt/openssl@1.1/include" - export LDFLAGS="$LDFLAGS -L/usr/local/opt/openssl@1.1/lib" #Use the latest clang if we're compiling with clang - if [ "$TRAVIS_OS_NAME" == "linux" -a "$CC" = "clang" ]; then export CC="clang-6.0"; export CXX="clang-6.0"; fi # Download libraries to link with for Windows - if [ "$TASK" == "windows" ]; then wget "https://downloads.sourceforge.net/project/luabinaries/5.3.5/Windows%20Libraries/Dynamic/lua-5.3.5_Win64_dllw6_lib.zip" -O lua53.zip; unzip lua53.zip lua53.dll; fi notifications: irc: channels: - "irc.hackint.org#midimonster" on_success: change # default: always on_failure: always # default: always nick: mm_ci use_notice: true deploy: provider: releases file_glob: true token: $GITHUB_TOKEN file: ./deployment/* skip_cleanup: true draft: true on: tags: true