mirror of
https://github.com/the-tcpdump-group/tcpdump.git
synced 2024-11-23 18:14:29 +08:00
11abdc627d
The 'BUILD_LIBPCAP=yes CMAKE=yes' builds currently fail. See: https://lists.sandelman.ca/pipermail/tcpdump-workers/2020-September/001512.html
192 lines
7.5 KiB
YAML
192 lines
7.5 KiB
YAML
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 Litle-endian PowerPC/Power ISA does some things that require more
|
|
# careful adherence to the documentation, so it's useful for testing
|
|
# that.
|
|
#
|
|
arch:
|
|
- amd64
|
|
- ppc64le
|
|
- s390x
|
|
- arm64
|
|
|
|
os:
|
|
- linux
|
|
- osx
|
|
|
|
dist: bionic
|
|
|
|
compiler:
|
|
- gcc
|
|
- clang
|
|
|
|
#
|
|
# Linux runs on all of the architectures listed above; macOS currently
|
|
# runs only on 64-bit x86, although the Spaceshipologists are all in a
|
|
# tizzy about the possibility of Arm-based Macs. 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
|
|
exclude:
|
|
- arch: ppc64le
|
|
os: osx
|
|
- arch: s390x
|
|
os: osx
|
|
- arch: arm64
|
|
os: osx
|
|
- compiler: gcc
|
|
os: osx
|
|
- if: branch = coverity_scan
|
|
arch: ppc64le
|
|
- if: branch = coverity_scan
|
|
arch: s390x
|
|
- if: branch = coverity_scan
|
|
arch: arm64
|
|
|
|
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 -a "$REMOTE" = enable -a "$CMAKE" = no -a "$CRYPTO" = yes -a "$BUILD_LIBPCAP" = yes'
|
|
# 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
|
|
matrix:
|
|
# NOTE: REMOTE= is for the libpcap build, which is done with autotools
|
|
# even if we're building tcpdump with CMake.
|
|
# It's irrelevant if we're building tcpdump with the system libpcap.
|
|
- BUILD_LIBPCAP=no CMAKE=no CRYPTO=no
|
|
- BUILD_LIBPCAP=no CMAKE=no CRYPTO=yes
|
|
- BUILD_LIBPCAP=no CMAKE=yes CRYPTO=no
|
|
- BUILD_LIBPCAP=no CMAKE=yes CRYPTO=yes
|
|
- BUILD_LIBPCAP=yes CMAKE=no REMOTE=disable CRYPTO=no
|
|
- BUILD_LIBPCAP=yes CMAKE=no REMOTE=disable CRYPTO=yes
|
|
- BUILD_LIBPCAP=yes CMAKE=no REMOTE=enable CRYPTO=no
|
|
- BUILD_LIBPCAP=yes CMAKE=no REMOTE=enable CRYPTO=yes
|
|
# The 'BUILD_LIBPCAP=yes CMAKE=yes' builds currently fail
|
|
# - BUILD_LIBPCAP=yes CMAKE=yes REMOTE=disable CRYPTO=no
|
|
# - BUILD_LIBPCAP=yes CMAKE=yes REMOTE=disable CRYPTO=yes
|
|
# - BUILD_LIBPCAP=yes CMAKE=yes REMOTE=enable CRYPTO=no
|
|
# - BUILD_LIBPCAP=yes CMAKE=yes REMOTE=enable CRYPTO=yes
|
|
|
|
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
|
|
- libssl1.0.0
|
|
- 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" = osx ]; then brew update >/dev/null; fi
|
|
- if [ "$TRAVIS_OS_NAME" = linux ]; then apt list --installed 'lib*-dev'; fi
|
|
|
|
install:
|
|
- if [ "$TRAVIS_OS_NAME" = osx ]; then brew install libsmi | grep -v '%'; fi
|
|
|
|
before_script:
|
|
- if [ "$BUILD_LIBPCAP" = yes ]; then (cd .. && echo '$ git clone [...] libpcap.git' && git clone --depth 3 --branch=master --quiet git://github.com/the-tcpdump-group/libpcap.git && cd libpcap && ./configure "--${REMOTE}-remote" --prefix=/tmp && make && make install); fi
|
|
|
|
script:
|
|
- if [ "$COVERITY_SCAN_BRANCH" = 1 ]; then exit 0; fi
|
|
- if [ "$TRAVIS_OS_NAME" = osx ]; then OSX_SSL_DIR=$(ls /usr/local/Cellar/openssl); echo "OSX_SSL_DIR=$OSX_SSL_DIR"; fi
|
|
- touch .devel configure
|
|
- if [ "$CMAKE" = no ]; then echo '$ ./configure [...]' && echo travis_fold:start:script.configure; fi
|
|
- if [ "$CMAKE" = no ]; then ./configure --with-crypto=${CRYPTO} CPPFLAGS="-I/usr/local/Cellar/openssl/$OSX_SSL_DIR/include/" --prefix=/tmp; fi
|
|
- if [ "$CMAKE" = no ]; then echo -n travis_fold:end:script.configure; fi
|
|
- if [ "$CMAKE" = yes ]; then mkdir build; fi
|
|
- if [ "$CMAKE" = yes ]; then cd build; fi
|
|
- if [ "$CMAKE" = yes ]; then echo travis_fold:start:script.cmake; fi
|
|
- if [ "$CMAKE" = yes ]; then cmake -DWITH_CRYPTO="$CRYPTO" -DCMAKE_PREFIX_PATH=/tmp -DCMAKE_INSTALL_PREFIX=/tmp ..; fi
|
|
- if [ "$CMAKE" = yes ]; then echo -n travis_fold:end:script.cmake; fi
|
|
- make -s CFLAGS=-Werror
|
|
- echo '$ make install [...]' && echo travis_fold:start:script.make_install
|
|
- PATH=$PATH make install
|
|
- echo -n travis_fold:end:script.make_install
|
|
- if [ "$BUILD_LIBPCAP" = yes ]; then make check; fi
|
|
- ./tcpdump --version
|
|
- ./tcpdump -h
|
|
- ./tcpdump -D
|
|
- sudo ./tcpdump -J
|
|
- sudo ./tcpdump -L
|
|
- if [ "$TRAVIS_OS_NAME" = linux -a "$TRAVIS_CPU_ARCH" != ppc64le -a "$TRAVIS_CPU_ARCH" != s390x ]; then sudo ./tcpdump -#n -c 10; fi
|
|
- if [ "$CMAKE" = no ]; then make releasetar; fi
|
|
- echo '$ cat Makefile [...]'; echo travis_fold:start:script.cat_makefile
|
|
- if [ "$CMAKE" = no ]; then cat Makefile | sed -n '1,/DO NOT DELETE THIS LINE -- mkdep uses it/p'; fi
|
|
- if [ "$CMAKE" = yes ]; then cat Makefile; fi
|
|
- echo -n travis_fold:end:script.cat_makefile
|
|
- echo '$ cat config.h'; echo travis_fold:start:script.cat_config_h
|
|
- cat config.h
|
|
- echo -n travis_fold:end:script.cat_config_h
|
|
- if [ "$CMAKE" = no ]; then echo '$ cat config.log'; echo travis_fold:start:script.cat_config_log; fi
|
|
- if [ "$CMAKE" = no ]; then cat config.log; fi
|
|
- if [ "$CMAKE" = no ]; then echo -n travis_fold:end:script.cat_config_log; fi
|
|
- if [ "$TRAVIS_OS_NAME" = osx ]; then sleep 10; fi
|