| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 | #!/usr/bin/env bash# 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.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}build_csharp() {  # Install latest version of Mono  sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF  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  wget www.nuget.org/NuGet.exe -O nuget.exe  (cd csharp/src; mono ../../nuget.exe restore)  csharp/buildall.sh}use_java() {  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  python setup.py sdist  sudo pip install virtualenv && virtualenv /tmp/protoenv && /tmp/protoenv/bin/pip install dist/*  cd ..}build_python_cpp() {  ./autogen.sh  ./configure  make -j2  export   LD_LIBRARY_PATH=../src/.libs # for Linux  export DYLD_LIBRARY_PATH=../src/.libs # for OS X  cd python  python setup.py build --cpp_implementation  python setup.py test --cpp_implementation  python setup.py sdist --cpp_implementation  sudo pip install virtualenv && virtualenv /tmp/protoenv && /tmp/protoenv/bin/pip install dist/*  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 |            csharp |            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 1fiset -e  # exit immediately on errorset -x  # display all commandseval "build_$1"
 |