X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=.travis.yml;h=769a35350ac42519bb2851669ecae58cf0e31177;hb=943db0f1c28ca6a7df6d18483f97166a03be9bf7;hp=a7f975ee1454c74d373d4ad4fc4f40aca1911c27;hpb=4bb5e24d234dbf239119524edae4e23f39de7ee4;p=openjpeg.git diff --git a/.travis.yml b/.travis.yml index a7f975ee..769a3535 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,29 +1,159 @@ -language: c -compiler: - - gcc - -before_install: - - cmake --version - - git clone --depth=1 --branch=master git://github.com/uclouvain/openjpeg-data.git data - - wget -qO - https://github.com/openpreserve/jpylyzer/archive/1.14.2.tar.gz | tar -xvz -# When OPJ_NONCOMMERCIAL=1, kakadu trial binaries are used for testing. Here's the copyright notice from kakadu: -# Copyright is owned by NewSouth Innovations Pty Limited, commercial arm of the UNSW Australia in Sydney. -# You are free to trial these executables and even to re-distribute them, -# so long as such use or re-distribution is accompanied with this copyright notice and is not for commercial gain. -# Note: Binaries can only be used for non-commercial purposes. - - if [ "${OPJ_NONCOMMERCIAL:-}" == "1" ]; then wget -q http://kakadusoftware.com/wp-content/uploads/2014/06/KDU77_Demo_Apps_for_Linux-x86-64_150710.zip; fi +language: cpp + +matrix: + include: +# OSX + - os: osx + compiler: clang + env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release OPJ_CI_INCLUDE_IF_DEPLOY=1 + +# Test code style + - os: linux + compiler: clang-3.8 + env: OPJ_CI_CC=clang-3.8 OPJ_CI_CXX=clang-3.8 OPJ_CI_CHECK_STYLE=1 OPJ_CI_SKIP_TESTS=1 + addons: + apt: + sources: + - llvm-toolchain-precise-3.8 + - ubuntu-toolchain-r-test + packages: + - clang-3.8 + - flip + +# Performance test with GCC + - os: linux + compiler: g++ + dist: precise + env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release OPJ_CI_INCLUDE_IF_DEPLOY=1 OPJ_CI_PERF_TESTS=1 + +# Test compilation with AVX2 + - os: linux + # "sudo: yes" and "dist: trusty" give us a worker with the AVX2 instruction set + sudo: yes + dist: trusty + compiler: clang-3.8 + env: OPJ_CI_CC=clang-3.8 OPJ_CI_CXX=clang-3.8 OPJ_CI_INSTRUCTION_SETS="-mavx2" OPJ_CI_BUILD_CONFIGURATION=Release + addons: + apt: + sources: + - llvm-toolchain-precise-3.8 + - ubuntu-toolchain-r-test + packages: + - clang-3.8 + +# Test multi-threading + - os: linux + compiler: g++ + dist: precise + env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release OPJ_NUM_THREADS=2 + +# Test 32-bit compilation + - os: linux + compiler: g++ + env: OPJ_CI_ARCH=i386 OPJ_CI_BUILD_CONFIGURATION=Release + dist: trusty + addons: + apt: + packages: + - gcc-multilib + - g++-multilib + +# Profile code (gcc -pg) + - os: linux + compiler: g++ + env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug OPJ_CI_PROFILE=1 + dist: trusty + addons: + apt: + packages: + - valgrind + +# Test under ASAN +# Temporarily disabled since broken. See https://github.com/uclouvain/openjpeg/issues/1091 +# - os: linux +# compiler: clang +# env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug OPJ_CI_ASAN=1 + +# Test with CLang 3.8 + - os: linux + compiler: clang-3.8 + env: OPJ_CI_CC=clang-3.8 OPJ_CI_CXX=clang-3.8 OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release OPJ_CI_PERF_TESTS=1 OPJ_CI_BUILD_FUZZERS=1 + dist: trusty + addons: + apt: + sources: + - llvm-toolchain-precise-3.8 + - ubuntu-toolchain-r-test + packages: + - clang-3.8 + +# Test with mingw 32 bit + - os: linux + compiler: x86_64-w64-mingw32-g++ + env: OPJ_CI_CC=x86_64-w64-mingw32-gcc OPJ_CI_CXX=x86_64-w64-mingw32-g++ OPJ_CI_ARCH=i386 OPJ_CI_BUILD_CONFIGURATION=Release + dist: trusty + addons: + apt: + packages: + - gcc-mingw-w64-base + - binutils-mingw-w64-i686 + - gcc-mingw-w64-i686 + - gcc-mingw-w64 + - g++-mingw-w64-i686 + - gcc-multilib + - g++-multilib + +# Test with mingw 64 bit + - os: linux + compiler: x86_64-w64-mingw32-g++ + env: OPJ_CI_CC=x86_64-w64-mingw32-gcc OPJ_CI_CXX=x86_64-w64-mingw32-g++ OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release + dist: trusty + addons: + apt: + packages: + - gcc-mingw-w64-base + - binutils-mingw-w64-x86-64 + - gcc-mingw-w64-x86-64 + - gcc-mingw-w64 + - g++-mingw-w64-x86-64 + +# Test with gcc 4.8 + - os: linux + compiler: g++-4.8 + env: OPJ_CI_CC=gcc-4.8 OPJ_CI_CXX=g++-4.8 OPJ_CI_ABI_CHECK=1 + dist: precise + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-4.8 + - g++-4.8 + - libelf-dev + - elfutils + - texinfo + - exuberant-ctags + install: - - chmod +x jpylyzer-1.14.2/jpylyzer/jpylyzer.py - - if [ "${OPJ_NONCOMMERCIAL:-}" == "1" ]; then cmake -E tar -xf KDU77_Demo_Apps_for_Linux-x86-64_150710.zip; fi - - export LD_LIBRARY_PATH=${PWD}/KDU77_Demo_Apps_for_Linux-x86-64_150710:${LD_LIBRARY_PATH} - - export PATH=${PWD}/KDU77_Demo_Apps_for_Linux-x86-64_150710:${PATH} + - ./tools/travis-ci/install.sh script: - - if [ "${OPJ_NONCOMMERCIAL:-}" == "1" ]; then echo -e "\nTesting will use Kakadu trial binaries. Here's the copyright notice from kakadu:\nCopyright is owned by NewSouth Innovations Pty Limited, commercial arm of the UNSW Australia in Sydney.\nYou are free to trial these executables and even to re-distribute them,\nso long as such use or re-distribution is accompanied with this copyright notice and is not for commercial gain.\nNote:\ Binaries can only be used for non-commercial purposes.\n"; fi - - mkdir build - - cd build - - cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_CODEC=ON -DBUILD_THIRDPARTY=ON -DBUILD_TESTING=ON -DOPJ_DATA_ROOT=${PWD}/../data -DJPYLYZER_EXECUTABLE=${PWD}/../jpylyzer-1.14.2/jpylyzer/jpylyzer.py -DSITE=travis-ci.org -DBUILDNAME=${TRAVIS_OS_NAME}-${CC}$(${CC} -dumpversion)-x86_64-${TRAVIS_BRANCH}$( [[ "${TRAVIS_PULL_REQUEST}" != "false" ]] && echo "-pr${TRAVIS_PULL_REQUEST}" )-Release-3rdP .. - - ctest -D ExperimentalStart - - ctest -D ExperimentalBuild -V - - ctest -D ExperimentalTest -j2 || true - - ctest -D ExperimentalSubmit || true + - ./tools/travis-ci/run.sh + - ./tools/travis-ci/abi-check.sh + +before_deploy: + - export OPJ_RELEASE_PKG_FILE=$(ls build/openjpeg-${TRAVIS_TAG}*) + - echo "deploying $OPJ_RELEASE_PKG_FILE to GitHub releases" + +deploy: + provider: releases + api_key: + secure: Npi13uOffALCVNwea4p4q8v85Lo/WsRqaeZQcWrAkt8MxRnfvWQtmnuwmHnVB6Cig+T1lVUHrklOaJIApIb6nkGq3CS/9bD8+SCS2NEdAAP/QYWnBi0ubWXVMRyDLypmwRpzLNSZ0xLYGFUl2PjieZYKRcz1dd/J7S+FnXhPtdjXweq0FS63zTcMe7ggjfmzSOWUCEFmMjZPaM0Be+3PweieCO1dxlHuy7ugCkx2S7d+5hNsicIhQmTADjqtJAkHoMhYqu6/yLFxhjO/+f938PATFULdODTvjCsUwdN/ySWi1Oj4uPAntfytZP7H6YrzLh8dS73QCsdkhhDJIgJskHIBSbRyyEVUnOvQgD9VaBVGHtc1KtZQTwc41OUO3BGPHl97s3oX6bqWqo/L53dB3TPHGx+1+2HL/F0zaDZuHhAKMkPwe8LFPMPB/ur65zXMHjnWb2ZTVVdoIvkbQ7nu8ApI60ejxocYBsEyAuC2CPXU2ki4jdEhm0E1hIziWNE9/LTuM17ziQuJ6WpXOSMrfP4o5aVDmLp5ZGBSocrspOksgyI9XogHaO/r+Y6N3exy+giObFfMHkZVUpsKrKmtOJ7TC1Vg5HsYGlWW8RN8dkJV47bUXm9K4sMos9eYMUt/czykPAs+132cogpII3QxXpFZQqZg6SEPVfOiyqQzTUI= + file_glob: true + file: "${OPJ_RELEASE_PKG_FILE}" + skip_cleanup: true + on: + repo: uclouvain/openjpeg + tags: true + condition: "$OPJ_CI_INCLUDE_IF_DEPLOY = 1" +