|
@@ -1,14 +1,8 @@
|
|
#!/bin/bash
|
|
#!/bin/bash
|
|
#
|
|
#
|
|
-# Build and runs tests for the protobuf project. The tests as written here are
|
|
|
|
-# used by both Jenkins and Travis, though some specialized logic is required to
|
|
|
|
-# handle the differences between them.
|
|
|
|
-
|
|
|
|
-on_travis() {
|
|
|
|
- if [ "$TRAVIS" == "true" ]; then
|
|
|
|
- "$@"
|
|
|
|
- fi
|
|
|
|
-}
|
|
|
|
|
|
+# Build and runs tests for the protobuf project. We use this script to run
|
|
|
|
+# tests on kokoro (Ubuntu and MacOS). It can run locally as well but you
|
|
|
|
+# will need to make sure the required compilers/tools are available.
|
|
|
|
|
|
# For when some other test needs the C++ main build, including protoc and
|
|
# For when some other test needs the C++ main build, including protoc and
|
|
# libprotobuf.
|
|
# libprotobuf.
|
|
@@ -18,15 +12,6 @@ internal_build_cpp() {
|
|
return
|
|
return
|
|
fi
|
|
fi
|
|
|
|
|
|
- if [[ $(uname -s) == "Linux" && "$TRAVIS" == "true" ]]; then
|
|
|
|
- # Install GCC 4.8 to replace the default GCC 4.6. We need 4.8 for more
|
|
|
|
- # decent C++ 11 support in order to compile conformance tests.
|
|
|
|
- sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
|
|
|
|
- sudo apt-get update -qq
|
|
|
|
- sudo apt-get install -qq g++-4.8
|
|
|
|
- export CXX="g++-4.8" CC="gcc-4.8"
|
|
|
|
- fi
|
|
|
|
-
|
|
|
|
# Initialize any submodules.
|
|
# Initialize any submodules.
|
|
git submodule update --init --recursive
|
|
git submodule update --init --recursive
|
|
|
|
|
|
@@ -43,8 +28,6 @@ build_cpp() {
|
|
|
|
|
|
# The benchmark code depends on cmake, so test if it is installed before
|
|
# The benchmark code depends on cmake, so test if it is installed before
|
|
# trying to do the build.
|
|
# trying to do the build.
|
|
- # NOTE: The travis macOS images say they have cmake, but the xcode8.1 image
|
|
|
|
- # appears to be missing it: https://github.com/travis-ci/travis-ci/issues/6996
|
|
|
|
if [[ $(type cmake 2>/dev/null) ]]; then
|
|
if [[ $(type cmake 2>/dev/null) ]]; then
|
|
# Verify benchmarking code can build successfully.
|
|
# Verify benchmarking code can build successfully.
|
|
cd benchmarks && make cpp-benchmark && cd ..
|
|
cd benchmarks && make cpp-benchmark && cd ..
|
|
@@ -121,10 +104,6 @@ build_golang() {
|
|
# Add protoc to the path so that the examples build finds it.
|
|
# Add protoc to the path so that the examples build finds it.
|
|
export PATH="`pwd`/src:$PATH"
|
|
export PATH="`pwd`/src:$PATH"
|
|
|
|
|
|
- # Install Go and the Go protobuf compiler plugin.
|
|
|
|
- on_travis sudo apt-get update -qq
|
|
|
|
- on_travis sudo apt-get install -qq golang
|
|
|
|
-
|
|
|
|
export GOPATH="$HOME/gocode"
|
|
export GOPATH="$HOME/gocode"
|
|
mkdir -p "$GOPATH/src/github.com/google"
|
|
mkdir -p "$GOPATH/src/github.com/google"
|
|
rm -f "$GOPATH/src/github.com/google/protobuf"
|
|
rm -f "$GOPATH/src/github.com/google/protobuf"
|
|
@@ -139,27 +118,17 @@ use_java() {
|
|
version=$1
|
|
version=$1
|
|
case "$version" in
|
|
case "$version" in
|
|
jdk7)
|
|
jdk7)
|
|
- on_travis sudo apt-get install openjdk-7-jdk
|
|
|
|
export PATH=/usr/lib/jvm/java-7-openjdk-amd64/bin:$PATH
|
|
export PATH=/usr/lib/jvm/java-7-openjdk-amd64/bin:$PATH
|
|
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
|
|
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
|
|
;;
|
|
;;
|
|
oracle7)
|
|
oracle7)
|
|
- if [ "$TRAVIS" == "true" ]; then
|
|
|
|
- sudo apt-get install python-software-properties # for apt-add-repository
|
|
|
|
- echo "oracle-java7-installer shared/accepted-oracle-license-v1-1 select true" | \
|
|
|
|
- sudo debconf-set-selections
|
|
|
|
- yes | sudo apt-add-repository ppa:webupd8team/java
|
|
|
|
- yes | sudo apt-get install oracle-java7-installer
|
|
|
|
- fi;
|
|
|
|
export PATH=/usr/lib/jvm/java-7-oracle/bin:$PATH
|
|
export PATH=/usr/lib/jvm/java-7-oracle/bin:$PATH
|
|
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
|
|
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
|
|
;;
|
|
;;
|
|
esac
|
|
esac
|
|
|
|
|
|
- if [ "$TRAVIS" != "true" ]; then
|
|
|
|
- MAVEN_LOCAL_REPOSITORY=/var/maven_local_repository
|
|
|
|
- MVN="$MVN -e -X --offline -Dmaven.repo.local=$MAVEN_LOCAL_REPOSITORY"
|
|
|
|
- fi;
|
|
|
|
|
|
+ MAVEN_LOCAL_REPOSITORY=/var/maven_local_repository
|
|
|
|
+ MVN="$MVN -e -X --offline -Dmaven.repo.local=$MAVEN_LOCAL_REPOSITORY"
|
|
|
|
|
|
which java
|
|
which java
|
|
java -version
|
|
java -version
|
|
@@ -190,12 +159,6 @@ build_java_with_conformance_tests() {
|
|
cd conformance && make test_java && cd ..
|
|
cd conformance && make test_java && cd ..
|
|
}
|
|
}
|
|
|
|
|
|
-build_javanano() {
|
|
|
|
- # Java build needs `protoc`.
|
|
|
|
- internal_build_cpp
|
|
|
|
- cd javanano && $MVN test && cd ..
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
build_java_jdk7() {
|
|
build_java_jdk7() {
|
|
use_java jdk7
|
|
use_java jdk7
|
|
build_java_with_conformance_tests
|
|
build_java_with_conformance_tests
|
|
@@ -213,38 +176,6 @@ build_java_compatibility() {
|
|
./test.sh 3.0.0-beta-4
|
|
./test.sh 3.0.0-beta-4
|
|
}
|
|
}
|
|
|
|
|
|
-build_javanano_jdk7() {
|
|
|
|
- use_java jdk7
|
|
|
|
- build_javanano
|
|
|
|
-}
|
|
|
|
-build_javanano_oracle7() {
|
|
|
|
- use_java oracle7
|
|
|
|
- build_javanano
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-internal_install_python_deps() {
|
|
|
|
- if [ "$TRAVIS" != "true" ]; then
|
|
|
|
- return;
|
|
|
|
- fi
|
|
|
|
- # Install tox (OS X doesn't have pip).
|
|
|
|
- if [ $(uname -s) == "Darwin" ]; then
|
|
|
|
- brew upgrade python
|
|
|
|
- python3 -m pip install tox
|
|
|
|
- else
|
|
|
|
- sudo pip install tox
|
|
|
|
- fi
|
|
|
|
- # Only install Python2.6/3.x on Linux.
|
|
|
|
- if [ $(uname -s) == "Linux" ]; then
|
|
|
|
- sudo apt-get install -y python-software-properties # for apt-add-repository
|
|
|
|
- sudo apt-add-repository -y ppa:fkrull/deadsnakes
|
|
|
|
- sudo apt-get update -qq
|
|
|
|
- sudo apt-get install -y python3.3 python3.3-dev
|
|
|
|
- sudo apt-get install -y python3.4 python3.4-dev
|
|
|
|
- sudo apt-get install -y python3.5 python3.5-dev
|
|
|
|
- sudo apt-get install -y python3.6 python3.6-dev
|
|
|
|
- fi
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
build_objectivec_ios() {
|
|
build_objectivec_ios() {
|
|
# Reused the build script that takes care of configuring and ensuring things
|
|
# Reused the build script that takes care of configuring and ensuring things
|
|
# are up to date. The OS X test runs the objc conformance test, so skip it
|
|
# are up to date. The OS X test runs the objc conformance test, so skip it
|
|
@@ -279,9 +210,7 @@ build_objectivec_cocoapods_integration() {
|
|
|
|
|
|
build_python() {
|
|
build_python() {
|
|
internal_build_cpp
|
|
internal_build_cpp
|
|
- internal_install_python_deps
|
|
|
|
cd python
|
|
cd python
|
|
- # Only test Python 2.6/3.x on Linux
|
|
|
|
if [ $(uname -s) == "Linux" ]; then
|
|
if [ $(uname -s) == "Linux" ]; then
|
|
envlist=py\{27,33,34,35,36\}-python
|
|
envlist=py\{27,33,34,35,36\}-python
|
|
else
|
|
else
|
|
@@ -293,11 +222,9 @@ build_python() {
|
|
|
|
|
|
build_python_cpp() {
|
|
build_python_cpp() {
|
|
internal_build_cpp
|
|
internal_build_cpp
|
|
- internal_install_python_deps
|
|
|
|
export LD_LIBRARY_PATH=../src/.libs # for Linux
|
|
export LD_LIBRARY_PATH=../src/.libs # for Linux
|
|
export DYLD_LIBRARY_PATH=../src/.libs # for OS X
|
|
export DYLD_LIBRARY_PATH=../src/.libs # for OS X
|
|
cd python
|
|
cd python
|
|
- # Only test Python 3.x on Linux
|
|
|
|
if [ $(uname -s) == "Linux" ]; then
|
|
if [ $(uname -s) == "Linux" ]; then
|
|
envlist=py\{27,33,34,35,36\}-cpp
|
|
envlist=py\{27,33,34,35,36\}-cpp
|
|
else
|
|
else
|
|
@@ -325,18 +252,24 @@ build_ruby22() {
|
|
internal_build_cpp # For conformance tests.
|
|
internal_build_cpp # For conformance tests.
|
|
cd ruby && bash travis-test.sh ruby-2.2 && cd ..
|
|
cd ruby && bash travis-test.sh ruby-2.2 && cd ..
|
|
}
|
|
}
|
|
-build_jruby() {
|
|
|
|
|
|
+build_ruby23() {
|
|
|
|
+ internal_build_cpp # For conformance tests.
|
|
|
|
+ cd ruby && bash travis-test.sh ruby-2.3 && cd ..
|
|
|
|
+}
|
|
|
|
+build_ruby24() {
|
|
internal_build_cpp # For conformance tests.
|
|
internal_build_cpp # For conformance tests.
|
|
- # TODO(xiaofeng): Upgrade to jruby-9.x. There are some broken jests to be
|
|
|
|
- # fixed.
|
|
|
|
- cd ruby && bash travis-test.sh jruby-1.7 && cd ..
|
|
|
|
|
|
+ cd ruby && bash travis-test.sh ruby-2.4 && cd ..
|
|
|
|
+}
|
|
|
|
+build_ruby25() {
|
|
|
|
+ internal_build_cpp # For conformance tests.
|
|
|
|
+ cd ruby && bash travis-test.sh ruby-2.5.0 && cd ..
|
|
}
|
|
}
|
|
build_ruby_all() {
|
|
build_ruby_all() {
|
|
build_ruby21
|
|
build_ruby21
|
|
build_ruby22
|
|
build_ruby22
|
|
- # TODO(teboring): Disable jruby test temperarily for it randomly fails.
|
|
|
|
- # https://grpc-testing.appspot.com/job/protobuf_pull_request/735/consoleFull.
|
|
|
|
- # build_jruby
|
|
|
|
|
|
+ build_ruby23
|
|
|
|
+ build_ruby24
|
|
|
|
+ build_ruby25
|
|
}
|
|
}
|
|
|
|
|
|
build_javascript() {
|
|
build_javascript() {
|
|
@@ -617,14 +550,6 @@ build_php_all() {
|
|
build_php_compatibility
|
|
build_php_compatibility
|
|
}
|
|
}
|
|
|
|
|
|
-# Note: travis currently does not support testing more than one language so the
|
|
|
|
-# .travis.yml cheats and claims to only be cpp. If they add multiple language
|
|
|
|
-# support, this should probably get updated to install steps and/or
|
|
|
|
-# rvm/gemfile/jdk/etc. entries rather than manually doing the work.
|
|
|
|
-
|
|
|
|
-# .travis.yml uses matrix.exclude to block the cases where app-get can't be
|
|
|
|
-# use to install things.
|
|
|
|
-
|
|
|
|
# -------- main --------
|
|
# -------- main --------
|
|
|
|
|
|
if [ "$#" -ne 1 ]; then
|
|
if [ "$#" -ne 1 ]; then
|
|
@@ -635,8 +560,6 @@ Usage: $0 { cpp |
|
|
java_jdk7 |
|
|
java_jdk7 |
|
|
java_oracle7 |
|
|
java_oracle7 |
|
|
java_compatibility |
|
|
java_compatibility |
|
|
- javanano_jdk7 |
|
|
|
|
- javanano_oracle7 |
|
|
|
|
objectivec_ios |
|
|
objectivec_ios |
|
|
objectivec_ios_debug |
|
|
objectivec_ios_debug |
|
|
objectivec_ios_release |
|
|
objectivec_ios_release |
|
|
@@ -665,4 +588,5 @@ fi
|
|
|
|
|
|
set -e # exit immediately on error
|
|
set -e # exit immediately on error
|
|
set -x # display all commands
|
|
set -x # display all commands
|
|
|
|
+cd $(dirname $0)
|
|
eval "build_$1"
|
|
eval "build_$1"
|