blob: 4aa67344a05e760454b45ba1fdb031cb8ac48fe5 [file] [log] [blame]
Tamir Dubersteine54c1452015-05-06 20:24:58 -04001#!/usr/bin/env bash
Chris Fallin20e94b22015-05-13 16:43:48 -07002
Thomas Van Lentenc4d36382015-06-09 13:35:41 -04003# Note: travis currently does not support testing more than one language so the
4# .travis.yml cheats and claims to only be cpp. If they add multiple language
5# support, this should probably get updated to install steps and/or
6# rvm/gemfile/jdk/etc. entries rather than manually doing the work.
7
8# .travis.yml uses matrix.exclude to block the cases where app-get can't be
9# use to install things.
10
Chris Fallin20e94b22015-05-13 16:43:48 -070011build_cpp() {
12 ./autogen.sh
13 ./configure
14 make -j2
15 make check -j2
16 cd conformance && make test_cpp && cd ..
17}
18
19build_cpp_distcheck() {
20 ./autogen.sh
21 ./configure
22 make distcheck -j2
23}
24
Jan Tattermuschddb36ef2015-05-18 17:34:02 -070025build_csharp() {
26 # Install latest version of Mono
27 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
28 echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
29 echo "deb http://download.mono-project.com/repo/debian wheezy-libtiff-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list
30 sudo apt-get update -qq
31 sudo apt-get install -qq mono-devel referenceassemblies-pcl nunit
32 wget www.nuget.org/NuGet.exe -O nuget.exe
33
34 (cd csharp/src; mono ../../nuget.exe restore)
35 csharp/buildall.sh
36}
37
Chris Fallin20e94b22015-05-13 16:43:48 -070038use_java() {
Chris Fallin20e94b22015-05-13 16:43:48 -070039 version=$1
40 case "$version" in
41 jdk6)
42 sudo apt-get install openjdk-6-jdk
43 export PATH=/usr/lib/jvm/java-6-openjdk-amd64/bin:$PATH
44 ;;
45 jdk7)
46 sudo apt-get install openjdk-7-jdk
47 export PATH=/usr/lib/jvm/java-7-openjdk-amd64/bin:$PATH
48 ;;
49 oracle7)
50 sudo apt-get install python-software-properties # for apt-add-repository
51 echo "oracle-java7-installer shared/accepted-oracle-license-v1-1 select true" | \
52 sudo debconf-set-selections
53 yes | sudo apt-add-repository ppa:webupd8team/java
54 yes | sudo apt-get install oracle-java7-installer
55 export PATH=/usr/lib/jvm/java-7-oracle/bin:$PATH
56 ;;
57 esac
58
59 which java
60 java -version
61}
62
63build_java() {
64 # Java build needs `protoc`.
65 ./autogen.sh
66 ./configure
67 make -j2
68 cd java && mvn test && cd ..
69 cd conformance && make test_java && cd ..
70}
71
72build_javanano() {
73 # Java build needs `protoc`.
74 ./autogen.sh
75 ./configure
76 make -j2
77 cd javanano && mvn test && cd ..
78}
79
80build_java_jdk6() {
81 use_java jdk6
82 build_java
83}
84build_java_jdk7() {
85 use_java jdk7
86 build_java
87}
88build_java_oracle7() {
89 use_java oracle7
90 build_java
91}
92
93build_javanano_jdk6() {
94 use_java jdk6
95 build_javanano
96}
97build_javanano_jdk7() {
98 use_java jdk7
99 build_javanano
100}
101build_javanano_oracle7() {
102 use_java oracle7
103 build_javanano
104}
105
106build_python() {
107 ./autogen.sh
108 ./configure
109 make -j2
110 cd python
111 python setup.py build
112 python setup.py test
Tamir Dubersteine4f4d9f2015-05-07 07:40:38 -0400113 python setup.py sdist
114 sudo pip install virtualenv && virtualenv /tmp/protoenv && /tmp/protoenv/bin/pip install dist/*
Chris Fallin20e94b22015-05-13 16:43:48 -0700115 cd ..
116}
117
118build_python_cpp() {
119 ./autogen.sh
120 ./configure
121 make -j2
Tamir Dubersteinc91d9ab2015-05-14 21:32:39 -0400122 export LD_LIBRARY_PATH=../src/.libs # for Linux
123 export DYLD_LIBRARY_PATH=../src/.libs # for OS X
Chris Fallin20e94b22015-05-13 16:43:48 -0700124 cd python
125 python setup.py build --cpp_implementation
126 python setup.py test --cpp_implementation
Tamir Dubersteine4f4d9f2015-05-07 07:40:38 -0400127 python setup.py sdist --cpp_implementation
128 sudo pip install virtualenv && virtualenv /tmp/protoenv && /tmp/protoenv/bin/pip install dist/*
Chris Fallin20e94b22015-05-13 16:43:48 -0700129 cd ..
130}
131
132build_ruby19() {
133 cd ruby && bash travis-test.sh ruby-1.9 && cd ..
134}
135build_ruby20() {
136 cd ruby && bash travis-test.sh ruby-2.0 && cd ..
137}
138build_ruby21() {
139 cd ruby && bash travis-test.sh ruby-2.1 && cd ..
140}
141build_ruby22() {
142 cd ruby && bash travis-test.sh ruby-2.2 && cd ..
143}
144build_jruby() {
145 cd ruby && bash travis-test.sh jruby && cd ..
146}
147
148# -------- main --------
149
150if [ "$#" -ne 1 ]; then
151 echo "
152Usage: $0 { cpp |
Jan Tattermuschddb36ef2015-05-18 17:34:02 -0700153 csharp |
Chris Fallin20e94b22015-05-13 16:43:48 -0700154 java_jdk6 |
155 java_jdk7 |
156 java_oracle7 |
157 javanano_jdk6 |
158 javanano_jdk7 |
159 javanano_oracle7 |
160 python |
161 python_cpp |
162 ruby_19 |
163 ruby_20 |
164 ruby_21 |
165 ruby_22 |
166 jruby }
167"
168 exit 1
169fi
170
171set -e # exit immediately on error
172set -x # display all commands
173eval "build_$1"