|  | @@ -0,0 +1,152 @@
 | 
	
		
			
				|  |  | +#!/bin/bash
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +build_cpp() {
 | 
	
		
			
				|  |  | +  ./autogen.sh
 | 
	
		
			
				|  |  | +  ./configure
 | 
	
		
			
				|  |  | +  make -j2
 | 
	
		
			
				|  |  | +  make check -j2
 | 
	
		
			
				|  |  | +  cd conformance && make test_cpp && cd ..
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +build_cpp_distcheck() {
 | 
	
		
			
				|  |  | +  ./autogen.sh
 | 
	
		
			
				|  |  | +  ./configure
 | 
	
		
			
				|  |  | +  make distcheck -j2
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +use_java() {
 | 
	
		
			
				|  |  | +  if [ `uname` != "Linux" ]; then
 | 
	
		
			
				|  |  | +    # It's nontrivial to programmatically install a new JDK from the command
 | 
	
		
			
				|  |  | +    # line on OS X, so we rely on testing on Linux for Java code.
 | 
	
		
			
				|  |  | +    echo "Java not tested on OS X."
 | 
	
		
			
				|  |  | +    exit 0  # success
 | 
	
		
			
				|  |  | +  fi
 | 
	
		
			
				|  |  | +  version=$1
 | 
	
		
			
				|  |  | +  case "$version" in
 | 
	
		
			
				|  |  | +    jdk6)
 | 
	
		
			
				|  |  | +      sudo apt-get install openjdk-6-jdk
 | 
	
		
			
				|  |  | +      export PATH=/usr/lib/jvm/java-6-openjdk-amd64/bin:$PATH
 | 
	
		
			
				|  |  | +      ;;
 | 
	
		
			
				|  |  | +    jdk7)
 | 
	
		
			
				|  |  | +      sudo apt-get install openjdk-7-jdk
 | 
	
		
			
				|  |  | +      export PATH=/usr/lib/jvm/java-7-openjdk-amd64/bin:$PATH
 | 
	
		
			
				|  |  | +      ;;
 | 
	
		
			
				|  |  | +    oracle7)
 | 
	
		
			
				|  |  | +      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
 | 
	
		
			
				|  |  | +      export PATH=/usr/lib/jvm/java-7-oracle/bin:$PATH
 | 
	
		
			
				|  |  | +      ;;
 | 
	
		
			
				|  |  | +  esac
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  which java
 | 
	
		
			
				|  |  | +  java -version
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +build_java() {
 | 
	
		
			
				|  |  | +  # Java build needs `protoc`.
 | 
	
		
			
				|  |  | +  ./autogen.sh
 | 
	
		
			
				|  |  | +  ./configure
 | 
	
		
			
				|  |  | +  make -j2
 | 
	
		
			
				|  |  | +  cd java && mvn test && cd ..
 | 
	
		
			
				|  |  | +  cd conformance && make test_java && cd ..
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +build_javanano() {
 | 
	
		
			
				|  |  | +  # Java build needs `protoc`.
 | 
	
		
			
				|  |  | +  ./autogen.sh
 | 
	
		
			
				|  |  | +  ./configure
 | 
	
		
			
				|  |  | +  make -j2
 | 
	
		
			
				|  |  | +  cd javanano && mvn test && cd ..
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +build_java_jdk6() {
 | 
	
		
			
				|  |  | +  use_java jdk6
 | 
	
		
			
				|  |  | +  build_java
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +build_java_jdk7() {
 | 
	
		
			
				|  |  | +  use_java jdk7
 | 
	
		
			
				|  |  | +  build_java
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +build_java_oracle7() {
 | 
	
		
			
				|  |  | +  use_java oracle7
 | 
	
		
			
				|  |  | +  build_java
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +build_javanano_jdk6() {
 | 
	
		
			
				|  |  | +  use_java jdk6
 | 
	
		
			
				|  |  | +  build_javanano
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +build_javanano_jdk7() {
 | 
	
		
			
				|  |  | +  use_java jdk7
 | 
	
		
			
				|  |  | +  build_javanano
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +build_javanano_oracle7() {
 | 
	
		
			
				|  |  | +  use_java oracle7
 | 
	
		
			
				|  |  | +  build_javanano
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +build_python() {
 | 
	
		
			
				|  |  | +  ./autogen.sh
 | 
	
		
			
				|  |  | +  ./configure
 | 
	
		
			
				|  |  | +  make -j2
 | 
	
		
			
				|  |  | +  cd python
 | 
	
		
			
				|  |  | +  python setup.py build
 | 
	
		
			
				|  |  | +  python setup.py test
 | 
	
		
			
				|  |  | +  cd ..
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +build_python_cpp() {
 | 
	
		
			
				|  |  | +  ./autogen.sh
 | 
	
		
			
				|  |  | +  ./configure
 | 
	
		
			
				|  |  | +  make -j2
 | 
	
		
			
				|  |  | +  export LD_LIBRARY_PATH=../src/.libs
 | 
	
		
			
				|  |  | +  cd python
 | 
	
		
			
				|  |  | +  python setup.py build --cpp_implementation
 | 
	
		
			
				|  |  | +  python setup.py test --cpp_implementation
 | 
	
		
			
				|  |  | +  cd ..
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +build_ruby19() {
 | 
	
		
			
				|  |  | +  cd ruby && bash travis-test.sh ruby-1.9 && cd ..
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +build_ruby20() {
 | 
	
		
			
				|  |  | +  cd ruby && bash travis-test.sh ruby-2.0 && cd ..
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +build_ruby21() {
 | 
	
		
			
				|  |  | +  cd ruby && bash travis-test.sh ruby-2.1 && cd ..
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +build_ruby22() {
 | 
	
		
			
				|  |  | +  cd ruby && bash travis-test.sh ruby-2.2 && cd ..
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +build_jruby() {
 | 
	
		
			
				|  |  | +  cd ruby && bash travis-test.sh jruby && cd ..
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# -------- main --------
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if [ "$#" -ne 1 ]; then
 | 
	
		
			
				|  |  | +  echo "
 | 
	
		
			
				|  |  | +Usage: $0 { cpp |
 | 
	
		
			
				|  |  | +            java_jdk6 |
 | 
	
		
			
				|  |  | +            java_jdk7 |
 | 
	
		
			
				|  |  | +            java_oracle7 |
 | 
	
		
			
				|  |  | +            javanano_jdk6 |
 | 
	
		
			
				|  |  | +            javanano_jdk7 |
 | 
	
		
			
				|  |  | +            javanano_oracle7 |
 | 
	
		
			
				|  |  | +            python |
 | 
	
		
			
				|  |  | +            python_cpp |
 | 
	
		
			
				|  |  | +            ruby_19 |
 | 
	
		
			
				|  |  | +            ruby_20 |
 | 
	
		
			
				|  |  | +            ruby_21 |
 | 
	
		
			
				|  |  | +            ruby_22 |
 | 
	
		
			
				|  |  | +            jruby }
 | 
	
		
			
				|  |  | +"
 | 
	
		
			
				|  |  | +  exit 1
 | 
	
		
			
				|  |  | +fi
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +set -e  # exit immediately on error
 | 
	
		
			
				|  |  | +set -x  # display all commands
 | 
	
		
			
				|  |  | +eval "build_$1"
 |