parent
d6e466e943
commit
985145ca16
9 changed files with 120 additions and 229 deletions
@ -1,196 +0,0 @@ |
||||
#!/bin/bash |
||||
|
||||
install_protoc() { |
||||
sudo apt-get install protobuf-compiler |
||||
protoc --version || true |
||||
} |
||||
|
||||
# Bare build: no dependencies installed, no JIT enabled. |
||||
bare_install() { |
||||
: |
||||
} |
||||
bare_script() { |
||||
make -j12 tests |
||||
make test |
||||
} |
||||
|
||||
# Bare JIT build: no dependencies installed, but JIT enabled. |
||||
barejit_install() { |
||||
: |
||||
} |
||||
barejit_script() { |
||||
make -j12 tests WITH_JIT=yes |
||||
make test |
||||
} |
||||
|
||||
# Build with strict warnings. |
||||
warnings_install() { |
||||
: |
||||
} |
||||
warnings_script() { |
||||
make -j12 default WITH_MAX_WARNINGS=yes |
||||
make -j12 tests WITH_MAX_WARNINGS=yes |
||||
make test |
||||
} |
||||
|
||||
# A 32-bit build. Can only test the core because any dependencies |
||||
# need to be available as 32-bit libs also, which gets hairy fast. |
||||
# Can't enable the JIT because it only supports x64. |
||||
core32_install() { |
||||
sudo apt-get update -qq |
||||
sudo apt-get install libc6-dev-i386 g++-multilib |
||||
} |
||||
core32_script() { |
||||
make -j12 tests USER_CPPFLAGS="$USER_CPPFLAGS -m32" |
||||
make test |
||||
} |
||||
|
||||
# A build of Lua and running of Lua tests. |
||||
lua_install() { |
||||
sudo apt-get update -qq |
||||
sudo apt-get install lua5.2 liblua5.2-dev |
||||
} |
||||
lua_script() { |
||||
make -j12 testlua USER_CPPFLAGS="$USER_CPPFLAGS `pkg-config lua5.2 --cflags`" |
||||
} |
||||
|
||||
# Test that generated files don't need to be regenerated. |
||||
# |
||||
# We would include the Ragel output here too, but we can't really guarantee |
||||
# that its output will be stable for multiple versions of the tool, and we |
||||
# don't want the test to be brittle. |
||||
genfiles_install() { |
||||
sudo apt-get update -qq |
||||
sudo apt-get install lua5.2 liblua5.2-dev |
||||
|
||||
# Need a recent version of protoc to compile proto3 files. |
||||
# .travis.yml will add this to our path |
||||
mkdir protoc |
||||
cd protoc |
||||
wget https://github.com/google/protobuf/releases/download/v3.0.0-beta-2/protoc-3.0.0-beta-2-linux-x86_64.zip |
||||
unzip protoc-3.0.0-beta-2-linux-x86_64.zip |
||||
cd .. |
||||
} |
||||
genfiles_script() { |
||||
protoc --version || true |
||||
|
||||
# Avoid regenerating descriptor.pb, since its output can vary based on the |
||||
# version of protoc. |
||||
touch upb/descriptor/descriptor.pb |
||||
|
||||
make -j12 genfiles USER_CPPFLAGS="$USER_CPPFLAGS `pkg-config lua5.2 --cflags`" |
||||
# Will fail if any differences were observed. |
||||
git diff --exit-code |
||||
} |
||||
|
||||
# Tests the ndebug build. |
||||
ndebug_install() { |
||||
sudo apt-get update -qq |
||||
sudo apt-get install lua5.2 liblua5.2-dev libprotobuf-dev |
||||
install_protoc |
||||
} |
||||
ndebug_script() { |
||||
# Override of USER_CPPFLAGS removes -UNDEBUG. |
||||
export USER_CPPFLAGS="`pkg-config lua5.2 --cflags` -g -fomit-frame-pointer" |
||||
make -j12 tests testlua WITH_JIT=yes |
||||
make test |
||||
} |
||||
|
||||
# Tests the amalgamated build (this ensures that the different .c files |
||||
# don't have symbols or macros that conflict with each other. |
||||
amalgamated_install() { |
||||
: |
||||
} |
||||
amalgamated_script() { |
||||
# Override of USER_CPPFLAGS removes -UNDEBUG. |
||||
export USER_CPPFLAGS="-UNDEBUG" |
||||
make amalgamated |
||||
} |
||||
|
||||
# A run that executes with coverage support and uploads to coveralls.io |
||||
coverage_install() { |
||||
sudo apt-get update -qq |
||||
sudo apt-get install libprotobuf-dev lua5.2 liblua5.2-dev |
||||
install_protoc |
||||
sudo pip install cpp-coveralls |
||||
} |
||||
coverage_script() { |
||||
export USER_CPPFLAGS="--coverage -O0 `pkg-config lua5.2 --cflags`" |
||||
make -j12 tests testlua WITH_JIT=yes |
||||
make test |
||||
} |
||||
coverage_after_success() { |
||||
coveralls --exclude dynasm --exclude tests --exclude upb/bindings/linux --gcov-options '\-lp' |
||||
} |
||||
|
||||
set -e |
||||
set -x |
||||
|
||||
if [ "$1" == "local" ]; then |
||||
run_config() { |
||||
make clean |
||||
echo |
||||
echo "travis.sh: TESTING CONFIGURATION $1 ===============================" |
||||
echo |
||||
UPB_TRAVIS_BUILD=$1 ./travis.sh script |
||||
} |
||||
# Run all configurations serially locally to test before pushing a pull |
||||
# request. |
||||
export CC=gcc |
||||
export CXX=g++ |
||||
run_config "bare" |
||||
run_config "barejit" |
||||
run_config "core32" |
||||
run_config "lua" |
||||
run_config "ndebug" |
||||
run_config "genfiles" |
||||
run_config "amalgamated" |
||||
exit |
||||
fi |
||||
|
||||
$CC --version |
||||
$CXX --version |
||||
|
||||
# Uncomment to enable uploading failure logs to S3. |
||||
# UPLOAD_TO_S3=true |
||||
|
||||
if [ "$1" == "after_failure" ] && [ "$UPLOAD_TO_S3" == "true" ]; then |
||||
# Upload failing tree to S3. |
||||
curl -sL https://raw.githubusercontent.com/travis-ci/artifacts/master/install | bash |
||||
PATH="$PATH:$HOME/bin" |
||||
export ARTIFACTS_BUCKET=haberman-upb-travis-artifacts2 |
||||
ARCHIVE=failing-artifacts.tar.gz |
||||
tar zcvf $ARCHIVE $(git ls-files -o) |
||||
artifacts upload $ARCHIVE |
||||
exit |
||||
fi |
||||
|
||||
if [ "$1" == "after_success" ] && [ "$UPB_TRAVIS_BUILD" != "coverage" ]; then |
||||
# after_success is only used for coverage. |
||||
exit |
||||
fi |
||||
|
||||
if [ "$CC" != "gcc" ] && [ "$UPB_TRAVIS_BUILD" == "coverage" ]; then |
||||
# coverage build only works for GCC. |
||||
exit |
||||
fi |
||||
|
||||
# Enable asserts and ref debugging (though some configurations override this). |
||||
export USER_CPPFLAGS="-UNDEBUG -DUPB_DEBUG_REFS -DUPB_THREAD_UNSAFE -DUPB_DEBUG_TABLE -g" |
||||
|
||||
if [ "$CC" == "gcc" ]; then |
||||
# For the GCC build test loading JIT code via SO. For the Clang build test |
||||
# loading it in the normal way. |
||||
export USER_CPPFLAGS="$USER_CPPFLAGS -DUPB_JIT_LOAD_SO" |
||||
fi |
||||
|
||||
# TODO(haberman): Test UPB_DUMP_BYTECODE? We don't right now because it is so |
||||
# noisy. |
||||
|
||||
# Enable verbose build. |
||||
export Q= |
||||
|
||||
# Make any compiler warning fail the build. |
||||
export UPB_FAIL_WARNINGS=true |
||||
|
||||
eval ${UPB_TRAVIS_BUILD}_${1} |
Loading…
Reference in new issue