breakpad/scripts/travis-build.sh
Lars Volker 49907e1c34 Fix Travis build by running tests as root
A recent configuration change made it necessary to run our tests on
Travis as root.

This change also increases the timeout of ParallelChildCrashesDontHang
to make it pass in Travis virtualized containers.

Bug: google-breakpad:753
Change-Id: I6ca8ff4513c6ea3e0646f22457f28b5c4fca6654
Reviewed-on: https://chromium-review.googlesource.com/890564
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2018-02-20 11:08:52 +00:00

70 lines
2 KiB
Bash
Executable file

#!/bin/bash
set -ex
setup_env() {
# Travis sets CC/CXX to the system toolchain, so our .travis.yml
# exports USE_{CC,CXX} for this script to use.
if [ -n "$USE_CC" ]; then
export CC=$USE_CC
fi
if [ -n "$USE_CXX" ]; then
export CXX=$USE_CXX
fi
# Use -jN for faster builds. Travis build machines under Docker
# have a lot of cores, but are memory-limited, so the kernel
# will OOM if we try to use them all, so use at most 4.
# See https://github.com/travis-ci/travis-ci/issues/1972
export NCPUS=$(getconf _NPROCESSORS_ONLN)
export JOBS=$(( $NCPUS < 4 ? $NCPUS : 4 ))
}
# We have to do this by hand rather than use the coverity addon because of
# matrix explosion: https://github.com/travis-ci/travis-ci/issues/1975
# We also do it by hand because when we're throttled, the addon will exit
# the build immediately and skip the main script!
coverity_scan() {
if [ "${COVERITY_SCAN}" != "true" ] || \
[ -n "${TRAVIS_TAG}" ] || \
[ "${TRAVIS_PULL_REQUEST}" = "true" ]
then
echo "Skipping coverity scan."
return
fi
export COVERITY_SCAN_PROJECT_NAME="${TRAVIS_REPO_SLUG}"
export COVERITY_SCAN_NOTIFICATION_EMAIL="google-breakpad-dev@googlegroups.com"
export COVERITY_SCAN_BUILD_COMMAND="make -j${JOBS}"
export COVERITY_SCAN_BUILD_COMMAND_PREPEND="git clean -q -x -d -f; git checkout -f; ./configure"
export COVERITY_SCAN_BRANCH_PATTERN="master"
curl -s "https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh" | bash || :
}
# Do an in-tree build and make sure tests pass.
build() {
./configure --with-tests-as-root
make -j${JOBS} check VERBOSE=1
make distclean
}
# Do an out-of-tree build and make sure we can create a release tarball.
build_out_of_tree() {
mkdir -p build/native
pushd build/native >/dev/null
../../configure --with-tests-as-root
make -j${JOBS} distcheck VERBOSE=1
popd >/dev/null
}
main() {
setup_env
build
build_out_of_tree
# Do scans last as they like to dirty the tree and some tests
# expect a clean tree (like code style checks).
coverity_scan
}
main "$@"