| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License |
| # |
| |
| language: c |
| cache: ccache |
| os: linux |
| dist: xenial |
| jobs: |
| fast_finish: true |
| allow_failures: |
| - os: osx |
| - arch: arm64 |
| - arch: s390x |
| include: |
| - name: "apache-rat:check" |
| os: linux |
| env: [] |
| language: java |
| addons: |
| apt: |
| packages: [] |
| install: [] |
| before_script: [] |
| script: |
| - mvn apache-rat:check |
| before_cache: |
| - rm -rf $HOME/.m2/repository/org/apache/qpid/* |
| cache: |
| directories: |
| - $HOME/.m2/repository |
| after_script: |
| - cat target/rat.txt || true |
| # prepending /usr/bin to PATH to avoid mismatched python interpreters in /opt |
| - name: "qdrouterd:Debug (gcc on xenial)" |
| os: linux |
| env: |
| - QPID_SYSTEM_TEST_TIMEOUT=300 |
| - QPID_SYSTEM_TEST_SKIP_FALLBACK_SWITCHOVER_TEST=True |
| - PATH="/usr/bin:$PATH" PROTON_VERSION=main BUILD_TYPE=Debug |
| - DISPATCH_CMAKE_ARGS='-DRUNTIME_CHECK=asan' |
| - name: "qdrouterd:Coverage" |
| os: linux |
| env: |
| - QPID_SYSTEM_TEST_TIMEOUT=300 |
| - QPID_SYSTEM_TEST_SKIP_FALLBACK_SWITCHOVER_TEST=True |
| - PATH="/usr/bin:$PATH" PROTON_VERSION=0.36.0 BUILD_TYPE=Coverage |
| - name: "qdrouterd:RelWithDebInfo+MemoryDebug (gcc on xenial)" |
| os: linux |
| env: |
| - QPID_SYSTEM_TEST_TIMEOUT=300 |
| - QPID_SYSTEM_TEST_SKIP_FALLBACK_SWITCHOVER_TEST=True |
| - PATH="/usr/bin:$PATH" PROTON_VERSION=0.36.0 BUILD_TYPE=RelWithDebInfo |
| - DISPATCH_CMAKE_ARGS='-DRUNTIME_CHECK=asan -DCMAKE_C_FLAGS=-DQD_MEMORY_DEBUG' |
| - name: "qdrouterd:RelWithDebInfo+MemoryDebug (clang on focal)" |
| os: linux |
| dist: focal |
| before_install: |
| - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key 2>/dev/null | sudo apt-key add - |
| - sudo add-apt-repository 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main' -y |
| - sudo apt-get update -q |
| - sudo apt-get install -y clang-13 llvm-13-dev |
| # Update pip, it may prevent issues later |
| - sudo apt-get install -y python3-pip |
| - python3 -m pip install --user --upgrade pip |
| - python3 -m pip install --user tox virtualenv |
| env: |
| - QPID_SYSTEM_TEST_TIMEOUT=300 |
| - QPID_SYSTEM_TEST_SKIP_FALLBACK_SWITCHOVER_TEST=True |
| - CC=clang-13 |
| - CXX=clang++-13 |
| - PATH="/usr/bin:$PATH" PROTON_VERSION=0.36.0 BUILD_TYPE=RelWithDebInfo |
| - DISPATCH_CMAKE_ARGS='-DRUNTIME_CHECK=asan -DCMAKE_C_FLAGS=-DQD_MEMORY_DEBUG' |
| - name: "qdrouterd:RelWithDebInfo+MemoryDebug (gcc on focal)" |
| arch: s390x |
| os: linux |
| dist: focal |
| before_install: |
| # Install and use the latest Node.js LTS version |
| - nvm install "lts/*" |
| # Update pip, it may prevent issues later |
| - python3 -m pip install --user --upgrade pip |
| - python3 -m pip install --user tox virtualenv |
| # Binary wheel is not available in PyPI for s390x and source install requires fetching git submodules first |
| env: |
| - QPID_SYSTEM_TEST_TIMEOUT=300 |
| - QPID_SYSTEM_TEST_SKIP_FALLBACK_SWITCHOVER_TEST=True |
| - PROTON_VERSION=main BUILD_TYPE=RelWithDebInfo |
| - DISPATCH_CMAKE_ARGS='-DRUNTIME_CHECK=asan -DCMAKE_C_FLAGS=-DQD_MEMORY_DEBUG -DQD_ENABLE_ASSERTIONS=ON -DDISPATCH_TEST_TIMEOUT=500' |
| - name: "qdrouterd:RelWithDebInfo+MemoryDebug (clang on focal) on arm64" |
| arch: arm64 |
| os: linux |
| dist: focal |
| compiler: clang |
| before_install: |
| - sudo apt-get install clang-12 llvm-12-dev |
| # Install and use the latest Node.js LTS version |
| - nvm install "lts/*" |
| # Update pip, it may prevent issues later |
| - python3 -m pip install --user --upgrade pip |
| - python3 -m pip install --user tox virtualenv |
| env: |
| - QPID_SYSTEM_TEST_TIMEOUT=300 |
| - QPID_SYSTEM_TEST_SKIP_FALLBACK_SWITCHOVER_TEST=True |
| - CC=clang-12 |
| - CXX=clang++-12 |
| - PROTON_VERSION=0.36.0 BUILD_TYPE=RelWithDebInfo |
| - DISPATCH_CMAKE_ARGS='-DRUNTIME_CHECK=asan -DCMAKE_C_FLAGS=-DQD_MEMORY_DEBUG -DQD_ENABLE_ASSERTIONS=ON -DDISPATCH_TEST_TIMEOUT=500' |
| - name: "qdrouterd:Default Build" |
| os: linux |
| env: |
| - QPID_SYSTEM_TEST_TIMEOUT=300 |
| - QPID_SYSTEM_TEST_SKIP_FALLBACK_SWITCHOVER_TEST=True |
| - PATH="/usr/bin:$PATH" PROTON_VERSION=0.36.0 |
| - name: "qdrouterd:TSAN" |
| os: linux |
| dist: focal |
| before_install: |
| - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test && sudo apt-get update |
| - sudo apt-get install -y g++-11 |
| # Update pip, it may prevent issues later |
| - sudo apt-get install -y python3-pip |
| - python3 -m pip install --user --upgrade pip |
| - python3 -m pip install --user tox virtualenv |
| env: |
| - CC=gcc-11 |
| - CXX=g++-11 |
| - QPID_SYSTEM_TEST_TIMEOUT=300 |
| - QPID_SYSTEM_TEST_SKIP_FALLBACK_SWITCHOVER_TEST=True |
| - PATH="/usr/bin:$PATH" PROTON_VERSION=0.36.0 |
| - DISPATCH_CMAKE_ARGS='-DRUNTIME_CHECK=tsan' |
| - name: "qdrouterd:RelWithDebInfo+MemoryDebug (clang on macOS)" |
| os: osx |
| osx_image: xcode11 |
| env: |
| - QPID_SYSTEM_TEST_TIMEOUT=300 |
| - QPID_SYSTEM_TEST_SKIP_FALLBACK_SWITCHOVER_TEST=True |
| - PATH="/opt/local/bin:/opt/local/sbin:/usr/local/bin:$PATH" PROTON_VERSION=main |
| - DISPATCH_CMAKE_ARGS='-DRUNTIME_CHECK=asan -DCMAKE_C_FLAGS=-DQD_MEMORY_DEBUG -DQD_ENABLE_ASSERTIONS=ON -DDISPATCH_TEST_TIMEOUT=500' |
| # exclude tests that require raw_connection functionality; not available in libuv proactor |
| before_install: |
| - bash ./macports.sh |
| - export COLUMNS=80 |
| - yes | sudo port install cmake swig swig-python libuv jsoncpp libwebsockets cyrus-sasl2 pkgconfig python37 py37-pip |
| # set aliases for CMake's PythonInterp and PythonLibs to find MacPort's `python` on the path first |
| - sudo port select --set python python37 |
| - sudo port select --set python3 python37 |
| - python3 -m venv p3venv |
| - source p3venv/bin/activate |
| |
| addons: |
| apt: |
| packages: |
| # Proton requirements |
| - cmake |
| - libsasl2-dev |
| - libssl-dev |
| - sasl2-bin |
| - swig |
| # documentation |
| - asciidoc |
| - asciidoctor |
| - dblatex |
| # unit test requirement |
| - tox |
| # code coverage |
| - lcov |
| |
| before_install: |
| # Install and use the latest Node.js LTS version |
| - nvm install "lts/*" |
| # Install Python 3.6.8 |
| # Travis by itself would activate a virtualenv; CMake < 3.15 deals badly with this |
| - curl -sSf --retry 5 -o python-3.6.8.tar.bz2 https://storage.googleapis.com/travis-ci-language-archives/python/binaries/ubuntu/16.04/x86_64/python-3.6.8.tar.bz2 |
| - sudo tar xjf python-3.6.8.tar.bz2 --directory / |
| - PATH="/opt/python/3.6.8/bin:${PATH}" |
| |
| install: |
| - NPROC=2 |
| - PREFIX=$PWD/install |
| - git clone --depth=10 --branch=$PROTON_VERSION https://github.com/apache/qpid-proton.git |
| - cmake -version |
| |
| # Build and install proton from source. |
| - mkdir qpid-proton/build |
| - pushd qpid-proton/build |
| - cmake .. -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DBUILD_BINDINGS=python |
| - cmake --build . --target install -- -j $NPROC |
| - popd |
| |
| before_script: |
| - source qpid-proton/build/config.sh |
| - mkdir build |
| - pushd build |
| - cmake .. -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ${DISPATCH_CMAKE_ARGS} |
| - . config.sh |
| - make -j $NPROC |
| |
| script: |
| - pushd ../qpid-proton |
| - echo $(echo "Current proton commit:") $(git rev-parse HEAD) "(${PROTON_VERSION})" |
| - popd |
| # Workaround on macOS for PROTON-808 Binaries have their library locations stripped |
| - if [[ "${OSTYPE}" == "darwin"* ]]; then install_name_tool -add_rpath $PREFIX/lib/. $PREFIX/lib/proton/bindings/python/_cproton.so; fi |
| - ctest --timeout 1200 -V ${DISPATCH_CTEST_EXTRA} && if [ "$BUILD_TYPE" = "Coverage" ]; then cmake --build . --target coverage; fi |
| |
| after_success: |
| - cd ${TRAVIS_BUILD_DIR}/build |
| - if [ "$BUILD_TYPE" = "Coverage" ]; then bash <(curl -s https://codecov.io/bash); fi |