| Tamir Duberstein | e54c145 | 2015-05-06 20:24:58 -0400 | [diff] [blame] | 1 | #!/usr/bin/env bash | 
| Chris Fallin | 20e94b2 | 2015-05-13 16:43:48 -0700 | [diff] [blame] | 2 |  | 
|  | 3 | build_cpp() { | 
|  | 4 | ./autogen.sh | 
|  | 5 | ./configure | 
|  | 6 | make -j2 | 
|  | 7 | make check -j2 | 
|  | 8 | cd conformance && make test_cpp && cd .. | 
|  | 9 | } | 
|  | 10 |  | 
|  | 11 | build_cpp_distcheck() { | 
|  | 12 | ./autogen.sh | 
|  | 13 | ./configure | 
|  | 14 | make distcheck -j2 | 
|  | 15 | } | 
|  | 16 |  | 
| Jan Tattermusch | ddb36ef | 2015-05-18 17:34:02 -0700 | [diff] [blame^] | 17 | build_csharp() { | 
|  | 18 | # Install latest version of Mono | 
|  | 19 | sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF | 
|  | 20 | echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list | 
|  | 21 | echo "deb http://download.mono-project.com/repo/debian wheezy-libtiff-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list | 
|  | 22 | sudo apt-get update -qq | 
|  | 23 | sudo apt-get install -qq mono-devel referenceassemblies-pcl nunit | 
|  | 24 | wget www.nuget.org/NuGet.exe -O nuget.exe | 
|  | 25 |  | 
|  | 26 | (cd csharp/src; mono ../../nuget.exe restore) | 
|  | 27 | csharp/buildall.sh | 
|  | 28 | } | 
|  | 29 |  | 
| Chris Fallin | 20e94b2 | 2015-05-13 16:43:48 -0700 | [diff] [blame] | 30 | use_java() { | 
|  | 31 | if [ `uname` != "Linux" ]; then | 
|  | 32 | # It's nontrivial to programmatically install a new JDK from the command | 
|  | 33 | # line on OS X, so we rely on testing on Linux for Java code. | 
|  | 34 | echo "Java not tested on OS X." | 
|  | 35 | exit 0  # success | 
|  | 36 | fi | 
|  | 37 | version=$1 | 
|  | 38 | case "$version" in | 
|  | 39 | jdk6) | 
|  | 40 | sudo apt-get install openjdk-6-jdk | 
|  | 41 | export PATH=/usr/lib/jvm/java-6-openjdk-amd64/bin:$PATH | 
|  | 42 | ;; | 
|  | 43 | jdk7) | 
|  | 44 | sudo apt-get install openjdk-7-jdk | 
|  | 45 | export PATH=/usr/lib/jvm/java-7-openjdk-amd64/bin:$PATH | 
|  | 46 | ;; | 
|  | 47 | oracle7) | 
|  | 48 | sudo apt-get install python-software-properties # for apt-add-repository | 
|  | 49 | echo "oracle-java7-installer shared/accepted-oracle-license-v1-1 select true" | \ | 
|  | 50 | sudo debconf-set-selections | 
|  | 51 | yes | sudo apt-add-repository ppa:webupd8team/java | 
|  | 52 | yes | sudo apt-get install oracle-java7-installer | 
|  | 53 | export PATH=/usr/lib/jvm/java-7-oracle/bin:$PATH | 
|  | 54 | ;; | 
|  | 55 | esac | 
|  | 56 |  | 
|  | 57 | which java | 
|  | 58 | java -version | 
|  | 59 | } | 
|  | 60 |  | 
|  | 61 | build_java() { | 
|  | 62 | # Java build needs `protoc`. | 
|  | 63 | ./autogen.sh | 
|  | 64 | ./configure | 
|  | 65 | make -j2 | 
|  | 66 | cd java && mvn test && cd .. | 
|  | 67 | cd conformance && make test_java && cd .. | 
|  | 68 | } | 
|  | 69 |  | 
|  | 70 | build_javanano() { | 
|  | 71 | # Java build needs `protoc`. | 
|  | 72 | ./autogen.sh | 
|  | 73 | ./configure | 
|  | 74 | make -j2 | 
|  | 75 | cd javanano && mvn test && cd .. | 
|  | 76 | } | 
|  | 77 |  | 
|  | 78 | build_java_jdk6() { | 
|  | 79 | use_java jdk6 | 
|  | 80 | build_java | 
|  | 81 | } | 
|  | 82 | build_java_jdk7() { | 
|  | 83 | use_java jdk7 | 
|  | 84 | build_java | 
|  | 85 | } | 
|  | 86 | build_java_oracle7() { | 
|  | 87 | use_java oracle7 | 
|  | 88 | build_java | 
|  | 89 | } | 
|  | 90 |  | 
|  | 91 | build_javanano_jdk6() { | 
|  | 92 | use_java jdk6 | 
|  | 93 | build_javanano | 
|  | 94 | } | 
|  | 95 | build_javanano_jdk7() { | 
|  | 96 | use_java jdk7 | 
|  | 97 | build_javanano | 
|  | 98 | } | 
|  | 99 | build_javanano_oracle7() { | 
|  | 100 | use_java oracle7 | 
|  | 101 | build_javanano | 
|  | 102 | } | 
|  | 103 |  | 
|  | 104 | build_python() { | 
|  | 105 | ./autogen.sh | 
|  | 106 | ./configure | 
|  | 107 | make -j2 | 
|  | 108 | cd python | 
|  | 109 | python setup.py build | 
|  | 110 | python setup.py test | 
| Tamir Duberstein | e4f4d9f | 2015-05-07 07:40:38 -0400 | [diff] [blame] | 111 | python setup.py sdist | 
|  | 112 | sudo pip install virtualenv && virtualenv /tmp/protoenv && /tmp/protoenv/bin/pip install dist/* | 
| Chris Fallin | 20e94b2 | 2015-05-13 16:43:48 -0700 | [diff] [blame] | 113 | cd .. | 
|  | 114 | } | 
|  | 115 |  | 
|  | 116 | build_python_cpp() { | 
|  | 117 | ./autogen.sh | 
|  | 118 | ./configure | 
|  | 119 | make -j2 | 
| Tamir Duberstein | c91d9ab | 2015-05-14 21:32:39 -0400 | [diff] [blame] | 120 | export   LD_LIBRARY_PATH=../src/.libs # for Linux | 
|  | 121 | export DYLD_LIBRARY_PATH=../src/.libs # for OS X | 
| Chris Fallin | 20e94b2 | 2015-05-13 16:43:48 -0700 | [diff] [blame] | 122 | cd python | 
|  | 123 | python setup.py build --cpp_implementation | 
|  | 124 | python setup.py test --cpp_implementation | 
| Tamir Duberstein | e4f4d9f | 2015-05-07 07:40:38 -0400 | [diff] [blame] | 125 | python setup.py sdist --cpp_implementation | 
|  | 126 | sudo pip install virtualenv && virtualenv /tmp/protoenv && /tmp/protoenv/bin/pip install dist/* | 
| Chris Fallin | 20e94b2 | 2015-05-13 16:43:48 -0700 | [diff] [blame] | 127 | cd .. | 
|  | 128 | } | 
|  | 129 |  | 
|  | 130 | build_ruby19() { | 
|  | 131 | cd ruby && bash travis-test.sh ruby-1.9 && cd .. | 
|  | 132 | } | 
|  | 133 | build_ruby20() { | 
|  | 134 | cd ruby && bash travis-test.sh ruby-2.0 && cd .. | 
|  | 135 | } | 
|  | 136 | build_ruby21() { | 
|  | 137 | cd ruby && bash travis-test.sh ruby-2.1 && cd .. | 
|  | 138 | } | 
|  | 139 | build_ruby22() { | 
|  | 140 | cd ruby && bash travis-test.sh ruby-2.2 && cd .. | 
|  | 141 | } | 
|  | 142 | build_jruby() { | 
|  | 143 | cd ruby && bash travis-test.sh jruby && cd .. | 
|  | 144 | } | 
|  | 145 |  | 
|  | 146 | # -------- main -------- | 
|  | 147 |  | 
|  | 148 | if [ "$#" -ne 1 ]; then | 
|  | 149 | echo " | 
|  | 150 | Usage: $0 { cpp | | 
| Jan Tattermusch | ddb36ef | 2015-05-18 17:34:02 -0700 | [diff] [blame^] | 151 | csharp | | 
| Chris Fallin | 20e94b2 | 2015-05-13 16:43:48 -0700 | [diff] [blame] | 152 | java_jdk6 | | 
|  | 153 | java_jdk7 | | 
|  | 154 | java_oracle7 | | 
|  | 155 | javanano_jdk6 | | 
|  | 156 | javanano_jdk7 | | 
|  | 157 | javanano_oracle7 | | 
|  | 158 | python | | 
|  | 159 | python_cpp | | 
|  | 160 | ruby_19 | | 
|  | 161 | ruby_20 | | 
|  | 162 | ruby_21 | | 
|  | 163 | ruby_22 | | 
|  | 164 | jruby } | 
|  | 165 | " | 
|  | 166 | exit 1 | 
|  | 167 | fi | 
|  | 168 |  | 
|  | 169 | set -e  # exit immediately on error | 
|  | 170 | set -x  # display all commands | 
|  | 171 | eval "build_$1" |