summaryrefslogtreecommitdiff
path: root/.travis.yml
blob: 708bb4215e3fa3501bcea7dec31efd274d5b22ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
language: c

os:
  - linux
  - osx

dist: bionic

compiler:
  - gcc
  - clang

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_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.
    - BUILD_LIBPCAP=no  CMAKE=no  REMOTE=disable CRYPTO=no
    - BUILD_LIBPCAP=no  CMAKE=no  REMOTE=disable CRYPTO=yes
    - BUILD_LIBPCAP=no  CMAKE=no  REMOTE=enable  CRYPTO=no
    - BUILD_LIBPCAP=no  CMAKE=no  REMOTE=enable  CRYPTO=yes
    - BUILD_LIBPCAP=no  CMAKE=yes REMOTE=disable CRYPTO=no
    - BUILD_LIBPCAP=no  CMAKE=yes REMOTE=disable CRYPTO=yes
    - BUILD_LIBPCAP=no  CMAKE=yes REMOTE=enable  CRYPTO=no
    - BUILD_LIBPCAP=no  CMAKE=yes REMOTE=enable  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
    - 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

matrix:
  fast_finish: true

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:
      - libusb-1.0-0-dev
      - libdbus-glib-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
  - if [ "$TRAVIS_OS_NAME" = osx ]; then brew update >/dev/null; fi
  - if [ "$TRAVIS_OS_NAME" = linux ]; then dpkg-query -f '${Package}__${Version}__${Architecture}\n' -W '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 ]; 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