• Luca Boccassi's avatar
    Problem: TIPC availability check is too strict (#2977) · 19060345
    Luca Boccassi authored
    * Problem: TIPC availability check is too strict
    
    Solution: at build time only check if the API is available. In the tests
    do a first check and a skip if the functionality is not available.
    
    TIPC needs an in-tree but not loaded by default kernel module, tipc.ko
    to be loaded, which requires root, so it is unlikely to be available on
    any build system by default.
    This will allow most distributions to ship with TIPC support built in,
    and to avoid tests failure if the module is not there.
    
    * Problem: no Travis tests for TIPC
    
    Solution: mark one job with sudo: required and load the kernel module
    
    * Problem: CMake fails when test returns 77 (skip)
    
    Solution: set property to let it mark the test as skipped as intended
    19060345
.travis.yml 4.62 KB
# Travis CI script

language: c

os:
- linux
- osx

dist: trusty

cache: ccache

env:
  matrix:
    - BUILD_TYPE=default CURVE=tweetnacl DRAFT=enabled
    - BUILD_TYPE=cmake CURVE=tweetnacl
    - BUILD_TYPE=default
  # tokens to deploy releases on OBS and create/delete temporary branch on Github.
  # 1) Create a token on https://github.com/settings/tokens/new with "public_repo"
  #    capability and encrypt it with travis encrypt --org -r zeromq/libzmq GH_TOKEN="<token>"
  # 2) Create 2 OBS tokens with osc token --create network:messaging:zeromq:release-<stable|draft> libzmq
  #    encrypt them with travis encrypt --org -r zeromq/libzmq OBS_<STABLE|DRAFT>_TOKEN="<token>"
  global:
    - secure: aaIs9Y44FYp9VFCqa6LLD4illBH4aUfbS0zzzbAQ5xJvD6NfBsMiKEIhf/kRNCHAtP+1VfQVOejTD6/i08ALsVr3cZD9oB/t7874tz2/jeZUIhRNo+1KwyaVqNg0yUSV6ASIoq4aOfuGnjBlezNQ8LQ2bjQB2m4Enl5wxoYcYdA=
    - secure: YFrcedBIKe0NR1WC6qQi9phZgtnzOiBIXm40TirvCtstV4eVnSouKgtQfLLArZ4o2tjflq4grQQNo1rJatvyi5YPOXsMcndsni18S+4Ffu8qbECdtPrK52vBweuf7q9oV9Ydax0Fm4bEqEMOZ2/mRBy3nK+mgsE3upeMwyWR0Zw=
    - secure: lbZSzmqN39QdJwewKOZgq/1ijPKuyx9MFrGzMqXj2+eOSlaZS/tNavHMdKJOev+qJGK9wxmwzxOxS10AiH+AvN7WBacXX4ZtudjScz2HKJRDWTKyzMbzyScq51afniItzrsm+Vo8NHkenNFkux0sSbh0aHlpkLwrGQu+WZWcDN4=

matrix:
  include:
  - env: BUILD_TYPE=default CURVE=tweetnacl IPv6=ON
    os: linux
    dist: precise
    sudo: false
  - env: BUILD_TYPE=coverage CURVE=tweetnacl DRAFT=enabled
    os: linux
    addons:
      apt:
        packages:
        - lcov
  - env: BUILD_TYPE=valgrind CURVE=tweetnacl DRAFT=enabled
    os: linux
    addons:
      apt:
        packages:
        - valgrind
  - env: BUILD_TYPE=default CURVE=libsodium GSSAPI=enabled PGM=enabled NORM=enabled
    os: linux
    addons:
      apt:
        sources:
        - sourceline: 'deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_14.04/ ./'
          key_url: 'http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_14.04/Release.key'
        packages:
        - libkrb5-dev
        - libnorm-dev
        - libpgm-dev
        - libsodium-dev
        - asciidoc
        - xmlto
  - env: BUILD_TYPE=default CURVE=libsodium DRAFT=enabled GSSAPI=enabled PGM=enabled NORM=enabled TIPC=enabled
    os: linux
    sudo: required
    addons:
      apt:
        sources:
        - sourceline: 'deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_14.04/ ./'
          key_url: 'http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_14.04/Release.key'
        packages:
        - libkrb5-dev
        - libnorm-dev
        - libpgm-dev
        - libsodium-dev
  - env: BUILD_TYPE=default CURVE=libsodium DRAFT=enabled
    os: osx
  - env: BUILD_TYPE=default CURVE=tweetnacl DRAFT=enabled ADDRESS_SANITIZER=enabled
    os: linux
    dist: trusty
    addons:
      apt:
        sources:
        - sourceline: 'ppa:ubuntu-toolchain-r/test'
        packages:
        - g++-6
        - gcc-6
  - env: BUILD_TYPE=android CURVE=tweetnacl
    os: linux
    dist: trusty
  - env: BUILD_TYPE=cmake DO_CLANG_FORMAT_CHECK=1 CLANG_FORMAT=/usr/local/clang-5.0.0/bin/clang-format
    os: linux
    addons:
    apt:
      sources:
        - llvm-toolchain-trusty-5.0
      packages:
        - clang-5.0
  - env: BUILD_TYPE=default POLLER=poll
    os: linux
  - env: BUILD_TYPE=default POLLER=select
    os: linux

sudo: false

before_install:
- if [ $TRAVIS_OS_NAME == "osx" -a $BUILD_TYPE == "android" ] ; then brew update; brew install binutils ; fi
- if [ $TRAVIS_OS_NAME == "osx" -a $CURVE == "libsodium" ] ; then brew update; brew install libsodium ; fi

before_script:
# ZMQ stress tests need more open socket (files) than the usual default
# On OSX, it seems the way to set the max files limit is constantly changing, so
# try to use all known knobs to ensure compatibility across various versions
- if [ $TRAVIS_OS_NAME == "osx" ] ; then sudo sysctl -w kern.maxfiles=64000 ; sudo sysctl -w kern.maxfilesperproc=64000 ; sudo launchctl limit maxfiles 64000 64000 ; ulimit -n 64000; fi

# Build and check this project according to the BUILD_TYPE
script: ./ci_build.sh

# Deploy tags
before_deploy:
- . ./ci_deploy.sh
deploy:
  provider: releases
  api_key:
    secure: vGB5E+A8wxm2J1GJZzmIgT9PrjEzvd9gE8iui8FyxSbxAsW9vFZFGZC/21sTtpVcmRarwQCHH1UEbtg+nJwN2iD9YzMRnSVks8xqP+b709YW+VXaMuhZgTzWa74IorQku7NuvLibvQk72/OSgdwPGaNJ6f5AX9pnWVWbEoW1svE=
  file_glob: true
  file: ${LIBZMQ_DEPLOYMENT}
  skip_cleanup: true
  on:
    repo: zeromq/libzmq
    branch: master
    tags: true
    condition: "$TRAVIS_OS_NAME =~ (linux) && $BUILD_TYPE =~ (default) && $CURVE =~ (libsodium) && -z $DRAFT"