diff --git a/.travis.yml b/.travis.yml index eb293a20..e137e58e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,133 +1,143 @@ language: cpp +os: linux +dist: bionic jobs: - - os: linux + include: + - name: "clang-tidy checks" stage: "Tests" - name: "clang-tidy checks" - dist: bionic addons: apt: packages: - clang-tidy - libsndfile-dev - before_install: - - true - install: - - true - script: - - scripts/run_clang_tidy.sh - after_success: - - true - - os: linux - name: "Linux amd64 tests" + install: skip + script: scripts/run_clang_tidy.sh + + - name: "Linux amd64 tests" arch: amd64 - dist: bionic - env: - - BUILD_TYPE="test" - - INSTALL_DIR="sfizz-${TRAVIS_BRANCH}-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}" addons: apt: - sources: - - sourceline: 'ppa:ubuntu-toolchain-r/test' - after_success: - - true - - os: linux - name: "Linux arm64 tests" + packages: + - libasound2-dev + - libjack-jackd2-dev + - libsndfile1-dev + install: .travis/download_cmake.sh + script: .travis/script_test.sh + + - name: "Linux arm64 tests" arch: amd64 - dist: bionic - env: - - BUILD_TYPE="test" - - INSTALL_DIR="sfizz-${TRAVIS_BRANCH}-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}" addons: apt: - sources: - - sourceline: 'ppa:ubuntu-toolchain-r/test' - after_success: - - true - - os: linux + packages: + - libasound2-dev + - libjack-jackd2-dev + - libsndfile1-dev + install: .travis/download_cmake.sh + script: .travis/script_test.sh + + - name: "Windows mingw32" stage: "Build" - name: "Windows mingw32" env: - CROSS_COMPILE=mingw32 - CONTAINER=cross - INSTALL_DIR="sfizz-${TRAVIS_BRANCH}-mingw32" - - os: linux - name: "Windows mingw64" + before_install: .travis/before_install_mingw.sh + install: .travis/install_mingw.sh + script: .travis/script_mingw.sh + after_success: .travis/prepare_tarball.sh + + - name: "Windows mingw64" env: - CROSS_COMPILE=mingw64 - CONTAINER=cross - INSTALL_DIR="sfizz-${TRAVIS_BRANCH}-mingw64" - - os: linux - name: "Linux amd64 library" + before_install: .travis/before_install_mingw.sh + install: .travis/install_mingw.sh + script: .travis/script_mingw.sh + after_success: .travis/prepare_tarball.sh + + - name: "Linux amd64 library" arch: amd64 - dist: bionic env: - - INSTALL_DIR="sfizz-${TRAVIS_BRANCH}-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}" + - INSTALL_DIR="sfizz-${TRAVIS_BRANCH}-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}" addons: apt: - sources: - - sourceline: 'ppa:ubuntu-toolchain-r/test' - - os: linux - name: "Linux arm64 library" + packages: + - libasound2-dev + - libjack-jackd2-dev + - libsndfile1-dev + install: .travis/download_cmake.sh + script: .travis/script_library.sh + after_success: .travis/prepare_tarball.sh + + - name: "Linux arm64 library" arch: arm64 - dist: bionic env: - - INSTALL_DIR="sfizz-${TRAVIS_BRANCH}-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}" + - INSTALL_DIR="sfizz-${TRAVIS_BRANCH}-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}" addons: apt: - sources: - - sourceline: 'ppa:ubuntu-toolchain-r/test' - - os: linux - name: "Linux arm64 static LV2" + packages: + - libasound2-dev + - libjack-jackd2-dev + - libsndfile1-dev + install: .travis/download_cmake.sh + script: .travis/script_library.sh + after_success: .travis/prepare_tarball.sh + + - name: "Linux arm64 static LV2" arch: arm64 - dist: bionic env: - - BUILD_TYPE=lv2 - - INSTALL_DIR="sfizz-lv2-${TRAVIS_BRANCH}-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}" + - INSTALL_DIR="sfizz-lv2-${TRAVIS_BRANCH}-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}" addons: apt: - sources: - - sourceline: 'ppa:ubuntu-toolchain-r/test' - - os: linux - name: "Linux amd64 static LV2" - dist: bionic + packages: + - libasound2-dev + - libjack-jackd2-dev + - libsndfile1-dev + install: + - .travis/download_cmake.sh + - .travis/download_static_libs.sh + script: .travis/script_lv2.sh + after_success: .travis/prepare_tarball.sh + + - name: "Linux amd64 static LV2" env: - - BUILD_TYPE=lv2 - - INSTALL_DIR="sfizz-lv2-${TRAVIS_BRANCH}-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}" + - INSTALL_DIR="sfizz-lv2-${TRAVIS_BRANCH}-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}" addons: apt: - sources: - - sourceline: 'ppa:ubuntu-toolchain-r/test' - - os: osx - name: "macOS" + packages: + - libasound2-dev + - libjack-jackd2-dev + - libsndfile1-dev + install: + - .travis/download_cmake.sh + - .travis/download_static_libs.sh + script: .travis/script_lv2.sh + after_success: .travis/prepare_tarball.sh + + - name: "macOS" + os: osx osx_image: xcode10.1 env: - INSTALL_DIR="sfizz-${TRAVIS_BRANCH}-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}" + install: .travis/install_osx.sh + script: .travis/script_osx.sh + after_success: .travis/prepare_tarball.sh - - os: linux - stage: "Deploy" + - stage: "Deploy" name: "Source packaging" + if: (tag IS present) AND (branch = master) env: - - BUILD_TYPE=source - INSTALL_DIR="sfizz-${TRAVIS_BRANCH}-src" addons: apt: packages: - python-pip - before_install: - - true - install: - - sudo pip install git-archive-all - script: - - git-archive-all --prefix="sfizz-${TRAVIS_BRANCH}/" -9 "${INSTALL_DIR}.tar.gz" - after_failure: - - true - after_success: - - true + install: sudo pip install git-archive-all + script: git-archive-all --prefix="sfizz-${TRAVIS_BRANCH}/" -9 "${INSTALL_DIR}.tar.gz" - - os: linux - name: "Generate documentation" - dist: bionic + - name: "Generate documentation" if: (tag IS present) AND (branch = master) addons: apt: @@ -135,43 +145,17 @@ jobs: - doxygen - cmake - libsndfile-dev - before_install: - - true - install: - - true - script: - - .travis/update_dox.sh - after_failure: - - true - after_success: - - true - - os: linux - name: "Discord Webhook" - dist: bionic - before_install: - - true - install: - - true - script: - - true - after_success: - - bash ${TRAVIS_BUILD_DIR}/.travis/discord_webhook.sh success + install: skip + script: .travis/update_dox.sh -before_install: -- bash ${TRAVIS_BUILD_DIR}/.travis/before_install.sh - -install: -- bash ${TRAVIS_BUILD_DIR}/.travis/install.sh - -script: -- bash ${TRAVIS_BUILD_DIR}/.travis/script.sh + - name: "Discord Webhook" + install: skip + script: bash ${TRAVIS_BUILD_DIR}/.travis/discord_webhook.sh success +# Signal discord on failure after_failure: - bash ${TRAVIS_BUILD_DIR}/.travis/discord_webhook.sh failure -after_success: -- bash ${TRAVIS_BUILD_DIR}/.travis/after_success.sh - deploy: provider: releases skip_cleanup: true diff --git a/.travis/before_install_mingw.sh b/.travis/before_install_mingw.sh new file mode 100755 index 00000000..7431f4e9 --- /dev/null +++ b/.travis/before_install_mingw.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +set -ex +. .travis/mingw_container.sh + +buildenv bash -c "echo Hello from container" # ensure to start the container +docker cp "$container":/etc/pacman.conf pacman.conf +cat >>pacman.conf < ${TRAVIS_BUILD_DIR}/docker-container-id - fi -} diff --git a/.travis/install.sh b/.travis/install.sh deleted file mode 100755 index 8b48d209..00000000 --- a/.travis/install.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -set -ex -. .travis/environment.sh - -if [[ ${CROSS_COMPILE} == "mingw32" || ${CROSS_COMPILE} == "mingw64" ]]; then - buildenv pacman -Sqy --noconfirm - buildenv pacman -Sq --noconfirm base-devel wget mingw-w64-cmake mingw-w64-gcc mingw-w64-pkg-config mingw-w64-libsndfile - buildenv i686-w64-mingw32-gcc -v && buildenv i686-w64-mingw32-g++ -v && buildenv i686-w64-mingw32-cmake --version -elif [[ ${BUILD_TYPE} == "lv2" ]]; then - wget -q https://github.com/sfztools/sndfile-libraries/releases/download/${TRAVIS_OS_NAME}/sndfile-libraries-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}.tar.gz - tar xf sndfile-libraries-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}.tar.gz - sudo cp -R sndfile-libraries-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}/usr / -elif [[ ${TRAVIS_OS_NAME} == "linux" ]]; then - sudo apt-get install libasound2-dev libjack-jackd2-dev libsndfile1-dev - gcc -v && g++ -v && cmake --version && /usr/local/bin/cmake --version && $SHELL --version -fi diff --git a/.travis/install_mingw.sh b/.travis/install_mingw.sh new file mode 100755 index 00000000..593c7de8 --- /dev/null +++ b/.travis/install_mingw.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -ex +. .travis/mingw_container.sh + +buildenv pacman -Sqy --noconfirm +buildenv pacman -Sq --noconfirm base-devel wget mingw-w64-cmake mingw-w64-gcc mingw-w64-pkg-config mingw-w64-libsndfile +buildenv i686-w64-mingw32-gcc -v && buildenv i686-w64-mingw32-g++ -v && buildenv i686-w64-mingw32-cmake --version diff --git a/.travis/install_osx.sh b/.travis/install_osx.sh new file mode 100755 index 00000000..c04bc695 --- /dev/null +++ b/.travis/install_osx.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -ex + +sudo ln -s /usr/local /opt/local +brew update +brew upgrade cmake +brew install jack diff --git a/.travis/mingw_container.sh b/.travis/mingw_container.sh new file mode 100755 index 00000000..5629657f --- /dev/null +++ b/.travis/mingw_container.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +buildenv() { + setup_container archlinux + docker exec -w "$(pwd)" -i -t "$container" "$@" +} + +setup_container() { + if [ -f ${TRAVIS_BUILD_DIR}/docker-container-id ]; then + container=$(cat ${TRAVIS_BUILD_DIR}/docker-container-id) + else + container=$(docker run -d -i -t -v /home:/home "$1" /bin/bash) + echo "$container" > ${TRAVIS_BUILD_DIR}/docker-container-id + fi +} diff --git a/.travis/after_success.sh b/.travis/prepare_tarball.sh similarity index 61% rename from .travis/after_success.sh rename to .travis/prepare_tarball.sh index a2afdeba..9e7e79ce 100755 --- a/.travis/after_success.sh +++ b/.travis/prepare_tarball.sh @@ -1,7 +1,12 @@ #!/bin/bash set -ex -. .travis/environment.sh +. .travis/mingw_container.sh + +# Do not prepare a tarball without a tag +if [[ ${TRAVIS_TAG} == "" ]]; then + exit 0 +fi cd build buildenv make DESTDIR=${PWD}/${INSTALL_DIR} install diff --git a/.travis/script.sh b/.travis/script.sh deleted file mode 100755 index 654344de..00000000 --- a/.travis/script.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -set -ex -. .travis/environment.sh - -mkdir -p build/${INSTALL_DIR} && cd build - -if [[ ${CROSS_COMPILE} == "mingw32" ]]; then - buildenv i686-w64-mingw32-cmake -DCMAKE_BUILD_TYPE=Release -DSFIZZ_JACK=OFF -DSFIZZ_STATIC_LIBSNDFILE=ON .. - buildenv make -j -elif [[ ${CROSS_COMPILE} == "mingw64" ]]; then - buildenv x86_64-w64-mingw32-cmake -DCMAKE_BUILD_TYPE=Release -DSFIZZ_JACK=OFF -DSFIZZ_STATIC_LIBSNDFILE=ON .. - buildenv make -j -elif [[ ${BUILD_TYPE} == "lv2" ]]; then - buildenv cmake -DCMAKE_BUILD_TYPE=Release -DSFIZZ_JACK=OFF -DSFIZZ_TESTS=OFF -DSFIZZ_SHARED=OFF -DSFIZZ_STATIC_LIBSNDFILE=ON .. - buildenv make -j$(nproc) -elif [[ ${BUILD_TYPE} == "test" ]]; then - buildenv cmake -DCMAKE_BUILD_TYPE=Release -DSFIZZ_JACK=OFF -DSFIZZ_TESTS=ON -DSFIZZ_SHARED=OFF -DSFIZZ_STATIC_LIBSNDFILE=OFF -DSFIZZ_LV2=OFF .. - buildenv make -j$(nproc) sfizz_tests - buildenv tests/sfizz_tests -elif [[ ${TRAVIS_OS_NAME} == "linux" ]]; then - buildenv cmake -DCMAKE_BUILD_TYPE=Release -DSFIZZ_LV2=OFF -DSFIZZ_TESTS=OFF .. - buildenv make -j$(nproc) -elif [[ ${TRAVIS_OS_NAME} == "osx" ]]; then - buildenv cmake -DCMAKE_BUILD_TYPE=Release -DSFIZZ_TESTS=OFF .. - buildenv make -j$(sysctl -n hw.ncpu) -# Xcode not currently supported, see https://gitlab.kitware.com/cmake/cmake/issues/18088 -# xcodebuild -project sfizz.xcodeproj -alltargets -configuration Debug build -fi diff --git a/.travis/script_library.sh b/.travis/script_library.sh new file mode 100755 index 00000000..07008903 --- /dev/null +++ b/.travis/script_library.sh @@ -0,0 +1,6 @@ +#!/bin/bash +set -ex + +mkdir -p build/${INSTALL_DIR} && cd build +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_BUILD_TYPE=Release -DSFIZZ_LV2=OFF -DSFIZZ_TESTS=OFF .. +make -j$(nproc) diff --git a/.travis/script_lv2.sh b/.travis/script_lv2.sh new file mode 100755 index 00000000..d121ea1f --- /dev/null +++ b/.travis/script_lv2.sh @@ -0,0 +1,6 @@ +#!/bin/bash +set -ex + +mkdir -p build/${INSTALL_DIR} && cd build +cmake -DCMAKE_BUILD_TYPE=Release -DSFIZZ_JACK=OFF -DSFIZZ_TESTS=OFF -DSFIZZ_SHARED=OFF -DSFIZZ_STATIC_LIBSNDFILE=ON .. +make -j$(nproc) diff --git a/.travis/script_mingw.sh b/.travis/script_mingw.sh new file mode 100755 index 00000000..f8a0e833 --- /dev/null +++ b/.travis/script_mingw.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +set -ex +. .travis/mingw_container.sh + +mkdir -p build/${INSTALL_DIR} && cd build +if [[ ${CROSS_COMPILE} == "mingw32" ]]; then + buildenv i686-w64-mingw32-cmake -DCMAKE_BUILD_TYPE=Release -DSFIZZ_JACK=OFF -DSFIZZ_STATIC_LIBSNDFILE=ON .. + buildenv make -j +elif [[ ${CROSS_COMPILE} == "mingw64" ]]; then + buildenv x86_64-w64-mingw32-cmake -DCMAKE_BUILD_TYPE=Release -DSFIZZ_JACK=OFF -DSFIZZ_STATIC_LIBSNDFILE=ON .. + buildenv make -j +fi diff --git a/.travis/script_osx.sh b/.travis/script_osx.sh new file mode 100755 index 00000000..39a19577 --- /dev/null +++ b/.travis/script_osx.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -ex + +mkdir -p build/${INSTALL_DIR} && cd build +cmake -DCMAKE_BUILD_TYPE=Release -DSFIZZ_TESTS=OFF .. +make -j$(sysctl -n hw.ncpu) +# Xcode not currently supported, see https://gitlab.kitware.com/cmake/cmake/issues/18088 +# xcodebuild -project sfizz.xcodeproj -alltargets -configuration Debug build diff --git a/.travis/script_test.sh b/.travis/script_test.sh new file mode 100755 index 00000000..a3c90749 --- /dev/null +++ b/.travis/script_test.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -ex + +mkdir build && cd build +cmake -DCMAKE_BUILD_TYPE=Release -DSFIZZ_JACK=OFF -DSFIZZ_TESTS=ON -DSFIZZ_SHARED=OFF -DSFIZZ_STATIC_LIBSNDFILE=OFF -DSFIZZ_LV2=OFF .. +make -j$(nproc) sfizz_tests +tests/sfizz_tests