blob: 26efc879d60702f4138e519de9ee67d5a548d00d [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
Jan Tattermuschddb36ef2015-05-18 17:34:02 -070017build_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 Fallin20e94b22015-05-13 16:43:48 -070030use_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
61build_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
70build_javanano() {
71 # Java build needs `protoc`.
72 ./autogen.sh
73 ./configure
74 make -j2
75 cd javanano && mvn test && cd ..
76}
77
78build_java_jdk6() {
79 use_java jdk6
80 build_java
81}
82build_java_jdk7() {
83 use_java jdk7
84 build_java
85}
86build_java_oracle7() {
87 use_java oracle7
88 build_java
89}
90
91build_javanano_jdk6() {
92 use_java jdk6
93 build_javanano
94}
95build_javanano_jdk7() {
96 use_java jdk7
97 build_javanano
98}
99build_javanano_oracle7() {
100 use_java oracle7
101 build_javanano
102}
103
104build_python() {
105 ./autogen.sh
106 ./configure
107 make -j2
108 cd python
109 python setup.py build
110 python setup.py test
Tamir Dubersteine4f4d9f2015-05-07 07:40:38 -0400111 python setup.py sdist
112 sudo pip install virtualenv && virtualenv /tmp/protoenv && /tmp/protoenv/bin/pip install dist/*
Chris Fallin20e94b22015-05-13 16:43:48 -0700113 cd ..
114}
115
116build_python_cpp() {
117 ./autogen.sh
118 ./configure
119 make -j2
Tamir Dubersteinc91d9ab2015-05-14 21:32:39 -0400120 export LD_LIBRARY_PATH=../src/.libs # for Linux
121 export DYLD_LIBRARY_PATH=../src/.libs # for OS X
Chris Fallin20e94b22015-05-13 16:43:48 -0700122 cd python
123 python setup.py build --cpp_implementation
124 python setup.py test --cpp_implementation
Tamir Dubersteine4f4d9f2015-05-07 07:40:38 -0400125 python setup.py sdist --cpp_implementation
126 sudo pip install virtualenv && virtualenv /tmp/protoenv && /tmp/protoenv/bin/pip install dist/*
Chris Fallin20e94b22015-05-13 16:43:48 -0700127 cd ..
128}
129
130build_ruby19() {
131 cd ruby && bash travis-test.sh ruby-1.9 && cd ..
132}
133build_ruby20() {
134 cd ruby && bash travis-test.sh ruby-2.0 && cd ..
135}
136build_ruby21() {
137 cd ruby && bash travis-test.sh ruby-2.1 && cd ..
138}
139build_ruby22() {
140 cd ruby && bash travis-test.sh ruby-2.2 && cd ..
141}
142build_jruby() {
143 cd ruby && bash travis-test.sh jruby && cd ..
144}
145
146# -------- main --------
147
148if [ "$#" -ne 1 ]; then
149 echo "
150Usage: $0 { cpp |
Jan Tattermuschddb36ef2015-05-18 17:34:02 -0700151 csharp |
Chris Fallin20e94b22015-05-13 16:43:48 -0700152 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
167fi
168
169set -e # exit immediately on error
170set -x # display all commands
171eval "build_$1"