aboutsummaryrefslogtreecommitdiff
path: root/.travis.yml
blob: d5e7dbe865becd003aa4ed3f125ae333fa4cf37b (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
132
133
language: c
compiler:
  - gcc
  - clang

dist: xenial

env:
  matrix:
  - WITH_CRYPTO=ossl OPENSSL_BRANCH=OpenSSL_1_0_2-stable
  - WITH_CRYPTO=ossl OPENSSL_BRANCH=OpenSSL_1_1_0-stable
  - WITH_CRYPTO=gcrypt OPENSSL_BRANCH=OpenSSL_1_0_2-stable
  - WITH_TCTI_ASYNC=yes WITH_TCTI_PARTIAL=yes WITH_CRYPTO=ossl OPENSSL_BRANCH=OpenSSL_1_0_2-stable
  - WITH_TCTI_ASYNC=yes WITH_TCTI_PARTIAL=no WITH_CRYPTO=ossl OPENSSL_BRANCH=OpenSSL_1_0_2-stable
  - WITH_TCTI_ASYNC=no WITH_TCTI_PARTIAL=yes WITH_CRYPTO=ossl OPENSSL_BRANCH=OpenSSL_1_0_2-stable
  global:
  # COVERITY_SCAN_TOKEN
  - secure: "ZD0KxBhO/CaSE/TOkW+H5nsBbaMolbIPv5DgctcjA1BlTckgc5lK4m+7BIR1Fft6gaeeLOoCY3qUm4kW++Bqk2bTsrx/HvrmVmrzMO572jA74x4E+5lynUnRVaAgBg7cVBcB0hZcUurx8FifNBbgnWlxT/nDWttVnglkz400GCE9/zy+VTJWqt4QAB+6qeKPiG3vRthQdWcHstBI8IIAbvp4rhSUajBBQeZ5ro5RPGNy+iHen+t6tyJmbjiP0Y4qjkKGbfwXHnsseEcuSJQuxSkQ9MWK6t93BFXFSPw5MjHIApMn+4CjRp2JMoVTVfe5fFeZEHxVUmAzy+e5eIeftrUtUlCI293UuxZnw/vpJczn3BWunlhhjqjsCwVeknzGHxlaT+ck8Et1Mdl/3nY/E9dt47/NOzXY2xrAz59GYsdKvvsPoCGgNlAub03Vl0W24I1kjppsmN/zFwazHGqoxIBTwrDOQUmZvPfXA3jAUozrfAdT3YjnRcCG7bbQmacFApqfUm/bqMgapAgozjjxpuBrO1wQSUjjH6NANZsP2Gpk0eAl7FOlBzbVgKPxCQozWCjpKOj3HMnXX458ZQWsboG5J00wwjw9DRNRCkeexLdi832L/BPhUY5JgRlTqqyKr9cr69DvogBF/pLytpSCciF6t9NqqGZYbBomXJLaG84="
  # COVERALLS_REPO_TOKEN
  - secure: "OgC0wl8yIwZP1ppx7QgZrLvGbs/p8CutRWuHmutuuyta+InR73VsSL7E5vwGG9W8WJAcTu6nwQlkv2d8tx8l+DQXYXWYALH3m1KtlIV2QpP7ZPjsNYhh6tP/1ZUKh3MumsDU+H2BjfqV5910BSWa0DBcONT8CAAxXfTvvTaAPzIBf0Z7byy1dSV7oHKfVPPQMOxXwMSTAItOiMIhRk+20C0YQRxFqkXQ72h14B7/2eu3GXjiu+8ovdPPFWCajcg0sueIkNkBTUOc+PUeQ3r/uNCURwSUTFNOgvV/1jVOFx0ZfehtNo+U4vAh4KdmmOVGQScBlXplhzlUKfd8FmPfksn9rmZLjZBuHaGMEJJuDRqpUIUh/1ejOsGF26sXxjrT2wW6ovj+IJy1FTTIbIkiouYUlAnJ4n60R1PMcX75O7YSUhXBmyvDUGp5BQfcH7nZ/7kUq6+rdAjnpWqlUtZVTqMraAhcAkBrZaesc18d3eqSSdRDD7kiG9VnnBFlpPDppwaZGSSoVumAUy0ceGcqI8S659kHmf6ZA9msw9zD7bREoi6oif/UzhH1VoXksrNQkFfc78sGxD0VzLygdDJ7RmkZPeBiHfX1yilToi1yrlRzRDLo46LvSEEiawhTa1i9W3UGr3p4LNxOxJr9tR9AjUuIlP21VEooikAhRf35qK0="
  # run coverity scan on gcc build to keep from DOSing coverity
  - coverity_scan_run_condition='"$CC" = gcc'
  - LD_LIBRARY_PATH="$(pwd)/osslinstall/usr/local/lib:/usr/lib"
  - PATH="$(pwd)/ibmtpm/src:${PATH}"
  - ACLOCAL_PATH="/usr/share/gnulib/m4"

addons:
  apt:
    packages:
    - autoconf-archive
    - doxygen
    - libcmocka-dev
    - libcmocka0
    - libgcrypt20-dev
    - realpath
    - lcov
    - libssl-dev
    - gnulib
  coverity_scan:
    project:
      name: "01org/TPM2.0-TSS"
      description: Build submitted via Travis-CI
    notification_email: philip.b.tricca@intel.com
    build_command_prepend: "./bootstrap && ./configure"
    build_command: "make --jobs=$(nproc)"
    branch_pattern: coverity_scan

install:
# Autoconf archive
  - wget https://download.01.org/tpm2/autoconf-archive-2017.09.28.tar.xz
  - sha256sum autoconf-archive-2017.09.28.tar.xz | grep -q 5c9fb5845b38b28982a3ef12836f76b35f46799ef4a2e46b48e2bd3c6182fa01 || travis_terminate 1
  - tar xJf autoconf-archive-2017.09.28.tar.xz
  - cp autoconf-archive-2017.09.28/m4/ax_code_coverage.m4 m4/
  - cp autoconf-archive-2017.09.28/m4/ax_prog_doxygen.m4 m4/
# Coveralls
  - pip install --user cpp-coveralls
# IBM-TPM
  - wget https://download.01.org/tpm2/ibmtpm974.tar.gz
# OpenSSL 1.0.2
# (Must come after all wgets, since it overrides libcrypto.so for the test-environment)
  - mkdir -p osslinstall/usr/local/bin
  - git clone --branch $OPENSSL_BRANCH --depth=1 https://github.com/openssl/openssl.git
  - pushd openssl
  - ./config --prefix=/usr/local --openssldir=/usr/local/openssl shared
  - make -j$(nproc)
  - |
    if [ "$OPENSSL_BRANCH" == "OpenSSL_1_0_2-stable" ]; then
        make install INSTALL_PREFIX=${PWD}/../osslinstall
    else
        make install DESTDIR=${PWD}/../osslinstall
    fi
  - which openssl
  - popd
# IBM-TPM
  - sha256sum ibmtpm974.tar.gz | grep -q ^8e45d86129a0adb95fee4cee51f4b1e5b2d81ed3e55af875df53f98f39eb7ad7 || travis_terminate 1
  - mkdir ibmtpm
  - tar axf ibmtpm974.tar.gz -C ibmtpm
  - make -C ibmtpm/src -j$(nproc)
# 2.1.0 version of uthash
  - wget --no-check-certificate https://github.com/troydhanson/uthash/archive/v2.1.0.tar.gz
  - tar xzf v2.1.0.tar.gz
  - mkdir -p $(pwd)/osslinstall/usr/local/include
  - cp uthash-2.1.0/src/*.h $(pwd)/osslinstall/usr/local/include/

before_script:
  - ./bootstrap

script:
# short-circuit normal build if we've already done a coverity scan
  - |
    if [ "${COVERITY_SCAN_BRANCH}" == 1 ]; then
        echo "COVERITY_SCAN_BRANCH set, not running normal build."
        exit 0
    fi
# build with no tests enabled
  - mkdir ./build-no-tests
  - pushd ./build-no-tests
  - ../configure CFLAGS=-I${PWD}/../osslinstall/usr/local/include LDFLAGS=-L${PWD}/../osslinstall/usr/local/lib
  - make -j$(nproc)
  - popd
# build with all tests enabled
  - mkdir ./build
  - pushd ./build
  - |
    if [ "$CC" == "gcc" ]; then
      export CONFIGURE_OPTIONS="--enable-code-coverage";
    fi
  - |
    if [ "$CC" == "clang" ]; then
      scan-build ../configure --enable-tcti-partial-reads=$WITH_TCTI_PARTIAL --enable-tcti-device-async=$WITH_TCTI_ASYNC --enable-unit --enable-integration --with-crypto=$WITH_CRYPTO $CONFIGURE_OPTIONS CFLAGS=-I${PWD}/../osslinstall/usr/local/include LDFLAGS=-L${PWD}/../osslinstall/usr/local/lib
    else
      ../configure --enable-tcti-partial-reads=$WITH_TCTI_PARTIAL --enable-tcti-device-async=$WITH_TCTI_ASYNC --enable-unit --enable-integration --with-crypto=$WITH_CRYPTO $CONFIGURE_OPTIONS CFLAGS=-I${PWD}/../osslinstall/usr/local/include LDFLAGS=-L${PWD}/../osslinstall/usr/local/lib
    fi
  - |
    if [ "$CC" == "clang" ]; then
      scan-build --status-bugs make -j$(nproc) check
    else
      make -j$(nproc) check
    fi
  - |
  - popd
# make distcheck
  - mkdir ./distcheck_build
  - pushd ./distcheck_build
  - ../configure --enable-unit --enable-integration CFLAGS=-I${PWD}/../osslinstall/usr/local/include LDFLAGS=-L${PWD}/../osslinstall/usr/local/lib
  - make -j$(nproc) distcheck
  - popd
  - |
    if [ "$CC" == "gcc" -a -n "$COVERALLS_REPO_TOKEN" ]; then
        coveralls --build-root=build \
            --exclude=ibmtpm --exclude=include --exclude=test \
            --gcov-options '\-lp'
    fi