travis.sh 3.2 KB

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