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