blob: eeccec484f60ad9ff7731255280d8f669b0179d3 [file] [log] [blame]
language: c
#
# Try building on these 4 architectures; all are 64-bit, and all but
# "s390x", a/k/a z/Architecture, are little-endian. The crypto library
# on little-endian PowerPC/Power ISA does some things that require more
# careful adherence to the documentation, so it's useful for testing
# that.
#
os:
- linux
dist: focal
#
# Linux runs on all of the architectures listed above; macOS runs on
# 64-bit x86 and 64-bit ARM, but Travis doesn't currently have a 64-bit
# ARM macOS build environment. Suppress the macOS builds that don't work.
#
# In addition, with newer versions of macOS, Apple ships a "gcc" that's
# just another front end to Clang, presumably for backwards
# compatibility with build scripts etc. that expect the compiler to be
# "gcc", so don't bother doing "gcc" builds on macOS.
#
# Furthermore, the Coverity-branch builds seem to time out on the
# non-x86 platforms, so suppress them as well. (Are they supported
# at all?)
#
# XXX - what is the fast_finish clause there for? According to
#
# https://docs.travis-ci.com/user/build-matrix/#fast-finishing
#
# "If some rows in the build matrix are allowed to fail, the build
# won't be marked as finished until they have completed.
#
# To mark the build as finished as soon as possible, add fast_finish:
# true to the jobs section of your .travis.yml like this:
#
# jobs:
# fast_finish: true
#
# Now, the build result will be determined as soon as all the required
# jobs finish, based on these results, while the rest of the
# allow_failures jobs continue to run."
#
# but we *have* no allow_failures jobs.
#
jobs:
fast_finish: true
include:
- name: "amd64"
arch: amd64
if: branch = coverity_scan
- name: "arm64"
arch: arm64
if: branch != coverity_scan
- name: "ppc64le"
arch: ppc64le
if: branch != coverity_scan
- name: "s390x"
arch: s390x
if: branch != coverity_scan
allow_failures:
- arch: ppc64le # Since 20 Feb 2021 often times out trying to boot.
cache: ccache
env:
global:
# encrypted COVERITY_SCAN_TOKEN from
# https://scan.coverity.com/projects/<project_id>/submit_build?tab=travis_ci
- secure: "DwUeukcRGl1vXNZDDt2237zCA58ZzmzWpCkPcb/Hpeh8OvRw1eBZJiu4L8iD2qtY4A/dPDvOeBiml5MF6bVri9Dui1yPkvkvFqIXzbK5CWS6Ye+NgSBNMwqnAjhTMv/x8I4Bvy9IhDGwj/2JXVUvjBddRMLRyr/ag+MDRB1IVAI="
# Coverity run condition (avoid matrix multiple runs), need customized
# build script. Need an update if new matrix cases.
- coverity_scan_run_condition='"$TRAVIS_CPU_ARCH" = amd64 -a "$TRAVIS_OS_NAME" = linux -a "$CC" = gcc'
# Coverity script test mode (if true no uploading, avoid reaching the quota)
# usual processing: false.
- coverity_scan_script_test_mode=false
- MAKEFLAGS='-j 2' # Travis CI VMs come with 2 cores
addons:
coverity_scan:
# customized build script URL
# TRAVIS_REPO_SLUG: owner_name/repo_name of repository currently being built
# TRAVIS_BRANCH: name of the branch currently being built
build_script_url: https://raw.githubusercontent.com/$TRAVIS_REPO_SLUG/$TRAVIS_BRANCH/.travis-coverity-scan-build.sh
# project metadata
project:
name: $TRAVIS_REPO_SLUG
# Where email notification of build analysis results will be sent
#notification_email: tcpdump-workers@lists.tcpdump.org
# Commands to prepare for build_command
build_command_prepend: ./configure
# This command will be added as an argument to "cov-build" to compile
# the project for analysis
build_command: make
# Pattern to match selecting branches that will run analysis
branch_pattern: coverity_scan
apt:
packages:
- libdbus-1-dev
- libbluetooth-dev
- libnl-genl-3-dev
- libibverbs-dev
- libssl-dev
- libsmi2-dev
- libcap-ng-dev
- libpcap-dev
git:
quiet: true
depth: 3
before_install:
- uname -a
- date
- gem install travis-conditions
- if [ "$TRAVIS_OS_NAME" = linux ]; then apt list --installed 'lib*-dev'; fi
before_script:
- (cd .. && echo '$ git clone [...] libpcap.git' && git clone --depth 3 --branch=master --quiet git://github.com/the-tcpdump-group/libpcap.git)
script:
# On the other hand, using travis_terminate on macOS appears to
# *cause* the problem, so we do so only on Linux.
#
- if [ "$COVERITY_SCAN_BRANCH" = 1 ]; then if [ "$TRAVIS_OS_NAME" = linux ]; then travis_terminate 0; else exit 0; fi; fi
- ./build_matrix.sh