1dist: trusty
2sudo: required
3
4osx_image: xcode9.3
5
6language: c
7cache: ccache
8git:
9    submodules: false
10    quiet: true
11
12before_install:
13    - if [ -n "$COVERALLS" ]; then
14          pip install --user cpp-coveralls;
15      fi;
16    - if expr "$CONFIG_OPTS" ":" ".*enable-external-tests" > /dev/null; then
17          git submodule update --init --recursive;
18      fi;
19    - eval "${MATRIX_EVAL}"
20
21arch:
22    - amd64
23    - arm64
24
25os:
26    - linux
27    - osx
28
29compiler:
30    - clang
31    - gcc
32
33env:
34    - CONFIG_OPTS="" DESTDIR="_install"
35    - CONFIG_OPTS="no-asm -Werror --debug no-afalgeng no-shared enable-crypto-mdebug enable-rc5 enable-md2"
36    - CONFIG_OPTS="no-asm no-makedepend enable-buildtest-c++ --strict-warnings -D_DEFAULT_SOURCE" BUILDONLY="yes" CHECKDOCS="yes" GENERATE="yes" CPPFLAGS="-ansi"
37
38matrix:
39    include:
40        - os: linux
41          arch: arm64
42          dist: bionic
43          compiler: clang
44          env: CONFIG_OPTS="--strict-warnings -D__NO_STRING_INLINES no-deprecated" BUILDONLY="yes"
45        - os: linux
46          arch: arm64
47          compiler: clang
48          addons:
49              apt:
50                  packages:
51                      - clang-6.0
52          env: EXTENDED_TEST="yes" CONFIG_OPTS="enable-msan disable-afalgeng -D__NO_STRING_INLINES -Wno-unused-command-line-argument" MATRIX_EVAL="CC=clang-6.0 && CXX=clang++-6.0"
53        - os: linux
54          arch: arm64
55          compiler: clang
56          addons:
57              apt:
58                  packages:
59                      - clang-6.0
60          env: EXTENDED_TEST="yes" CONFIG_OPTS="no-asm enable-ubsan enable-rc5 enable-md2 enable-ssl3 enable-ssl3-method enable-nextprotoneg no-shared enable-buildtest-c++ -fno-sanitize=alignment -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -D__NO_STRING_INLINES -Wno-unused-command-line-argument" MATRIX_EVAL="CC=clang-6.0 && CXX=clang++-6.0"
61        - os: linux
62          arch: s390x
63          compiler: gcc
64          env: CONFIG_OPTS="--strict-warnings"
65        - os: linux-ppc64le
66          sudo: false
67          compiler: clang
68          env: CONFIG_OPTS="--strict-warnings -D__NO_STRING_INLINES"
69        - os: linux
70          addons:
71              apt:
72                  packages:
73                      - gcc-5
74                      - g++-5
75                  sources:
76                      - ubuntu-toolchain-r-test
77          compiler: gcc-5
78          env: CONFIG_OPTS="--strict-warnings no-ec enable-ssl-trace enable-zlib enable-zlib-dynamic enable-crypto-mdebug enable-crypto-mdebug-backtrace enable-egd" COMMENT="Move to the BORINGTEST build when interoperable"
79        - os: linux
80          compiler: clang
81          env: CONFIG_OPTS="--strict-warnings -D__NO_STRING_INLINES no-deprecated"
82        - os: linux
83          addons:
84              apt:
85                  packages:
86                      - binutils-mingw-w64
87                      - gcc-mingw-w64
88          compiler: i686-w64-mingw32-gcc
89          env: CONFIG_OPTS="no-stdio" BUILDONLY="yes" DESTDIR="_install"
90        # Uncomment if there is reason to believe that PPC-specific problem
91        # can be diagnosed with this possibly >30 mins sanitizer build...
92        #- os: linux-ppc64le
93        #  sudo: false
94        #  compiler: gcc
95        #  env: EXTENDED_TEST="yes" CONFIG_OPTS="no-asm enable-asan enable-ubsan no-shared -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -D__NO_STRING_INLINES"
96        - os: linux
97          addons:
98              apt:
99                  packages:
100                      - gcc-5
101                      - g++-5
102                      - golang-1.6
103                  sources:
104                      - ubuntu-toolchain-r-test
105          compiler: gcc-5
106          env:  EXTENDED_TEST="yes" CONFIG_OPTS="--debug --coverage no-asm enable-rc5 enable-md2 enable-ec_nistp_64_gcc_128 enable-ssl3 enable-ssl3-method enable-nextprotoneg enable-weak-ssl-ciphers no-shared -DPEDANTIC -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION" COVERALLS="yes" BORINGSSL_TESTS="yes" CXX="g++-5"
107        - os: linux
108          addons:
109              apt:
110                  packages:
111                      - gcc-5
112                      - g++-5
113                      - golang-1.6
114                  sources:
115                      - ubuntu-toolchain-r-test
116          compiler: gcc-5
117          # External test pyca-cryptography temporarily disabled due to long term travis failures
118          env:  EXTENDED_TEST="yes" CONFIG_OPTS="--debug enable-ssl3 enable-ssl3-method enable-weak-ssl-ciphers enable-external-tests" BORINGSSL_TESTS="yes" CXX="g++-5" TESTS="test_external_boringssl test_external_krb5"
119        - os: linux
120          compiler: clang
121          env: EXTENDED_TEST="yes" CONFIG_OPTS="enable-msan -D__NO_STRING_INLINES -Wno-unused-command-line-argument"
122        - os: linux
123          compiler: clang
124          env:  EXTENDED_TEST="yes" CONFIG_OPTS="no-asm enable-ubsan enable-rc5 enable-md2 enable-ssl3 enable-ssl3-method enable-nextprotoneg no-shared -fno-sanitize=alignment -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -D__NO_STRING_INLINES -Wno-unused-command-line-argument"
125        - os: linux
126          compiler: clang
127          env: EXTENDED_TEST="yes" CONFIG_OPTS="no-asm enable-asan enable-rc5 enable-md2 no-shared -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -D__NO_STRING_INLINES -Wno-unused-command-line-argument"
128        - os: linux
129          addons:
130              apt:
131                  packages:
132                      - gcc-5
133                      - g++-5
134                  sources:
135                      - ubuntu-toolchain-r-test
136          compiler: gcc-5
137          env: UBUNTU_GCC_HACK="yes" EXTENDED_TEST="yes" CONFIG_OPTS="--debug no-asm enable-ubsan enable-rc5 enable-md2 -DPEDANTIC" OPENSSL_TEST_RAND_ORDER=0
138        - os: linux
139          addons:
140              apt:
141                  packages:
142                      - binutils-mingw-w64
143                      - gcc-mingw-w64
144          compiler: i686-w64-mingw32-gcc
145          env: EXTENDED_TEST="yes" CONFIG_OPTS="no-pic"
146        - os: linux
147          addons:
148              apt:
149                  packages:
150                      - binutils-mingw-w64
151                      - gcc-mingw-w64
152          compiler: x86_64-w64-mingw32-gcc
153          env: EXTENDED_TEST="yes" CONFIG_OPTS="no-pic"
154        - os: linux
155          language: python
156          python: 3.7
157          dist: xenial    # required for Python 3.7 (travis-ci/travis-ci#9069)
158          sudo: required  # required for Python 3.7 (travis-ci/travis-ci#9069)
159          install: pip install flake8
160          before_script:
161            # stop the build if there are Python syntax errors or undefined names
162            - flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics
163            # exit-zero treats all errors as warnings.  The GitHub editor is 127 chars wide
164            - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
165          script: true
166        - os: linux
167          compiler: gcc
168          env: CONFIGURE_TARGET="linux-generic32" CONFIG_OPTS="--strict-warnings no-shared no-dso no-pic no-aria no-async no-autoload-config no-blake2 no-bf no-camellia no-cast no-chacha no-cmac no-cms no-comp no-ct no-des no-dgram no-dh no-dsa no-dtls no-ec2m no-engine no-filenames no-gost no-idea no-mdc2 no-md4 no-multiblock no-nextprotoneg no-ocsp no-ocb no-poly1305 no-psk no-rc2 no-rc4 no-rmd160 no-seed no-siphash no-sm2 no-sm3 no-sm4 no-srp no-srtp no-ssl3 no-ssl3-method no-ts no-ui-console no-whirlpool no-asm -DOPENSSL_NO_SECURE_MEMORY -DOPENSSL_SMALL_FOOTPRINT"
169    exclude:
170        - os: linux
171          compiler: clang
172        - os: osx
173          compiler: gcc
174        - arch: arm64
175          os: osx
176
177before_script:
178    - env
179    - if [ "$TRAVIS_PULL_REQUEST" != "false" -a -n "$EXTENDED_TEST" ]; then
180          (git log -1 $TRAVIS_COMMIT_RANGE | grep '\[extended tests\]' > /dev/null) || travis_terminate 0;
181      fi
182    - if [ -n "$DESTDIR" ]; then
183          sh .travis-create-release.sh $TRAVIS_OS_NAME;
184          tar -xzf _srcdist.tar.gz;
185          mkdir _build;
186          cd _build;
187          srcdir=../_srcdist;
188          top=..;
189      else
190          srcdir=.;
191          top=.;
192      fi
193    - if [ -n "$UBUNTU_GCC_HACK" ]; then
194          $CC -dumpspecs | sed "s/--push-state//g; s/--pop-state/--as-needed/g" > gcc-specs.txt;
195          CC="$CC -specs=gcc-specs.txt";
196      fi
197    - if [ "$CC" = i686-w64-mingw32-gcc ]; then
198          export CROSS_COMPILE=${CC%%gcc}; unset CC;
199          $srcdir/Configure mingw $CONFIG_OPTS -Wno-pedantic-ms-format;
200      elif [ "$CC" = x86_64-w64-mingw32-gcc ]; then
201          export CROSS_COMPILE=${CC%%gcc}; unset CC;
202          $srcdir/Configure mingw64 $CONFIG_OPTS -Wno-pedantic-ms-format;
203      else
204          if [ "$CC" = clang-3.9 ]; then
205              sudo cp .travis-apt-pin.preferences /etc/apt/preferences.d/no-ubuntu-clang;
206              curl -sSL "http://apt.llvm.org/llvm-snapshot.gpg.key" | sudo -E apt-key add -;
207              echo "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.9 main" | sudo tee -a /etc/apt/sources.list > /dev/null;
208              sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test";
209              sudo -E apt-get -yq update;
210              sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install clang-3.9;
211          elif which ccache >/dev/null; then
212              CC="ccache $CC";
213          fi;
214          if [ -n "$CONFIGURE_TARGET" ]; then
215              $srcdir/Configure $CONFIGURE_TARGET $CONFIG_OPTS;
216          else
217              $srcdir/config -v $CONFIG_OPTS;
218          fi;
219      fi
220    - ./configdata.pm --dump
221    - cd $top
222
223script:
224    - if [ -z "$BUILDONLY" ]; then
225          make="make -s";
226      else
227          make="make";
228      fi
229    - if [ -n "$GENERATE" ]; then
230          make2="$make PERL=no-perl";
231      else
232          make2="$make";
233      fi
234    - top=${PWD}
235    - if [ -n "$DESTDIR" ]; then
236          cd _build;
237      fi
238    - if $make update; then
239          echo -e '+\057 MAKE UPDATE OK';
240      else
241          echo -e '+\057 MAKE UPDATE FAILED';
242          travis_terminate 1;
243      fi
244    - git diff --exit-code
245    - if [ -n "$CHECKDOCS" ]; then
246          if $make doc-nits; then
247              echo -e '+\057\057 MAKE DOC-NITS OK';
248          else
249              echo -e '+\057\057 MAKE DOC-NITS FAILED';
250              travis_terminate 1;
251          fi;
252      fi
253    - if [ -n "$GENERATE" ]; then
254          if $make build_all_generated; then
255              echo -e '+\057\057\057 MAKE BUILD_ALL_GENERATED OK';
256          else
257              echo -e '+\057\057\057 MAKE BUILD_ALL_GENERATED FAILED';
258              travis_terminate 1;
259          fi;
260      fi
261    - if $make2; then
262          echo -e '+\057\057\057\057 MAKE OK';
263      else
264          echo -e '+\057\057\057\057 MAKE FAILED';
265          travis_terminate 1;
266      fi;
267    - if [ -z "$BUILDONLY" ]; then
268          if [ -n "$CROSS_COMPILE" ]; then
269              sudo dpkg --add-architecture i386;
270              sudo apt-get update;
271              sudo apt-get -yq --no-install-suggests --no-install-recommends --force-yes install wine;
272              export EXE_SHELL="wine" WINEPREFIX=`pwd`;
273          fi;
274          if [ -e krb5/src ]; then
275              sudo apt-get -yq install bison dejagnu gettext keyutils ldap-utils libldap2-dev libkeyutils-dev python-cjson python-paste python-pyrad slapd tcl-dev tcsh;
276          fi;
277          if HARNESS_VERBOSE=yes BORING_RUNNER_DIR=$top/boringssl/ssl/test/runner make test; then
278              echo -e '+\057\057\057\057\057 MAKE TEST OK';
279          else
280              echo -e '+\057\057\057\057\057 MAKE TEST FAILED';
281              travis_terminate 1;
282          fi;
283      else
284          if $make build_tests >~/build.log 2>&1; then
285              echo -e '+\057\057\057\057\057\057 MAKE BUILD_TESTS OK';
286          else
287              echo -e '+\057\057\057\057\057\057 MAKE BUILD_TESTS FAILED';
288              cat ~/build.log
289              travis_terminate 1;
290          fi;
291      fi
292    - if [ -n "$DESTDIR" ]; then
293          mkdir "$top/$DESTDIR";
294          if $make install DESTDIR="$top/$DESTDIR" >~/install.log 2>&1 ; then
295              echo -e '+\057\057\057\057\057\057\057 MAKE INSTALL OK';
296          else
297              echo -e '+\057\057\057\057\057\057\057 MAKE INSTALL FAILED';
298              cat ~/install.log;
299              travis_terminate 1;
300          fi;
301      fi
302    - cd $top
303
304after_success:
305    - if [ -n "$COVERALLS" ]; then
306          coveralls -b . --gcov gcov-5 --gcov-options '\-lpbc';
307      fi;
308
309notifications:
310    email:
311        secure: "xeGNgWO7aoaDgRvcZubposqMsj36aU8c6F0oHfw+rUqltCQ14IgYCUwzocmR2O+Pa7B3Cx5VjMfBFHbQaajZsfod8vu7g+aGq/zkjwbhsr/SR4dljJjFJXLGZjIalm9KgP6KInmVDuINfCqP+MHIY5lZkNI7DMcyHDhVc5nSKvCXV7xTDNgmstvh8rB/z51WfHDqGqfBtiuK5FDNxmvYK8OFJ5W94Lu9LDlizcxwK3GAj7arOui7Z5w8bQ6p4seUE3IvJL1Zbj0pZHxvNb6Zeb2Pn8QF1qLlN8YmBktD4aiw0ce4wYRiL87uLgcOxZY7SVXtv2XYFIYWapU/FKjCqa6vK93V/H9eZWEIYNMKnN3wXm2beqVdnKek3OeGJ8v0y7MbSfuLfRtBqbTSNYnpU1Zuo4MQAvHvEPuwCAYkYQajOSRplMH5sULFKptuVqNtOMfjL8jHb8AEoL1acYIk43ydxeYrzzas4fqgCDJ52573/u0RNdF1lkQBLkuM365OB8VRqtpnoxcdEIY/qBc/8TzZ24fxyrs5qdHFcxGSgpN2EP6cJMqpvkemnCNSdhxUqfzm22N7a3O8+4LFSBGOnHto/PwdsvF/01yGYL0LoZTnoO1i6x7AMJPBh+eyDU0ZjGhj/msjmqeb9C8vRqQ+1WjHrIS1iqCD0Czib8tUPD4="
312