Index: third_party/protobuf/tests.sh |
diff --git a/third_party/protobuf/tests.sh b/third_party/protobuf/tests.sh |
index ce149bc95a0b7a76e2da218e6adf072b396a26fd..6a9439a5515bcc9982e4d8427d18418580bc4023 100755 |
--- a/third_party/protobuf/tests.sh |
+++ b/third_party/protobuf/tests.sh |
@@ -28,8 +28,7 @@ internal_build_cpp() { |
fi |
./autogen.sh |
- ./configure CXXFLAGS="-fPIC" # -fPIC is needed for python cpp test. |
- # See python/setup.py for more details |
+ ./configure |
make -j2 |
} |
@@ -38,50 +37,13 @@ build_cpp() { |
make check -j2 |
cd conformance && make test_cpp && cd .. |
- # The benchmark code depends on cmake, so test if it is installed before |
- # 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 |
- # Verify benchmarking code can build successfully. |
- git submodule init |
- git submodule update |
- cd third_party/benchmark && cmake -DCMAKE_BUILD_TYPE=Release && make && cd ../.. |
- cd benchmarks && make && ./generate-datasets && cd .. |
- else |
- echo "" |
- echo "WARNING: Skipping validation of the bench marking code, cmake isn't installed." |
- echo "" |
- fi |
+ # Verify benchmarking code can build successfully. |
+ cd benchmarks && make && ./generate-datasets && cd .. |
} |
build_cpp_distcheck() { |
./autogen.sh |
./configure |
- make dist |
- |
- # List all files that should be included in the distribution package. |
- git ls-files | grep "^\(java\|python\|objectivec\|csharp\|js\|ruby\|php\|cmake\|examples\)" |\ |
- grep -v ".gitignore" | grep -v "java/compatibility_tests" > dist.lst |
- # Unzip the dist tar file. |
- DIST=`ls *.tar.gz` |
- tar -xf $DIST |
- cd ${DIST//.tar.gz} |
- # Check if every file exists in the dist tar file. |
- FILES_MISSING="" |
- for FILE in $(<../dist.lst); do |
- if ! file $FILE &>/dev/null; then |
- echo "$FILE is not found!" |
- FILES_MISSING="$FILE $FILES_MISSING" |
- fi |
- done |
- cd .. |
- if [ ! -z "$FILES_MISSING" ]; then |
- echo "Missing files in EXTRA_DIST: $FILES_MISSING" |
- exit 1 |
- fi |
- |
- # Do the regular dist-check for C++. |
make distcheck -j2 |
} |
@@ -95,27 +57,15 @@ build_csharp() { |
if [ "$TRAVIS" == "true" ]; then |
# Install latest version of Mono |
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF |
- sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1397BC53640DB551 |
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list |
+ echo "deb http://download.mono-project.com/repo/debian wheezy-libtiff-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list |
sudo apt-get update -qq |
sudo apt-get install -qq mono-devel referenceassemblies-pcl nunit |
- |
- # Then install the dotnet SDK as per Ubuntu 14.04 instructions on dot.net. |
- sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list' |
- sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893 |
- sudo apt-get update -qq |
- sudo apt-get install -qq dotnet-dev-1.0.0-preview2-003121 |
+ wget www.nuget.org/NuGet.exe -O nuget.exe |
+ NUGET=../../nuget.exe |
fi |
- # Perform "dotnet new" once to get the setup preprocessing out of the |
- # way. That spews a lot of output (including backspaces) into logs |
- # otherwise, and can cause problems. It doesn't matter if this step |
- # is performed multiple times; it's cheap after the first time anyway. |
- mkdir dotnettmp |
- (cd dotnettmp; dotnet new > /dev/null) |
- rm -rf dotnettmp |
- |
- (cd csharp/src; dotnet restore) |
+ (cd csharp/src; mono $NUGET restore) |
csharp/buildall.sh |
cd conformance && make test_csharp && cd .. |
} |
@@ -127,12 +77,10 @@ build_golang() { |
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 |
- |
+ sudo apt-get update -qq |
+ sudo apt-get install -qq golang |
export GOPATH="$HOME/gocode" |
mkdir -p "$GOPATH/src/github.com/google" |
- rm -f "$GOPATH/src/github.com/google/protobuf" |
ln -s "`pwd`" "$GOPATH/src/github.com/google/protobuf" |
export PATH="$GOPATH/bin:$PATH" |
go get github.com/golang/protobuf/protoc-gen-go |
@@ -143,10 +91,13 @@ build_golang() { |
use_java() { |
version=$1 |
case "$version" in |
+ jdk6) |
+ on_travis sudo apt-get install openjdk-6-jdk |
+ export PATH=/usr/lib/jvm/java-6-openjdk-amd64/bin:$PATH |
+ ;; |
jdk7) |
on_travis sudo apt-get install openjdk-7-jdk |
export PATH=/usr/lib/jvm/java-7-openjdk-amd64/bin:$PATH |
- export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 |
;; |
oracle7) |
if [ "$TRAVIS" == "true" ]; then |
@@ -157,7 +108,6 @@ use_java() { |
yes | sudo apt-get install oracle-java7-installer |
fi; |
export PATH=/usr/lib/jvm/java-7-oracle/bin:$PATH |
- export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 |
;; |
esac |
@@ -168,7 +118,6 @@ use_java() { |
which java |
java -version |
- $MVN -version |
} |
# --batch-mode supresses download progress output that spams the logs. |
@@ -201,6 +150,10 @@ build_javanano() { |
cd javanano && $MVN test && cd .. |
} |
+build_java_jdk6() { |
+ use_java jdk6 |
+ build_java jdk6 |
+} |
build_java_jdk7() { |
use_java jdk7 |
build_java_with_conformance_tests |
@@ -209,15 +162,11 @@ build_java_oracle7() { |
use_java oracle7 |
build_java oracle7 |
} |
-build_java_compatibility() { |
- use_java jdk7 |
- internal_build_cpp |
- # Use the unit-tests extraced from 2.5.0 to test the compatibilty between |
- # 3.0.0-beta-4 and the current version. |
- cd java/compatibility_tests/v2.5.0 |
- ./test.sh 3.0.0-beta-4 |
-} |
+build_javanano_jdk6() { |
+ use_java jdk6 |
+ build_javanano |
+} |
build_javanano_jdk7() { |
use_java jdk7 |
build_javanano |
@@ -248,36 +197,59 @@ internal_install_python_deps() { |
fi |
} |
-build_objectivec_ios() { |
+internal_objectivec_common () { |
+ # Make sure xctool is up to date. Adapted from |
+ # http://docs.travis-ci.com/user/osx-ci-environment/ |
+ # We don't use a before_install because we test multiple OSes. |
+ brew update |
+ brew outdated xctool || brew upgrade xctool |
# 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 |
- # here. |
- # Note: travis has xctool installed, and we've looked at using it in the past |
- # but it has ended up proving unreliable (bugs), an they are removing build |
- # support in favor of xcbuild (or just xcodebuild). |
+ # are up to date. Xcode and conformance tests will be directly invoked. |
objectivec/DevTools/full_mac_build.sh \ |
- --core-only --skip-xcode-osx --skip-objc-conformance "$@" |
+ --core-only --skip-xcode --skip-objc-conformance |
} |
-build_objectivec_ios_debug() { |
- build_objectivec_ios --skip-xcode-release |
+internal_xctool_debug_and_release() { |
+ # Always use -reporter plain to avoid escape codes in output (makes travis |
+ # logs easier to read). |
+ xctool -reporter plain -configuration Debug "$@" |
+ xctool -reporter plain -configuration Release "$@" |
} |
-build_objectivec_ios_release() { |
- build_objectivec_ios --skip-xcode-debug |
+build_objectivec_ios() { |
+ internal_objectivec_common |
+ # https://github.com/facebook/xctool/issues/509 - unlike xcodebuild, xctool |
+ # doesn't support >1 destination, so we have to build first and then run the |
+ # tests one destination at a time. |
+ internal_xctool_debug_and_release \ |
+ -project objectivec/ProtocolBuffers_iOS.xcodeproj \ |
+ -scheme ProtocolBuffers \ |
+ -sdk iphonesimulator \ |
+ build-tests |
+ IOS_DESTINATIONS=( |
+ "platform=iOS Simulator,name=iPhone 4s,OS=8.1" # 32bit |
+ "platform=iOS Simulator,name=iPhone 6,OS=9.2" # 64bit |
+ "platform=iOS Simulator,name=iPad 2,OS=8.1" # 32bit |
+ "platform=iOS Simulator,name=iPad Air,OS=9.2" # 64bit |
+ ) |
+ for i in "${IOS_DESTINATIONS[@]}" ; do |
+ internal_xctool_debug_and_release \ |
+ -project objectivec/ProtocolBuffers_iOS.xcodeproj \ |
+ -scheme ProtocolBuffers \ |
+ -sdk iphonesimulator \ |
+ -destination "${i}" \ |
+ run-tests |
+ done |
} |
build_objectivec_osx() { |
- # Reused the build script that takes care of configuring and ensuring things |
- # are up to date. |
- objectivec/DevTools/full_mac_build.sh \ |
- --core-only --skip-xcode-ios |
-} |
- |
-build_objectivec_cocoapods_integration() { |
- # Update pod to the latest version. |
- gem install cocoapods --no-ri --no-rdoc |
- objectivec/Tests/CocoaPods/run_tests.sh |
+ internal_objectivec_common |
+ internal_xctool_debug_and_release \ |
+ -project objectivec/ProtocolBuffers_OSX.xcodeproj \ |
+ -scheme ProtocolBuffers \ |
+ -destination "platform=OS X,arch=x86_64" \ |
+ test |
+ cd conformance && make test_objc && cd .. |
} |
build_python() { |
@@ -311,6 +283,14 @@ build_python_cpp() { |
cd .. |
} |
+build_ruby19() { |
+ internal_build_cpp # For conformance tests. |
+ cd ruby && bash travis-test.sh ruby-1.9 && cd .. |
+} |
+build_ruby20() { |
+ internal_build_cpp # For conformance tests. |
+ cd ruby && bash travis-test.sh ruby-2.0 && cd .. |
+} |
build_ruby21() { |
internal_build_cpp # For conformance tests. |
cd ruby && bash travis-test.sh ruby-2.1 && cd .. |
@@ -321,16 +301,7 @@ build_ruby22() { |
} |
build_jruby() { |
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 .. |
-} |
-build_ruby_all() { |
- build_ruby21 |
- 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 |
+ cd ruby && bash travis-test.sh jruby && cd .. |
} |
build_javascript() { |
@@ -338,154 +309,6 @@ build_javascript() { |
cd js && npm install && npm test && cd .. |
} |
-generate_php_test_proto() { |
- internal_build_cpp |
- pushd php/tests |
- # Generate test file |
- rm -rf generated |
- mkdir generated |
- ../../src/protoc --php_out=generated proto/test.proto proto/test_include.proto proto/test_no_namespace.proto |
- pushd ../../src |
- ./protoc --php_out=../php/tests/generated google/protobuf/empty.proto |
- popd |
- popd |
-} |
- |
-use_php() { |
- VERSION=$1 |
- PHP=`which php` |
- PHP_CONFIG=`which php-config` |
- PHPIZE=`which phpize` |
- rm $PHP |
- rm $PHP_CONFIG |
- rm $PHPIZE |
- cp "/usr/bin/php$VERSION" $PHP |
- cp "/usr/bin/php-config$VERSION" $PHP_CONFIG |
- cp "/usr/bin/phpize$VERSION" $PHPIZE |
- generate_php_test_proto |
-} |
- |
-use_php_zts() { |
- VERSION=$1 |
- PHP=`which php` |
- PHP_CONFIG=`which php-config` |
- PHPIZE=`which phpize` |
- ln -sfn "/usr/local/php-${VERSION}-zts/bin/php" $PHP |
- ln -sfn "/usr/local/php-${VERSION}-zts/bin/php-config" $PHP_CONFIG |
- ln -sfn "/usr/local/php-${VERSION}-zts/bin/phpize" $PHPIZE |
- generate_php_test_proto |
-} |
- |
-use_php_bc() { |
- VERSION=$1 |
- PHP=`which php` |
- PHP_CONFIG=`which php-config` |
- PHPIZE=`which phpize` |
- ln -sfn "/usr/local/php-${VERSION}-bc/bin/php" $PHP |
- ln -sfn "/usr/local/php-${VERSION}-bc/bin/php-config" $PHP_CONFIG |
- ln -sfn "/usr/local/php-${VERSION}-bc/bin/phpize" $PHPIZE |
- generate_php_test_proto |
-} |
- |
-build_php5.5() { |
- use_php 5.5 |
- pushd php |
- rm -rf vendor |
- cp -r /usr/local/vendor-5.5 vendor |
- ./vendor/bin/phpunit |
- popd |
-} |
- |
-build_php5.5_c() { |
- use_php 5.5 |
- cd php/tests && /bin/bash ./test.sh && cd ../.. |
-} |
- |
-build_php5.5_zts_c() { |
- use_php_zts 5.5 |
- wget https://phar.phpunit.de/phpunit-old.phar -O /usr/bin/phpunit |
- cd php/tests && /bin/bash ./test.sh && cd ../.. |
-} |
- |
-build_php5.5_32() { |
- use_php_bc 5.5 |
- pushd php |
- rm -rf vendor |
- cp -r /usr/local/vendor-5.5 vendor |
- ./vendor/bin/phpunit |
- popd |
-} |
- |
-build_php5.5_c_32() { |
- use_php_bc 5.5 |
- wget https://phar.phpunit.de/phpunit-old.phar -O /usr/bin/phpunit |
- cd php/tests && /bin/bash ./test.sh && cd ../.. |
-} |
- |
-build_php5.6() { |
- use_php 5.6 |
- pushd php |
- rm -rf vendor |
- cp -r /usr/local/vendor-5.6 vendor |
- ./vendor/bin/phpunit |
- popd |
-} |
- |
-build_php5.6_c() { |
- use_php 5.6 |
- cd php/tests && /bin/bash ./test.sh && cd ../.. |
-} |
- |
-build_php5.6_mac() { |
- generate_php_test_proto |
- # Install PHP |
- curl -s https://php-osx.liip.ch/install.sh | bash -s 5.6 |
- PHP_FOLDER=`find /usr/local -type d -name "php5-5.6*"` # The folder name may change upon time |
- export PATH="$PHP_FOLDER/bin:$PATH" |
- |
- # Install phpunit |
- curl https://phar.phpunit.de/phpunit.phar -L -o phpunit.phar |
- chmod +x phpunit.phar |
- sudo mv phpunit.phar /usr/local/bin/phpunit |
- |
- # Install valgrind |
- echo "#! /bin/bash" > valgrind |
- chmod ug+x valgrind |
- sudo mv valgrind /usr/local/bin/valgrind |
- |
- # Test |
- cd php/tests && /bin/bash ./test.sh && cd ../.. |
-} |
- |
-build_php7.0() { |
- use_php 7.0 |
- pushd php |
- rm -rf vendor |
- cp -r /usr/local/vendor-7.0 vendor |
- ./vendor/bin/phpunit |
- popd |
-} |
- |
-build_php7.0_c() { |
- use_php 7.0 |
- cd php/tests && /bin/bash ./test.sh && cd ../.. |
-} |
- |
-build_php_all() { |
- build_php5.5 |
- build_php5.6 |
- build_php7.0 |
- build_php5.5_c |
- build_php5.6_c |
- # build_php7.0_c |
- build_php5.5_zts_c |
-} |
- |
-build_php_all_32() { |
- build_php5.5_32 |
- build_php5.5_c_32 |
-} |
- |
# 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 |
@@ -499,31 +322,22 @@ build_php_all_32() { |
if [ "$#" -ne 1 ]; then |
echo " |
Usage: $0 { cpp | |
- cpp_distcheck | |
csharp | |
+ java_jdk6 | |
java_jdk7 | |
java_oracle7 | |
- java_compatibility | |
+ javanano_jdk6 | |
javanano_jdk7 | |
javanano_oracle7 | |
objectivec_ios | |
- objectivec_ios_debug | |
- objectivec_ios_release | |
objectivec_osx | |
- objectivec_cocoapods_integration | |
python | |
python_cpp | |
+ ruby19 | |
+ ruby20 | |
ruby21 | |
ruby22 | |
- jruby | |
- ruby_all | |
- php5.5 | |
- php5.5_c | |
- php5.6 | |
- php5.6_c | |
- php7.0 | |
- php7.0_c | |
- php_all) |
+ jruby } |
" |
exit 1 |
fi |