xref: /aosp_15_r20/external/protobuf/tests.sh (revision 1b3f573f81763fcece89efc2b6a5209149e44ab8)
1*1b3f573fSAndroid Build Coastguard Worker#!/bin/bash
2*1b3f573fSAndroid Build Coastguard Worker#
3*1b3f573fSAndroid Build Coastguard Worker# Build and run tests for the protobuf project. We use this script to run
4*1b3f573fSAndroid Build Coastguard Worker# tests on kokoro (Ubuntu and MacOS). It can run locally as well but you
5*1b3f573fSAndroid Build Coastguard Worker# need to make sure the required compilers/tools are available.
6*1b3f573fSAndroid Build Coastguard Worker
7*1b3f573fSAndroid Build Coastguard Workerinternal_build_cpp() {
8*1b3f573fSAndroid Build Coastguard Worker  if [ -f src/protoc ]; then
9*1b3f573fSAndroid Build Coastguard Worker    # Already built.
10*1b3f573fSAndroid Build Coastguard Worker    return
11*1b3f573fSAndroid Build Coastguard Worker  fi
12*1b3f573fSAndroid Build Coastguard Worker
13*1b3f573fSAndroid Build Coastguard Worker  # Initialize any submodules.
14*1b3f573fSAndroid Build Coastguard Worker  git submodule update --init --recursive
15*1b3f573fSAndroid Build Coastguard Worker
16*1b3f573fSAndroid Build Coastguard Worker  ./autogen.sh
17*1b3f573fSAndroid Build Coastguard Worker  ./configure CXXFLAGS="-fPIC -std=c++11"  # -fPIC is needed for python cpp test.
18*1b3f573fSAndroid Build Coastguard Worker                                           # See python/setup.py for more details
19*1b3f573fSAndroid Build Coastguard Worker  make -j$(nproc)
20*1b3f573fSAndroid Build Coastguard Worker}
21*1b3f573fSAndroid Build Coastguard Worker
22*1b3f573fSAndroid Build Coastguard Workerbuild_cpp() {
23*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp
24*1b3f573fSAndroid Build Coastguard Worker  make check -j$(nproc) || (cat src/test-suite.log; false)
25*1b3f573fSAndroid Build Coastguard Worker  cd conformance && make test_cpp && cd ..
26*1b3f573fSAndroid Build Coastguard Worker}
27*1b3f573fSAndroid Build Coastguard Worker
28*1b3f573fSAndroid Build Coastguard Workerbuild_cpp_tcmalloc() {
29*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp
30*1b3f573fSAndroid Build Coastguard Worker  ./configure LIBS=-ltcmalloc && make clean && make \
31*1b3f573fSAndroid Build Coastguard Worker      PTHREAD_CFLAGS='-pthread -DGOOGLE_PROTOBUF_HEAP_CHECK_DRACONIAN' \
32*1b3f573fSAndroid Build Coastguard Worker      check
33*1b3f573fSAndroid Build Coastguard Worker  cd src
34*1b3f573fSAndroid Build Coastguard Worker  PPROF_PATH=/usr/bin/google-pprof HEAPCHECK=strict ./protobuf-test
35*1b3f573fSAndroid Build Coastguard Worker}
36*1b3f573fSAndroid Build Coastguard Worker
37*1b3f573fSAndroid Build Coastguard Workerbuild_cpp_distcheck() {
38*1b3f573fSAndroid Build Coastguard Worker  grep -q -- "-Og" src/Makefile.am &&
39*1b3f573fSAndroid Build Coastguard Worker    echo "The -Og flag is incompatible with Clang versions older than 4.0." &&
40*1b3f573fSAndroid Build Coastguard Worker    exit 1
41*1b3f573fSAndroid Build Coastguard Worker
42*1b3f573fSAndroid Build Coastguard Worker  # Initialize any submodules.
43*1b3f573fSAndroid Build Coastguard Worker  git submodule update --init --recursive
44*1b3f573fSAndroid Build Coastguard Worker  ./autogen.sh
45*1b3f573fSAndroid Build Coastguard Worker  ./configure
46*1b3f573fSAndroid Build Coastguard Worker  make dist
47*1b3f573fSAndroid Build Coastguard Worker
48*1b3f573fSAndroid Build Coastguard Worker  # List all files that should be included in the distribution package.
49*1b3f573fSAndroid Build Coastguard Worker  git ls-files | grep "^\(java\|python\|objectivec\|csharp\|ruby\|php\|cmake\|examples\|src/google/protobuf/.*\.proto\)" |\
50*1b3f573fSAndroid Build Coastguard Worker    grep -v ".gitignore" | grep -v "java/lite/proguard.pgcfg" |\
51*1b3f573fSAndroid Build Coastguard Worker    grep -v "python/compatibility_tests" | grep -v "python/docs" | grep -v "python/.repo-metadata.json" |\
52*1b3f573fSAndroid Build Coastguard Worker    grep -v "python/protobuf_distutils" | grep -v "csharp/compatibility_tests" > dist.lst
53*1b3f573fSAndroid Build Coastguard Worker  # Unzip the dist tar file.
54*1b3f573fSAndroid Build Coastguard Worker  DIST=`ls *.tar.gz`
55*1b3f573fSAndroid Build Coastguard Worker  tar -xf $DIST
56*1b3f573fSAndroid Build Coastguard Worker  cd ${DIST//.tar.gz}
57*1b3f573fSAndroid Build Coastguard Worker  # Check if every file exists in the dist tar file.
58*1b3f573fSAndroid Build Coastguard Worker  FILES_MISSING=""
59*1b3f573fSAndroid Build Coastguard Worker  for FILE in $(<../dist.lst); do
60*1b3f573fSAndroid Build Coastguard Worker    [ -f "$FILE" ] || {
61*1b3f573fSAndroid Build Coastguard Worker      echo "$FILE is not found!"
62*1b3f573fSAndroid Build Coastguard Worker      FILES_MISSING="$FILE $FILES_MISSING"
63*1b3f573fSAndroid Build Coastguard Worker    }
64*1b3f573fSAndroid Build Coastguard Worker  done
65*1b3f573fSAndroid Build Coastguard Worker  cd ..
66*1b3f573fSAndroid Build Coastguard Worker  if [ ! -z "$FILES_MISSING" ]; then
67*1b3f573fSAndroid Build Coastguard Worker    echo "Missing files in EXTRA_DIST: $FILES_MISSING"
68*1b3f573fSAndroid Build Coastguard Worker    exit 1
69*1b3f573fSAndroid Build Coastguard Worker  fi
70*1b3f573fSAndroid Build Coastguard Worker
71*1b3f573fSAndroid Build Coastguard Worker  # Do the regular dist-check for C++.
72*1b3f573fSAndroid Build Coastguard Worker  make distcheck -j$(nproc)
73*1b3f573fSAndroid Build Coastguard Worker}
74*1b3f573fSAndroid Build Coastguard Worker
75*1b3f573fSAndroid Build Coastguard Workerbuild_dist_install() {
76*1b3f573fSAndroid Build Coastguard Worker  # Create a symlink pointing to python2 and put it at the beginning of $PATH.
77*1b3f573fSAndroid Build Coastguard Worker  # This is necessary because the googletest build system involves a Python
78*1b3f573fSAndroid Build Coastguard Worker  # script that is not compatible with Python 3. More recent googletest
79*1b3f573fSAndroid Build Coastguard Worker  # versions have fixed this, but they have also removed the autotools build
80*1b3f573fSAndroid Build Coastguard Worker  # system support that we rely on. This is a temporary workaround to keep the
81*1b3f573fSAndroid Build Coastguard Worker  # googletest build working when the default python binary is Python 3.
82*1b3f573fSAndroid Build Coastguard Worker  mkdir tmp || true
83*1b3f573fSAndroid Build Coastguard Worker  pushd tmp
84*1b3f573fSAndroid Build Coastguard Worker  ln -s /usr/bin/python2 ./python
85*1b3f573fSAndroid Build Coastguard Worker  popd
86*1b3f573fSAndroid Build Coastguard Worker  PATH=$PWD/tmp:$PATH
87*1b3f573fSAndroid Build Coastguard Worker
88*1b3f573fSAndroid Build Coastguard Worker  # Initialize any submodules.
89*1b3f573fSAndroid Build Coastguard Worker  git submodule update --init --recursive
90*1b3f573fSAndroid Build Coastguard Worker  ./autogen.sh
91*1b3f573fSAndroid Build Coastguard Worker  ./configure
92*1b3f573fSAndroid Build Coastguard Worker  make dist
93*1b3f573fSAndroid Build Coastguard Worker
94*1b3f573fSAndroid Build Coastguard Worker  # Unzip the dist tar file and install it.
95*1b3f573fSAndroid Build Coastguard Worker  DIST=`ls *.tar.gz`
96*1b3f573fSAndroid Build Coastguard Worker  tar -xf $DIST
97*1b3f573fSAndroid Build Coastguard Worker  pushd ${DIST//.tar.gz}
98*1b3f573fSAndroid Build Coastguard Worker  ./configure && make check -j4 && make install
99*1b3f573fSAndroid Build Coastguard Worker
100*1b3f573fSAndroid Build Coastguard Worker  export LD_LIBRARY_PATH=/usr/local/lib
101*1b3f573fSAndroid Build Coastguard Worker
102*1b3f573fSAndroid Build Coastguard Worker  # Try to install Java
103*1b3f573fSAndroid Build Coastguard Worker  pushd java
104*1b3f573fSAndroid Build Coastguard Worker  use_java jdk11
105*1b3f573fSAndroid Build Coastguard Worker  $MVN install
106*1b3f573fSAndroid Build Coastguard Worker  popd
107*1b3f573fSAndroid Build Coastguard Worker
108*1b3f573fSAndroid Build Coastguard Worker  # Try to install Python
109*1b3f573fSAndroid Build Coastguard Worker  python3 -m venv venv
110*1b3f573fSAndroid Build Coastguard Worker  source venv/bin/activate
111*1b3f573fSAndroid Build Coastguard Worker  pushd python
112*1b3f573fSAndroid Build Coastguard Worker  python3 setup.py clean build sdist
113*1b3f573fSAndroid Build Coastguard Worker  pip3 install dist/protobuf-*.tar.gz
114*1b3f573fSAndroid Build Coastguard Worker  popd
115*1b3f573fSAndroid Build Coastguard Worker  deactivate
116*1b3f573fSAndroid Build Coastguard Worker  rm -rf python/venv
117*1b3f573fSAndroid Build Coastguard Worker}
118*1b3f573fSAndroid Build Coastguard Worker
119*1b3f573fSAndroid Build Coastguard Workerbuild_csharp() {
120*1b3f573fSAndroid Build Coastguard Worker  # Required for conformance tests and to regenerate protos.
121*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp
122*1b3f573fSAndroid Build Coastguard Worker  NUGET=/usr/local/bin/nuget.exe
123*1b3f573fSAndroid Build Coastguard Worker
124*1b3f573fSAndroid Build Coastguard Worker  # Disable some unwanted dotnet options
125*1b3f573fSAndroid Build Coastguard Worker  export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
126*1b3f573fSAndroid Build Coastguard Worker  export DOTNET_CLI_TELEMETRY_OPTOUT=true
127*1b3f573fSAndroid Build Coastguard Worker
128*1b3f573fSAndroid Build Coastguard Worker  # TODO(jtattermusch): is this still needed with "first time experience"
129*1b3f573fSAndroid Build Coastguard Worker  # disabled?
130*1b3f573fSAndroid Build Coastguard Worker  # Perform "dotnet new" once to get the setup preprocessing out of the
131*1b3f573fSAndroid Build Coastguard Worker  # way. That spews a lot of output (including backspaces) into logs
132*1b3f573fSAndroid Build Coastguard Worker  # otherwise, and can cause problems. It doesn't matter if this step
133*1b3f573fSAndroid Build Coastguard Worker  # is performed multiple times; it's cheap after the first time anyway.
134*1b3f573fSAndroid Build Coastguard Worker  # (It also doesn't matter if it's unnecessary, which it will be on some
135*1b3f573fSAndroid Build Coastguard Worker  # systems. It's necessary on Jenkins in order to avoid unprintable
136*1b3f573fSAndroid Build Coastguard Worker  # characters appearing in the JUnit output.)
137*1b3f573fSAndroid Build Coastguard Worker  mkdir dotnettmp
138*1b3f573fSAndroid Build Coastguard Worker  (cd dotnettmp; dotnet new > /dev/null)
139*1b3f573fSAndroid Build Coastguard Worker  rm -rf dotnettmp
140*1b3f573fSAndroid Build Coastguard Worker
141*1b3f573fSAndroid Build Coastguard Worker  # Check that the protos haven't broken C# codegen.
142*1b3f573fSAndroid Build Coastguard Worker  # TODO(jonskeet): Fail if regenerating creates any changes.
143*1b3f573fSAndroid Build Coastguard Worker  csharp/generate_protos.sh
144*1b3f573fSAndroid Build Coastguard Worker
145*1b3f573fSAndroid Build Coastguard Worker  csharp/buildall.sh
146*1b3f573fSAndroid Build Coastguard Worker  cd conformance && make test_csharp && cd ..
147*1b3f573fSAndroid Build Coastguard Worker
148*1b3f573fSAndroid Build Coastguard Worker  # Run csharp compatibility test between 3.0.0 and the current version.
149*1b3f573fSAndroid Build Coastguard Worker  csharp/compatibility_tests/v3.0.0/test.sh 3.0.0
150*1b3f573fSAndroid Build Coastguard Worker
151*1b3f573fSAndroid Build Coastguard Worker  # Regression test for https://github.com/protocolbuffers/protobuf/issues/9526
152*1b3f573fSAndroid Build Coastguard Worker  # - all line endings in .proto and .cs (and .csproj) files should be LF.
153*1b3f573fSAndroid Build Coastguard Worker  if git ls-files --eol csharp | grep -E '\.cs|\.proto' | grep -v w/lf
154*1b3f573fSAndroid Build Coastguard Worker  then
155*1b3f573fSAndroid Build Coastguard Worker    echo "The files listed above have mixed or CRLF line endings; please change to LF."
156*1b3f573fSAndroid Build Coastguard Worker    exit 1
157*1b3f573fSAndroid Build Coastguard Worker  fi
158*1b3f573fSAndroid Build Coastguard Worker}
159*1b3f573fSAndroid Build Coastguard Worker
160*1b3f573fSAndroid Build Coastguard Workerbuild_golang() {
161*1b3f573fSAndroid Build Coastguard Worker  # Go build needs `protoc`.
162*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp
163*1b3f573fSAndroid Build Coastguard Worker  # Add protoc to the path so that the examples build finds it.
164*1b3f573fSAndroid Build Coastguard Worker  export PATH="`pwd`/src:$PATH"
165*1b3f573fSAndroid Build Coastguard Worker
166*1b3f573fSAndroid Build Coastguard Worker  export GOPATH="$HOME/gocode"
167*1b3f573fSAndroid Build Coastguard Worker  mkdir -p "$GOPATH/src/github.com/protocolbuffers"
168*1b3f573fSAndroid Build Coastguard Worker  mkdir -p "$GOPATH/src/github.com/golang"
169*1b3f573fSAndroid Build Coastguard Worker  rm -f "$GOPATH/src/github.com/protocolbuffers/protobuf"
170*1b3f573fSAndroid Build Coastguard Worker  rm -f "$GOPATH/src/github.com/golang/protobuf"
171*1b3f573fSAndroid Build Coastguard Worker  ln -s "`pwd`" "$GOPATH/src/github.com/protocolbuffers/protobuf"
172*1b3f573fSAndroid Build Coastguard Worker  export PATH="$GOPATH/bin:$PATH"
173*1b3f573fSAndroid Build Coastguard Worker  (cd $GOPATH/src/github.com/golang && git clone https://github.com/golang/protobuf.git && cd protobuf && git checkout v1.3.5)
174*1b3f573fSAndroid Build Coastguard Worker  go install github.com/golang/protobuf/protoc-gen-go
175*1b3f573fSAndroid Build Coastguard Worker
176*1b3f573fSAndroid Build Coastguard Worker  cd examples && PROTO_PATH="-I../src -I." make gotest && cd ..
177*1b3f573fSAndroid Build Coastguard Worker}
178*1b3f573fSAndroid Build Coastguard Worker
179*1b3f573fSAndroid Build Coastguard Workeruse_java() {
180*1b3f573fSAndroid Build Coastguard Worker  version=$1
181*1b3f573fSAndroid Build Coastguard Worker  case "$version" in
182*1b3f573fSAndroid Build Coastguard Worker    jdk17)
183*1b3f573fSAndroid Build Coastguard Worker      export PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH
184*1b3f573fSAndroid Build Coastguard Worker      export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
185*1b3f573fSAndroid Build Coastguard Worker      ;;
186*1b3f573fSAndroid Build Coastguard Worker    jdk11)
187*1b3f573fSAndroid Build Coastguard Worker      export PATH=/usr/lib/jvm/java-11-openjdk-amd64/bin:$PATH
188*1b3f573fSAndroid Build Coastguard Worker      export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
189*1b3f573fSAndroid Build Coastguard Worker      ;;
190*1b3f573fSAndroid Build Coastguard Worker    jdk8)
191*1b3f573fSAndroid Build Coastguard Worker      export PATH=/usr/lib/jvm/java-8-openjdk-amd64/bin:$PATH
192*1b3f573fSAndroid Build Coastguard Worker      export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
193*1b3f573fSAndroid Build Coastguard Worker      ;;
194*1b3f573fSAndroid Build Coastguard Worker    jdk7)
195*1b3f573fSAndroid Build Coastguard Worker      export PATH=/usr/lib/jvm/java-7-openjdk-amd64/bin:$PATH
196*1b3f573fSAndroid Build Coastguard Worker      export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
197*1b3f573fSAndroid Build Coastguard Worker      ;;
198*1b3f573fSAndroid Build Coastguard Worker    oracle7)
199*1b3f573fSAndroid Build Coastguard Worker      export PATH=/usr/lib/jvm/java-7-oracle/bin:$PATH
200*1b3f573fSAndroid Build Coastguard Worker      export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
201*1b3f573fSAndroid Build Coastguard Worker      ;;
202*1b3f573fSAndroid Build Coastguard Worker  esac
203*1b3f573fSAndroid Build Coastguard Worker
204*1b3f573fSAndroid Build Coastguard Worker  MAVEN_LOCAL_REPOSITORY=/var/maven_local_repository
205*1b3f573fSAndroid Build Coastguard Worker  MVN="$MVN -e --quiet -Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$MAVEN_LOCAL_REPOSITORY"
206*1b3f573fSAndroid Build Coastguard Worker
207*1b3f573fSAndroid Build Coastguard Worker  which java
208*1b3f573fSAndroid Build Coastguard Worker  java -version
209*1b3f573fSAndroid Build Coastguard Worker  $MVN -version
210*1b3f573fSAndroid Build Coastguard Worker}
211*1b3f573fSAndroid Build Coastguard Worker
212*1b3f573fSAndroid Build Coastguard Worker# --batch-mode suppresses download progress output that spams the logs.
213*1b3f573fSAndroid Build Coastguard WorkerMVN="mvn --batch-mode"
214*1b3f573fSAndroid Build Coastguard Worker
215*1b3f573fSAndroid Build Coastguard Workerinternal_build_java() {
216*1b3f573fSAndroid Build Coastguard Worker  version=$1
217*1b3f573fSAndroid Build Coastguard Worker  dir=java_$version
218*1b3f573fSAndroid Build Coastguard Worker  # Java build needs `protoc`.
219*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp
220*1b3f573fSAndroid Build Coastguard Worker  cp -r java $dir
221*1b3f573fSAndroid Build Coastguard Worker  cd $dir && $MVN clean
222*1b3f573fSAndroid Build Coastguard Worker  # Skip tests here - callers will decide what tests they want to run
223*1b3f573fSAndroid Build Coastguard Worker  $MVN install -Dmaven.test.skip=true
224*1b3f573fSAndroid Build Coastguard Worker}
225*1b3f573fSAndroid Build Coastguard Worker
226*1b3f573fSAndroid Build Coastguard Workerbuild_java() {
227*1b3f573fSAndroid Build Coastguard Worker  version=$1
228*1b3f573fSAndroid Build Coastguard Worker  internal_build_java $version
229*1b3f573fSAndroid Build Coastguard Worker  # Skip the Kotlin tests on Oracle 7
230*1b3f573fSAndroid Build Coastguard Worker  if [ "$version" == "oracle7" ]; then
231*1b3f573fSAndroid Build Coastguard Worker    $MVN test -pl bom,lite,core,util
232*1b3f573fSAndroid Build Coastguard Worker  else
233*1b3f573fSAndroid Build Coastguard Worker    $MVN test
234*1b3f573fSAndroid Build Coastguard Worker  fi
235*1b3f573fSAndroid Build Coastguard Worker  cd ../..
236*1b3f573fSAndroid Build Coastguard Worker}
237*1b3f573fSAndroid Build Coastguard Worker
238*1b3f573fSAndroid Build Coastguard Worker# The conformance tests are hard-coded to work with the $ROOT/java directory.
239*1b3f573fSAndroid Build Coastguard Worker# So this can't run in parallel with two different sets of tests.
240*1b3f573fSAndroid Build Coastguard Workerbuild_java_with_conformance_tests() {
241*1b3f573fSAndroid Build Coastguard Worker  # Java build needs `protoc`.
242*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp
243*1b3f573fSAndroid Build Coastguard Worker  # This local installation avoids the problem caused by a new version not yet in Maven Central
244*1b3f573fSAndroid Build Coastguard Worker  cd java/bom && $MVN install
245*1b3f573fSAndroid Build Coastguard Worker  cd ../..
246*1b3f573fSAndroid Build Coastguard Worker  cd java/core && $MVN test && $MVN install
247*1b3f573fSAndroid Build Coastguard Worker  cd ../lite && $MVN test && $MVN install
248*1b3f573fSAndroid Build Coastguard Worker  cd ../util && $MVN test && $MVN install && $MVN package assembly:single
249*1b3f573fSAndroid Build Coastguard Worker  if [ "$version" == "jdk8" ]; then
250*1b3f573fSAndroid Build Coastguard Worker    cd ../kotlin && $MVN test && $MVN install
251*1b3f573fSAndroid Build Coastguard Worker    cd ../kotlin-lite && $MVN test && $MVN install
252*1b3f573fSAndroid Build Coastguard Worker  fi
253*1b3f573fSAndroid Build Coastguard Worker  cd ../..
254*1b3f573fSAndroid Build Coastguard Worker  cd conformance && make test_java && cd ..
255*1b3f573fSAndroid Build Coastguard Worker}
256*1b3f573fSAndroid Build Coastguard Worker
257*1b3f573fSAndroid Build Coastguard Workerbuild_java_jdk7() {
258*1b3f573fSAndroid Build Coastguard Worker  use_java jdk7
259*1b3f573fSAndroid Build Coastguard Worker  build_java_with_conformance_tests
260*1b3f573fSAndroid Build Coastguard Worker}
261*1b3f573fSAndroid Build Coastguard Worker
262*1b3f573fSAndroid Build Coastguard Workerbuild_java_oracle7() {
263*1b3f573fSAndroid Build Coastguard Worker  use_java oracle7
264*1b3f573fSAndroid Build Coastguard Worker  build_java oracle7
265*1b3f573fSAndroid Build Coastguard Worker}
266*1b3f573fSAndroid Build Coastguard Worker
267*1b3f573fSAndroid Build Coastguard Workerbuild_java_jdk8() {
268*1b3f573fSAndroid Build Coastguard Worker  use_java jdk8
269*1b3f573fSAndroid Build Coastguard Worker  build_java_with_conformance_tests
270*1b3f573fSAndroid Build Coastguard Worker}
271*1b3f573fSAndroid Build Coastguard Worker
272*1b3f573fSAndroid Build Coastguard Workerbuild_java_jdk11() {
273*1b3f573fSAndroid Build Coastguard Worker  use_java jdk11
274*1b3f573fSAndroid Build Coastguard Worker  build_java
275*1b3f573fSAndroid Build Coastguard Worker}
276*1b3f573fSAndroid Build Coastguard Worker
277*1b3f573fSAndroid Build Coastguard Workerbuild_java_jdk17() {
278*1b3f573fSAndroid Build Coastguard Worker  use_java jdk17
279*1b3f573fSAndroid Build Coastguard Worker  build_java
280*1b3f573fSAndroid Build Coastguard Worker}
281*1b3f573fSAndroid Build Coastguard Worker
282*1b3f573fSAndroid Build Coastguard Workerbuild_java_linkage_monitor() {
283*1b3f573fSAndroid Build Coastguard Worker  # Linkage Monitor checks compatibility with other Google libraries
284*1b3f573fSAndroid Build Coastguard Worker  # https://github.com/GoogleCloudPlatform/cloud-opensource-java/tree/master/linkage-monitor
285*1b3f573fSAndroid Build Coastguard Worker
286*1b3f573fSAndroid Build Coastguard Worker  use_java jdk11
287*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp
288*1b3f573fSAndroid Build Coastguard Worker
289*1b3f573fSAndroid Build Coastguard Worker  # Linkage Monitor uses $HOME/.m2 local repository
290*1b3f573fSAndroid Build Coastguard Worker  MVN="mvn -e -B -Dhttps.protocols=TLSv1.2"
291*1b3f573fSAndroid Build Coastguard Worker  cd java
292*1b3f573fSAndroid Build Coastguard Worker  # Installs the snapshot version locally
293*1b3f573fSAndroid Build Coastguard Worker  $MVN install -Dmaven.test.skip=true
294*1b3f573fSAndroid Build Coastguard Worker
295*1b3f573fSAndroid Build Coastguard Worker  # Linkage Monitor uses the snapshot versions installed in $HOME/.m2 to verify compatibility
296*1b3f573fSAndroid Build Coastguard Worker  JAR=linkage-monitor-latest-all-deps.jar
297*1b3f573fSAndroid Build Coastguard Worker  curl -v -O "https://storage.googleapis.com/cloud-opensource-java-linkage-monitor/${JAR}"
298*1b3f573fSAndroid Build Coastguard Worker  # Fails if there's new linkage errors compared with baseline
299*1b3f573fSAndroid Build Coastguard Worker  java -jar $JAR com.google.cloud:libraries-bom
300*1b3f573fSAndroid Build Coastguard Worker}
301*1b3f573fSAndroid Build Coastguard Worker
302*1b3f573fSAndroid Build Coastguard Workerbuild_objectivec_ios() {
303*1b3f573fSAndroid Build Coastguard Worker  # Reused the build script that takes care of configuring and ensuring things
304*1b3f573fSAndroid Build Coastguard Worker  # are up to date.  The OS X test runs the objc conformance test, so skip it
305*1b3f573fSAndroid Build Coastguard Worker  # here.
306*1b3f573fSAndroid Build Coastguard Worker  objectivec/DevTools/full_mac_build.sh \
307*1b3f573fSAndroid Build Coastguard Worker      --core-only --skip-xcode-osx --skip-xcode-tvos --skip-objc-conformance "$@"
308*1b3f573fSAndroid Build Coastguard Worker}
309*1b3f573fSAndroid Build Coastguard Worker
310*1b3f573fSAndroid Build Coastguard Workerbuild_objectivec_ios_debug() {
311*1b3f573fSAndroid Build Coastguard Worker  build_objectivec_ios --skip-xcode-release
312*1b3f573fSAndroid Build Coastguard Worker}
313*1b3f573fSAndroid Build Coastguard Worker
314*1b3f573fSAndroid Build Coastguard Workerbuild_objectivec_ios_release() {
315*1b3f573fSAndroid Build Coastguard Worker  build_objectivec_ios --skip-xcode-debug
316*1b3f573fSAndroid Build Coastguard Worker}
317*1b3f573fSAndroid Build Coastguard Worker
318*1b3f573fSAndroid Build Coastguard Workerbuild_objectivec_osx() {
319*1b3f573fSAndroid Build Coastguard Worker  # Reused the build script that takes care of configuring and ensuring things
320*1b3f573fSAndroid Build Coastguard Worker  # are up to date.
321*1b3f573fSAndroid Build Coastguard Worker  objectivec/DevTools/full_mac_build.sh \
322*1b3f573fSAndroid Build Coastguard Worker      --core-only --skip-xcode-ios --skip-xcode-tvos
323*1b3f573fSAndroid Build Coastguard Worker}
324*1b3f573fSAndroid Build Coastguard Worker
325*1b3f573fSAndroid Build Coastguard Workerbuild_objectivec_tvos() {
326*1b3f573fSAndroid Build Coastguard Worker  # Reused the build script that takes care of configuring and ensuring things
327*1b3f573fSAndroid Build Coastguard Worker  # are up to date.  The OS X test runs the objc conformance test, so skip it
328*1b3f573fSAndroid Build Coastguard Worker  # here.
329*1b3f573fSAndroid Build Coastguard Worker  objectivec/DevTools/full_mac_build.sh \
330*1b3f573fSAndroid Build Coastguard Worker      --core-only --skip-xcode-ios --skip-xcode-osx --skip-objc-conformance "$@"
331*1b3f573fSAndroid Build Coastguard Worker}
332*1b3f573fSAndroid Build Coastguard Worker
333*1b3f573fSAndroid Build Coastguard Workerbuild_objectivec_tvos_debug() {
334*1b3f573fSAndroid Build Coastguard Worker  build_objectivec_tvos --skip-xcode-release
335*1b3f573fSAndroid Build Coastguard Worker}
336*1b3f573fSAndroid Build Coastguard Worker
337*1b3f573fSAndroid Build Coastguard Workerbuild_objectivec_tvos_release() {
338*1b3f573fSAndroid Build Coastguard Worker  build_objectivec_tvos --skip-xcode-debug
339*1b3f573fSAndroid Build Coastguard Worker}
340*1b3f573fSAndroid Build Coastguard Worker
341*1b3f573fSAndroid Build Coastguard Workerbuild_python() {
342*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp
343*1b3f573fSAndroid Build Coastguard Worker  cd python
344*1b3f573fSAndroid Build Coastguard Worker  tox --skip-missing-interpreters
345*1b3f573fSAndroid Build Coastguard Worker  cd ..
346*1b3f573fSAndroid Build Coastguard Worker}
347*1b3f573fSAndroid Build Coastguard Worker
348*1b3f573fSAndroid Build Coastguard Workerbuild_python_version() {
349*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp
350*1b3f573fSAndroid Build Coastguard Worker  cd python
351*1b3f573fSAndroid Build Coastguard Worker  envlist=$1
352*1b3f573fSAndroid Build Coastguard Worker  tox -e $envlist
353*1b3f573fSAndroid Build Coastguard Worker  cd ..
354*1b3f573fSAndroid Build Coastguard Worker}
355*1b3f573fSAndroid Build Coastguard Worker
356*1b3f573fSAndroid Build Coastguard Workerbuild_python37() {
357*1b3f573fSAndroid Build Coastguard Worker  build_python_version py37-python
358*1b3f573fSAndroid Build Coastguard Worker}
359*1b3f573fSAndroid Build Coastguard Worker
360*1b3f573fSAndroid Build Coastguard Workerbuild_python38() {
361*1b3f573fSAndroid Build Coastguard Worker  build_python_version py38-python
362*1b3f573fSAndroid Build Coastguard Worker}
363*1b3f573fSAndroid Build Coastguard Worker
364*1b3f573fSAndroid Build Coastguard Workerbuild_python39() {
365*1b3f573fSAndroid Build Coastguard Worker  build_python_version py39-python
366*1b3f573fSAndroid Build Coastguard Worker}
367*1b3f573fSAndroid Build Coastguard Worker
368*1b3f573fSAndroid Build Coastguard Workerbuild_python310() {
369*1b3f573fSAndroid Build Coastguard Worker  build_python_version py310-python
370*1b3f573fSAndroid Build Coastguard Worker}
371*1b3f573fSAndroid Build Coastguard Worker
372*1b3f573fSAndroid Build Coastguard Workerbuild_python_cpp() {
373*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp
374*1b3f573fSAndroid Build Coastguard Worker  export LD_LIBRARY_PATH=../src/.libs # for Linux
375*1b3f573fSAndroid Build Coastguard Worker  export DYLD_LIBRARY_PATH=../src/.libs # for OS X
376*1b3f573fSAndroid Build Coastguard Worker  cd python
377*1b3f573fSAndroid Build Coastguard Worker  tox --skip-missing-interpreters
378*1b3f573fSAndroid Build Coastguard Worker  cd ..
379*1b3f573fSAndroid Build Coastguard Worker}
380*1b3f573fSAndroid Build Coastguard Worker
381*1b3f573fSAndroid Build Coastguard Workerbuild_python_cpp_version() {
382*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp
383*1b3f573fSAndroid Build Coastguard Worker  export LD_LIBRARY_PATH=../src/.libs # for Linux
384*1b3f573fSAndroid Build Coastguard Worker  export DYLD_LIBRARY_PATH=../src/.libs # for OS X
385*1b3f573fSAndroid Build Coastguard Worker  cd python
386*1b3f573fSAndroid Build Coastguard Worker  envlist=$1
387*1b3f573fSAndroid Build Coastguard Worker  tox -e $envlist
388*1b3f573fSAndroid Build Coastguard Worker  cd ..
389*1b3f573fSAndroid Build Coastguard Worker}
390*1b3f573fSAndroid Build Coastguard Worker
391*1b3f573fSAndroid Build Coastguard Workerbuild_python37_cpp() {
392*1b3f573fSAndroid Build Coastguard Worker  build_python_cpp_version py37-cpp
393*1b3f573fSAndroid Build Coastguard Worker}
394*1b3f573fSAndroid Build Coastguard Worker
395*1b3f573fSAndroid Build Coastguard Workerbuild_python38_cpp() {
396*1b3f573fSAndroid Build Coastguard Worker  build_python_cpp_version py38-cpp
397*1b3f573fSAndroid Build Coastguard Worker}
398*1b3f573fSAndroid Build Coastguard Worker
399*1b3f573fSAndroid Build Coastguard Workerbuild_python39_cpp() {
400*1b3f573fSAndroid Build Coastguard Worker  build_python_cpp_version py39-cpp
401*1b3f573fSAndroid Build Coastguard Worker}
402*1b3f573fSAndroid Build Coastguard Worker
403*1b3f573fSAndroid Build Coastguard Workerbuild_python310_cpp() {
404*1b3f573fSAndroid Build Coastguard Worker  build_python_cpp_version py310-cpp
405*1b3f573fSAndroid Build Coastguard Worker}
406*1b3f573fSAndroid Build Coastguard Worker
407*1b3f573fSAndroid Build Coastguard Workerbuild_ruby23() {
408*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp  # For conformance tests.
409*1b3f573fSAndroid Build Coastguard Worker  cd ruby && bash travis-test.sh ruby-2.3.8 && cd ..
410*1b3f573fSAndroid Build Coastguard Worker}
411*1b3f573fSAndroid Build Coastguard Workerbuild_ruby24() {
412*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp  # For conformance tests.
413*1b3f573fSAndroid Build Coastguard Worker  cd ruby && bash travis-test.sh ruby-2.4 && cd ..
414*1b3f573fSAndroid Build Coastguard Worker}
415*1b3f573fSAndroid Build Coastguard Workerbuild_ruby25() {
416*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp  # For conformance tests.
417*1b3f573fSAndroid Build Coastguard Worker  cd ruby && bash travis-test.sh ruby-2.5.1 && cd ..
418*1b3f573fSAndroid Build Coastguard Worker}
419*1b3f573fSAndroid Build Coastguard Workerbuild_ruby26() {
420*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp  # For conformance tests.
421*1b3f573fSAndroid Build Coastguard Worker  cd ruby && bash travis-test.sh ruby-2.6.0 && cd ..
422*1b3f573fSAndroid Build Coastguard Worker}
423*1b3f573fSAndroid Build Coastguard Workerbuild_ruby27() {
424*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp  # For conformance tests.
425*1b3f573fSAndroid Build Coastguard Worker  cd ruby && bash travis-test.sh ruby-2.7.0 && cd ..
426*1b3f573fSAndroid Build Coastguard Worker}
427*1b3f573fSAndroid Build Coastguard Workerbuild_ruby30() {
428*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp  # For conformance tests.
429*1b3f573fSAndroid Build Coastguard Worker  cd ruby && bash travis-test.sh ruby-3.0.2 && cd ..
430*1b3f573fSAndroid Build Coastguard Worker}
431*1b3f573fSAndroid Build Coastguard Workerbuild_ruby31() {
432*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp  # For conformance tests.
433*1b3f573fSAndroid Build Coastguard Worker  cd ruby && bash travis-test.sh ruby-3.1.0 && cd ..
434*1b3f573fSAndroid Build Coastguard Worker}
435*1b3f573fSAndroid Build Coastguard Worker
436*1b3f573fSAndroid Build Coastguard Workerbuild_jruby92() {
437*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp                # For conformance tests.
438*1b3f573fSAndroid Build Coastguard Worker  internal_build_java jdk8 && cd .. # For Maven protobuf jar with local changes
439*1b3f573fSAndroid Build Coastguard Worker  cd ruby && bash travis-test.sh jruby-9.2.20.1 && cd ..
440*1b3f573fSAndroid Build Coastguard Worker}
441*1b3f573fSAndroid Build Coastguard Worker
442*1b3f573fSAndroid Build Coastguard Workerbuild_jruby93() {
443*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp                # For conformance tests.
444*1b3f573fSAndroid Build Coastguard Worker  internal_build_java jdk8 && cd .. # For Maven protobuf jar with local changes
445*1b3f573fSAndroid Build Coastguard Worker  cd ruby && bash travis-test.sh jruby-9.3.4.0 && cd ..
446*1b3f573fSAndroid Build Coastguard Worker}
447*1b3f573fSAndroid Build Coastguard Worker
448*1b3f573fSAndroid Build Coastguard Workeruse_php() {
449*1b3f573fSAndroid Build Coastguard Worker  VERSION=$1
450*1b3f573fSAndroid Build Coastguard Worker  export PATH=/usr/local/php-${VERSION}/bin:$PATH
451*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp
452*1b3f573fSAndroid Build Coastguard Worker}
453*1b3f573fSAndroid Build Coastguard Worker
454*1b3f573fSAndroid Build Coastguard Workerbuild_php() {
455*1b3f573fSAndroid Build Coastguard Worker  use_php $1
456*1b3f573fSAndroid Build Coastguard Worker  pushd php
457*1b3f573fSAndroid Build Coastguard Worker  rm -rf vendor
458*1b3f573fSAndroid Build Coastguard Worker  php -v
459*1b3f573fSAndroid Build Coastguard Worker  php -m
460*1b3f573fSAndroid Build Coastguard Worker  composer update
461*1b3f573fSAndroid Build Coastguard Worker  composer test
462*1b3f573fSAndroid Build Coastguard Worker  popd
463*1b3f573fSAndroid Build Coastguard Worker  (cd conformance && make test_php)
464*1b3f573fSAndroid Build Coastguard Worker}
465*1b3f573fSAndroid Build Coastguard Worker
466*1b3f573fSAndroid Build Coastguard Workertest_php_c() {
467*1b3f573fSAndroid Build Coastguard Worker  pushd php
468*1b3f573fSAndroid Build Coastguard Worker  rm -rf vendor
469*1b3f573fSAndroid Build Coastguard Worker  php -v
470*1b3f573fSAndroid Build Coastguard Worker  php -m
471*1b3f573fSAndroid Build Coastguard Worker  composer update
472*1b3f573fSAndroid Build Coastguard Worker  composer test_c
473*1b3f573fSAndroid Build Coastguard Worker  popd
474*1b3f573fSAndroid Build Coastguard Worker  (cd conformance && make test_php_c)
475*1b3f573fSAndroid Build Coastguard Worker}
476*1b3f573fSAndroid Build Coastguard Worker
477*1b3f573fSAndroid Build Coastguard Workerbuild_php_c() {
478*1b3f573fSAndroid Build Coastguard Worker  use_php $1
479*1b3f573fSAndroid Build Coastguard Worker  test_php_c
480*1b3f573fSAndroid Build Coastguard Worker}
481*1b3f573fSAndroid Build Coastguard Worker
482*1b3f573fSAndroid Build Coastguard Workerbuild_php7.0_mac() {
483*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp
484*1b3f573fSAndroid Build Coastguard Worker  # Install PHP
485*1b3f573fSAndroid Build Coastguard Worker  curl -s https://php-osx.liip.ch/install.sh | bash -s 7.0
486*1b3f573fSAndroid Build Coastguard Worker  PHP_FOLDER=`find /usr/local -type d -name "php5-7.0*"`  # The folder name may change upon time
487*1b3f573fSAndroid Build Coastguard Worker  test ! -z "$PHP_FOLDER"
488*1b3f573fSAndroid Build Coastguard Worker  export PATH="$PHP_FOLDER/bin:$PATH"
489*1b3f573fSAndroid Build Coastguard Worker
490*1b3f573fSAndroid Build Coastguard Worker  # Install Composer
491*1b3f573fSAndroid Build Coastguard Worker  wget https://getcomposer.org/download/2.0.13/composer.phar --progress=dot:mega -O /usr/local/bin/composer
492*1b3f573fSAndroid Build Coastguard Worker  chmod a+x /usr/local/bin/composer
493*1b3f573fSAndroid Build Coastguard Worker
494*1b3f573fSAndroid Build Coastguard Worker  # Install valgrind
495*1b3f573fSAndroid Build Coastguard Worker  echo "#! /bin/bash" > valgrind
496*1b3f573fSAndroid Build Coastguard Worker  chmod ug+x valgrind
497*1b3f573fSAndroid Build Coastguard Worker  sudo mv valgrind /usr/local/bin/valgrind
498*1b3f573fSAndroid Build Coastguard Worker
499*1b3f573fSAndroid Build Coastguard Worker  # Test
500*1b3f573fSAndroid Build Coastguard Worker  test_php_c
501*1b3f573fSAndroid Build Coastguard Worker}
502*1b3f573fSAndroid Build Coastguard Worker
503*1b3f573fSAndroid Build Coastguard Workerbuild_php7.3_mac() {
504*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp
505*1b3f573fSAndroid Build Coastguard Worker  # Install PHP
506*1b3f573fSAndroid Build Coastguard Worker  # We can't test PHP 7.4 with these binaries yet:
507*1b3f573fSAndroid Build Coastguard Worker  #   https://github.com/liip/php-osx/issues/276
508*1b3f573fSAndroid Build Coastguard Worker  curl -s https://php-osx.liip.ch/install.sh | bash -s 7.3
509*1b3f573fSAndroid Build Coastguard Worker  PHP_FOLDER=`find /usr/local -type d -name "php5-7.3*"`  # The folder name may change upon time
510*1b3f573fSAndroid Build Coastguard Worker  test ! -z "$PHP_FOLDER"
511*1b3f573fSAndroid Build Coastguard Worker  export PATH="$PHP_FOLDER/bin:$PATH"
512*1b3f573fSAndroid Build Coastguard Worker
513*1b3f573fSAndroid Build Coastguard Worker  # Install Composer
514*1b3f573fSAndroid Build Coastguard Worker  wget https://getcomposer.org/download/2.0.13/composer.phar --progress=dot:mega -O /usr/local/bin/composer
515*1b3f573fSAndroid Build Coastguard Worker  chmod a+x /usr/local/bin/composer
516*1b3f573fSAndroid Build Coastguard Worker
517*1b3f573fSAndroid Build Coastguard Worker  # Install valgrind
518*1b3f573fSAndroid Build Coastguard Worker  echo "#! /bin/bash" > valgrind
519*1b3f573fSAndroid Build Coastguard Worker  chmod ug+x valgrind
520*1b3f573fSAndroid Build Coastguard Worker  sudo mv valgrind /usr/local/bin/valgrind
521*1b3f573fSAndroid Build Coastguard Worker
522*1b3f573fSAndroid Build Coastguard Worker  # Test
523*1b3f573fSAndroid Build Coastguard Worker  test_php_c
524*1b3f573fSAndroid Build Coastguard Worker}
525*1b3f573fSAndroid Build Coastguard Worker
526*1b3f573fSAndroid Build Coastguard Workerbuild_php_compatibility() {
527*1b3f573fSAndroid Build Coastguard Worker  internal_build_cpp
528*1b3f573fSAndroid Build Coastguard Worker}
529*1b3f573fSAndroid Build Coastguard Worker
530*1b3f573fSAndroid Build Coastguard Workerbuild_php_multirequest() {
531*1b3f573fSAndroid Build Coastguard Worker  use_php 7.4
532*1b3f573fSAndroid Build Coastguard Worker  php/tests/multirequest.sh
533*1b3f573fSAndroid Build Coastguard Worker}
534*1b3f573fSAndroid Build Coastguard Worker
535*1b3f573fSAndroid Build Coastguard Workerbuild_php8.0_all() {
536*1b3f573fSAndroid Build Coastguard Worker  build_php 8.0
537*1b3f573fSAndroid Build Coastguard Worker  build_php 8.1
538*1b3f573fSAndroid Build Coastguard Worker  build_php_c 8.0
539*1b3f573fSAndroid Build Coastguard Worker  build_php_c 8.1
540*1b3f573fSAndroid Build Coastguard Worker}
541*1b3f573fSAndroid Build Coastguard Worker
542*1b3f573fSAndroid Build Coastguard Workerbuild_php_all_32() {
543*1b3f573fSAndroid Build Coastguard Worker  build_php 7.0
544*1b3f573fSAndroid Build Coastguard Worker  build_php 7.1
545*1b3f573fSAndroid Build Coastguard Worker  build_php 7.4
546*1b3f573fSAndroid Build Coastguard Worker  build_php_c 7.0
547*1b3f573fSAndroid Build Coastguard Worker  build_php_c 7.1
548*1b3f573fSAndroid Build Coastguard Worker  build_php_c 7.4
549*1b3f573fSAndroid Build Coastguard Worker  build_php_c 7.1-zts
550*1b3f573fSAndroid Build Coastguard Worker  build_php_c 7.2-zts
551*1b3f573fSAndroid Build Coastguard Worker  build_php_c 7.5-zts
552*1b3f573fSAndroid Build Coastguard Worker}
553*1b3f573fSAndroid Build Coastguard Worker
554*1b3f573fSAndroid Build Coastguard Workerbuild_php_all() {
555*1b3f573fSAndroid Build Coastguard Worker  build_php_all_32
556*1b3f573fSAndroid Build Coastguard Worker  build_php_multirequest
557*1b3f573fSAndroid Build Coastguard Worker  build_php_compatibility
558*1b3f573fSAndroid Build Coastguard Worker}
559*1b3f573fSAndroid Build Coastguard Worker
560*1b3f573fSAndroid Build Coastguard Workerbuild_benchmark() {
561*1b3f573fSAndroid Build Coastguard Worker  use_php 7.2
562*1b3f573fSAndroid Build Coastguard Worker  cd kokoro/linux/benchmark && ./run.sh
563*1b3f573fSAndroid Build Coastguard Worker}
564*1b3f573fSAndroid Build Coastguard Worker
565*1b3f573fSAndroid Build Coastguard Worker# -------- main --------
566*1b3f573fSAndroid Build Coastguard Worker
567*1b3f573fSAndroid Build Coastguard Workerif [ "$#" -ne 1 ]; then
568*1b3f573fSAndroid Build Coastguard Worker  echo "
569*1b3f573fSAndroid Build Coastguard WorkerUsage: $0 { cpp |
570*1b3f573fSAndroid Build Coastguard Worker            cpp_distcheck |
571*1b3f573fSAndroid Build Coastguard Worker            csharp |
572*1b3f573fSAndroid Build Coastguard Worker            java_jdk7 |
573*1b3f573fSAndroid Build Coastguard Worker            java_oracle7 |
574*1b3f573fSAndroid Build Coastguard Worker            java_jdk8 |
575*1b3f573fSAndroid Build Coastguard Worker            java_jdk11 |
576*1b3f573fSAndroid Build Coastguard Worker            java_jdk17 |
577*1b3f573fSAndroid Build Coastguard Worker            java_linkage_monitor |
578*1b3f573fSAndroid Build Coastguard Worker            objectivec_ios |
579*1b3f573fSAndroid Build Coastguard Worker            objectivec_ios_debug |
580*1b3f573fSAndroid Build Coastguard Worker            objectivec_ios_release |
581*1b3f573fSAndroid Build Coastguard Worker            objectivec_osx |
582*1b3f573fSAndroid Build Coastguard Worker            objectivec_tvos |
583*1b3f573fSAndroid Build Coastguard Worker            objectivec_tvos_debug |
584*1b3f573fSAndroid Build Coastguard Worker            objectivec_tvos_release |
585*1b3f573fSAndroid Build Coastguard Worker            python |
586*1b3f573fSAndroid Build Coastguard Worker            python_cpp |
587*1b3f573fSAndroid Build Coastguard Worker            python_compatibility |
588*1b3f573fSAndroid Build Coastguard Worker            ruby23 |
589*1b3f573fSAndroid Build Coastguard Worker            ruby24 |
590*1b3f573fSAndroid Build Coastguard Worker            ruby25 |
591*1b3f573fSAndroid Build Coastguard Worker            ruby26 |
592*1b3f573fSAndroid Build Coastguard Worker            ruby27 |
593*1b3f573fSAndroid Build Coastguard Worker            ruby30 |
594*1b3f573fSAndroid Build Coastguard Worker            ruby31 |
595*1b3f573fSAndroid Build Coastguard Worker            jruby92 |
596*1b3f573fSAndroid Build Coastguard Worker            jruby93 |
597*1b3f573fSAndroid Build Coastguard Worker            ruby_all |
598*1b3f573fSAndroid Build Coastguard Worker            php_all |
599*1b3f573fSAndroid Build Coastguard Worker            php_all_32 |
600*1b3f573fSAndroid Build Coastguard Worker            php7.0_mac |
601*1b3f573fSAndroid Build Coastguard Worker            php7.3_mac |
602*1b3f573fSAndroid Build Coastguard Worker            dist_install |
603*1b3f573fSAndroid Build Coastguard Worker            benchmark }
604*1b3f573fSAndroid Build Coastguard Worker"
605*1b3f573fSAndroid Build Coastguard Worker  exit 1
606*1b3f573fSAndroid Build Coastguard Workerfi
607*1b3f573fSAndroid Build Coastguard Worker
608*1b3f573fSAndroid Build Coastguard Workerset -e  # exit immediately on error
609*1b3f573fSAndroid Build Coastguard Workerset -x  # display all commands
610*1b3f573fSAndroid Build Coastguard Workercd $(dirname $0)
611*1b3f573fSAndroid Build Coastguard Workereval "build_$1"
612