blob: a7dbc8408c5d477792a15cca814b187292f3f0d9 [file] [log] [blame]
Tamir Dubersteine54c1452015-05-06 20:24:58 -04001#!/usr/bin/env bash
Chris Fallin20e94b22015-05-13 16:43:48 -07002
3build_cpp() {
4 ./autogen.sh
5 ./configure
6 make -j2
7 make check -j2
8 cd conformance && make test_cpp && cd ..
9}
10
11build_cpp_distcheck() {
12 ./autogen.sh
13 ./configure
14 make distcheck -j2
15}
16
17use_java() {
18 if [ `uname` != "Linux" ]; then
19 # It's nontrivial to programmatically install a new JDK from the command
20 # line on OS X, so we rely on testing on Linux for Java code.
21 echo "Java not tested on OS X."
22 exit 0 # success
23 fi
24 version=$1
25 case "$version" in
26 jdk6)
27 sudo apt-get install openjdk-6-jdk
28 export PATH=/usr/lib/jvm/java-6-openjdk-amd64/bin:$PATH
29 ;;
30 jdk7)
31 sudo apt-get install openjdk-7-jdk
32 export PATH=/usr/lib/jvm/java-7-openjdk-amd64/bin:$PATH
33 ;;
34 oracle7)
35 sudo apt-get install python-software-properties # for apt-add-repository
36 echo "oracle-java7-installer shared/accepted-oracle-license-v1-1 select true" | \
37 sudo debconf-set-selections
38 yes | sudo apt-add-repository ppa:webupd8team/java
39 yes | sudo apt-get install oracle-java7-installer
40 export PATH=/usr/lib/jvm/java-7-oracle/bin:$PATH
41 ;;
42 esac
43
44 which java
45 java -version
46}
47
48build_java() {
49 # Java build needs `protoc`.
50 ./autogen.sh
51 ./configure
52 make -j2
53 cd java && mvn test && cd ..
54 cd conformance && make test_java && cd ..
55}
56
57build_javanano() {
58 # Java build needs `protoc`.
59 ./autogen.sh
60 ./configure
61 make -j2
62 cd javanano && mvn test && cd ..
63}
64
65build_java_jdk6() {
66 use_java jdk6
67 build_java
68}
69build_java_jdk7() {
70 use_java jdk7
71 build_java
72}
73build_java_oracle7() {
74 use_java oracle7
75 build_java
76}
77
78build_javanano_jdk6() {
79 use_java jdk6
80 build_javanano
81}
82build_javanano_jdk7() {
83 use_java jdk7
84 build_javanano
85}
86build_javanano_oracle7() {
87 use_java oracle7
88 build_javanano
89}
90
91build_python() {
92 ./autogen.sh
93 ./configure
94 make -j2
95 cd python
96 python setup.py build
97 python setup.py test
98 cd ..
99}
100
101build_python_cpp() {
102 ./autogen.sh
103 ./configure
104 make -j2
Tamir Dubersteinc91d9ab2015-05-14 21:32:39 -0400105 export LD_LIBRARY_PATH=../src/.libs # for Linux
106 export DYLD_LIBRARY_PATH=../src/.libs # for OS X
Chris Fallin20e94b22015-05-13 16:43:48 -0700107 cd python
108 python setup.py build --cpp_implementation
109 python setup.py test --cpp_implementation
110 cd ..
111}
112
113build_ruby19() {
114 cd ruby && bash travis-test.sh ruby-1.9 && cd ..
115}
116build_ruby20() {
117 cd ruby && bash travis-test.sh ruby-2.0 && cd ..
118}
119build_ruby21() {
120 cd ruby && bash travis-test.sh ruby-2.1 && cd ..
121}
122build_ruby22() {
123 cd ruby && bash travis-test.sh ruby-2.2 && cd ..
124}
125build_jruby() {
126 cd ruby && bash travis-test.sh jruby && cd ..
127}
128
129# -------- main --------
130
131if [ "$#" -ne 1 ]; then
132 echo "
133Usage: $0 { cpp |
134 java_jdk6 |
135 java_jdk7 |
136 java_oracle7 |
137 javanano_jdk6 |
138 javanano_jdk7 |
139 javanano_oracle7 |
140 python |
141 python_cpp |
142 ruby_19 |
143 ruby_20 |
144 ruby_21 |
145 ruby_22 |
146 jruby }
147"
148 exit 1
149fi
150
151set -e # exit immediately on error
152set -x # display all commands
153eval "build_$1"