mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 05:03:43 +01:00
8e549dd562
Bionic has a recent coccinelle version, which passes our CI tests. But Bionic (and Xenial) cause permissions errors for chutney. We'll fix those in 32240. Part of 31919.
173 lines
6.9 KiB
YAML
173 lines
6.9 KiB
YAML
language: c
|
|
|
|
cache:
|
|
ccache: true
|
|
|
|
compiler:
|
|
- gcc
|
|
|
|
os:
|
|
- linux
|
|
|
|
## We don't use the build matrix cross-product, because it makes too many jobs
|
|
## Instead, we list each job under matrix: include:
|
|
env:
|
|
global:
|
|
## The Travis CI environment allows us two cores, so let's use both. Also,
|
|
## let's use the "-k" flag so that we get all of the compilation failures,
|
|
## not just the first one.
|
|
- MAKEFLAGS="-k -j 2"
|
|
## We turn on hardening by default
|
|
## Also known as --enable-fragile-hardening in 0.3.0.3-alpha and later
|
|
- HARDENING_OPTIONS="--enable-expensive-hardening"
|
|
## We turn off asciidoc by default, because it's slow
|
|
- ASCIIDOC_OPTIONS="--disable-asciidoc"
|
|
matrix:
|
|
## This matrix entry is required, but it doesn't actually create any jobs
|
|
-
|
|
|
|
matrix:
|
|
## include creates builds with gcc, linux, unless we override those defaults
|
|
include:
|
|
## We run basic tests on macOS
|
|
- compiler: clang
|
|
os: osx
|
|
## We run chutney on Linux, because it's faster than chutney on macOS
|
|
- env: CHUTNEY="yes" CHUTNEY_ALLOW_FAILURES="2" SKIP_MAKE_CHECK="yes"
|
|
## (Linux only) Use an older Linux image (Ubuntu Trusty)
|
|
## The Xenial and Bionic images cause permissions issues for chutney,
|
|
## this is a workaround, until we fix #32240.
|
|
dist: trusty
|
|
## We check asciidoc with distcheck, to make sure we remove doc products
|
|
## We use Linux clang, because there are no other Linux clang jobs
|
|
- env: DISTCHECK="yes" ASCIIDOC_OPTIONS="" SKIP_MAKE_CHECK="yes"
|
|
compiler: clang
|
|
## We include a single coverage build with the best options for coverage
|
|
- env: COVERAGE_OPTIONS="--enable-coverage" HARDENING_OPTIONS=""
|
|
## We run chutney on macOS, because macOS Travis has IPv6
|
|
# Disabled due to slow Travis macOS builds, see #32177
|
|
#- env: CHUTNEY="yes" CHUTNEY_ALLOW_FAILURES="2" SKIP_MAKE_CHECK="yes"
|
|
# os: osx
|
|
|
|
## Allow the build to report success (with non-required sub-builds
|
|
## continuing to run) if all required sub-builds have succeeded.
|
|
fast_finish: true
|
|
|
|
## Careful! We use global envs, which makes it hard to allow failures by env:
|
|
## https://docs.travis-ci.com/user/customizing-the-build#matching-jobs-with-allow_failures
|
|
allow_failures:
|
|
## macOS chutney is very slow, so we let the build finish before it's done
|
|
## We'd like to fast finish, but still eventually show failures.
|
|
## But Travis doesn't have that option.
|
|
- env: CHUTNEY="yes" CHUTNEY_ALLOW_FAILURES="2" SKIP_MAKE_CHECK="yes"
|
|
os: osx
|
|
|
|
## (Linux only) Use a recent Linux image (Ubuntu Bionic)
|
|
dist: bionic
|
|
|
|
## Download our dependencies
|
|
addons:
|
|
## (Linux only)
|
|
apt:
|
|
packages:
|
|
## Required dependencies
|
|
- libevent-dev
|
|
## Ubuntu comes with OpenSSL by default
|
|
#- libssl-dev
|
|
- zlib1g-dev
|
|
## Optional dependencies
|
|
- libcap-dev
|
|
- libscrypt-dev
|
|
- libseccomp-dev
|
|
## Conditional build dependencies
|
|
## Always installed, so we don't need sudo
|
|
- asciidoc
|
|
- docbook-xsl
|
|
- docbook-xml
|
|
- xmlto
|
|
## (OSX only)
|
|
homebrew:
|
|
packages:
|
|
## Required dependencies
|
|
- libevent
|
|
## The OSX version of OpenSSL is way too old
|
|
- openssl
|
|
## OSX comes with zlib by default
|
|
## to use a newer zlib, pass the keg path to configure (like OpenSSL)
|
|
#- zlib
|
|
## Optional dependencies
|
|
- libscrypt
|
|
## Required build dependencies
|
|
## Tor needs pkg-config to find some dependencies at build time
|
|
- pkg-config
|
|
## Optional build dependencies
|
|
- ccache
|
|
## Conditional build dependencies
|
|
## Always installed, because manual brew installs are hard to get right
|
|
- asciidoc
|
|
- xmlto
|
|
|
|
## (OSX only) Use the default OSX image
|
|
## See https://docs.travis-ci.com/user/reference/osx#os-x-version
|
|
## Default is Xcode 9.4 on macOS 10.13 as of August 2018
|
|
#osx_image: xcode9.4
|
|
|
|
install:
|
|
## If we're on OSX, configure ccache (ccache is automatically installed and configured on Linux)
|
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export PATH="/usr/local/opt/ccache/libexec:$PATH"; fi
|
|
## If we're on OSX, OpenSSL is keg-only, so tor 0.2.9 and later need to be configured --with-openssl-dir= to build
|
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then OPENSSL_OPTIONS=--with-openssl-dir=`brew --prefix openssl`; fi
|
|
## Install conditional features
|
|
## Install coveralls
|
|
- if [[ "$COVERAGE_OPTIONS" != "" ]]; then pip install --user cpp-coveralls; fi
|
|
## If we're on OSX, and using asciidoc, configure asciidoc
|
|
- if [[ "$ASCIIDOC_OPTIONS" == "" ]] && [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export XML_CATALOG_FILES="/usr/local/etc/xml/catalog"; fi
|
|
## If we're running chutney, install it.
|
|
- if [[ "$CHUTNEY" != "" ]]; then git clone --depth 1 https://github.com/torproject/chutney.git ; export CHUTNEY_PATH="$(pwd)/chutney"; fi
|
|
## Finally, list installed package versions
|
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then dpkg-query --show; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew list --versions; fi
|
|
## Get python version
|
|
- python --version
|
|
## If we're running chutney, show the chutney commit
|
|
- if [[ "$CHUTNEY" != "" ]]; then pushd "$CHUTNEY_PATH"; git log -1 ; popd ; fi
|
|
|
|
script:
|
|
- ./autogen.sh
|
|
- CONFIGURE_FLAGS="$ASCIIDOC_OPTIONS $COVERAGE_OPTIONS $HARDENING_OPTIONS $OPENSSL_OPTIONS --enable-fatal-warnings --disable-silent-rules"
|
|
- echo "Configure flags are $CONFIGURE_FLAGS"
|
|
- ./configure $CONFIGURE_FLAGS
|
|
## We run `make check` because that's what https://jenkins.torproject.org does.
|
|
- if [[ "$SKIP_MAKE_CHECK" == "" ]]; then make check; fi
|
|
- if [[ "$DISTCHECK" != "" ]]; then make distcheck DISTCHECK_CONFIGURE_FLAGS="$CONFIGURE_FLAGS"; fi
|
|
- if [[ "$CHUTNEY" != "" ]]; then make test-network-all; fi
|
|
## If this build was one that produced coverage, upload it.
|
|
- if [[ "$COVERAGE_OPTIONS" != "" ]]; then coveralls -b . --exclude src/test --exclude src/trunnel --gcov-options '\-p' || echo "Coverage failed"; fi
|
|
|
|
after_failure:
|
|
## configure will leave a log file with more details of config failures.
|
|
## But the log is too long for travis' rendered view, so tail it.
|
|
- tail -1000 config.log || echo "tail failed"
|
|
## `make check` will leave a log file with more details of test failures.
|
|
- if [[ "$SKIP_MAKE_CHECK" == "" ]]; then cat test-suite.log || echo "cat failed"; fi
|
|
## `make distcheck` puts it somewhere different.
|
|
- if [[ "$DISTCHECK" != "" ]]; then make show-distdir-testlog || echo "make failed"; fi
|
|
- if [[ "$CHUTNEY" != "" ]]; then ls test_network_log || echo "ls failed"; cat test_network_log/* || echo "cat failed"; fi
|
|
|
|
before_cache:
|
|
## Delete all gcov files.
|
|
- if [[ "$COVERAGE_OPTIONS" != "" ]]; then make reset-gcov; fi
|
|
|
|
notifications:
|
|
irc:
|
|
channels:
|
|
- "irc.oftc.net#tor-ci"
|
|
template:
|
|
- "%{repository} %{branch} %{commit} - %{author}: %{commit_subject}"
|
|
- "Build #%{build_number} %{result}. Details: %{build_url}"
|
|
on_success: change
|
|
on_failure: change
|
|
email:
|
|
on_success: never
|
|
on_failure: change
|