-
Notifications
You must be signed in to change notification settings - Fork 3.9k
/
Copy pathunix.sh
executable file
·114 lines (98 loc) · 3.74 KB
/
unix.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/bin/bash
# This file is used for both Linux and MacOS builds.
# For Linux, this script is called inside a docker container with
# the correct environment for releases.
# To run locally:
# ./buildscripts/kokoro/unix.sh
# For x86 32 arch:
# ARCH=x86_32 ./buildscripts/kokoro/unix.sh
# For aarch64 arch:
# ARCH=aarch_64 ./buildscripts/kokoro/unix.sh
# For ppc64le arch:
# ARCH=ppcle_64 ./buildscripts/kokoro/unix.sh
# This script assumes `set -e`. Removing it may lead to undefined behavior.
set -exu -o pipefail
# It would be nicer to use 'readlink -f' here but osx does not support it.
readonly GRPC_JAVA_DIR="$(cd "$(dirname "$0")"/../.. && pwd)"
# cd to the root dir of grpc-java
cd $(dirname $0)/../..
# TODO(zpencer): always make sure we are using Oracle jdk8
if [[ -f /usr/libexec/java_home ]]; then
JAVA_HOME=$(/usr/libexec/java_home -v"1.8.0")
fi
# ARCH is x86_64 unless otherwise specified.
ARCH="${ARCH:-x86_64}"
ARCH="$ARCH" buildscripts/make_dependencies.sh
# Set properties via flags, do not pollute gradle.properties
GRADLE_FLAGS="${GRADLE_FLAGS:-}"
GRADLE_FLAGS+=" -PtargetArch=$ARCH"
GRADLE_FLAGS+=" -Pcheckstyle.ignoreFailures=false"
GRADLE_FLAGS+=" -PfailOnWarnings=true"
GRADLE_FLAGS+=" -PerrorProne=true"
GRADLE_FLAGS+=" -PskipAndroid=true"
GRADLE_FLAGS+=" -Dorg.gradle.parallel=true"
export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xmx1g'"
# Make protobuf discoverable by :grpc-compiler
export LD_LIBRARY_PATH=/tmp/protobuf/lib
export LDFLAGS=-L/tmp/protobuf/lib
export CXXFLAGS="-I/tmp/protobuf/include"
./gradlew grpc-compiler:clean $GRADLE_FLAGS
if [[ -z "${SKIP_TESTS:-}" ]]; then
# Ensure all *.proto changes include *.java generated code
./gradlew assemble generateTestProto publishToMavenLocal $GRADLE_FLAGS
if [[ -z "${SKIP_CLEAN_CHECK:-}" && ! -z $(git status --porcelain) ]]; then
git status
echo "Error Working directory is not clean. Forget to commit generated files?"
exit 1
fi
# Run tests
./gradlew build :grpc-all:jacocoTestReport $GRADLE_FLAGS
pushd examples
./gradlew build $GRADLE_FLAGS
# --batch-mode reduces log spam
mvn verify --batch-mode
popd
pushd examples/example-alts
../gradlew build $GRADLE_FLAGS
popd
pushd examples/example-hostname
../gradlew build $GRADLE_FLAGS
mvn verify --batch-mode
popd
pushd examples/example-tls
../gradlew build $GRADLE_FLAGS
mvn verify --batch-mode
popd
pushd examples/example-jwt-auth
../gradlew build $GRADLE_FLAGS
mvn verify --batch-mode
popd
pushd examples/example-xds
../gradlew build $GRADLE_FLAGS
popd
# TODO(zpencer): also build the GAE examples
fi
LOCAL_MVN_TEMP=$(mktemp -d)
# Note that this disables parallel=true from GRADLE_FLAGS
if [[ -z "${ALL_ARTIFACTS:-}" ]]; then
if [[ "$ARCH" = "aarch_64" || "$ARCH" = "ppcle_64" ]]; then
GRADLE_FLAGS+=" -x grpc-compiler:generateTestProto -x grpc-compiler:generateTestLiteProto"
GRADLE_FLAGS+=" -x grpc-compiler:testGolden -x grpc-compiler:testLiteGolden"
GRADLE_FLAGS+=" -x grpc-compiler:testDeprecatedGolden -x grpc-compiler:testDeprecatedLiteGolden"
fi
./gradlew grpc-compiler:build grpc-compiler:publish $GRADLE_FLAGS \
-Dorg.gradle.parallel=false -PrepositoryDir=$LOCAL_MVN_TEMP
else
./gradlew publish :grpc-core:versionFile $GRADLE_FLAGS \
-Dorg.gradle.parallel=false -PrepositoryDir=$LOCAL_MVN_TEMP
pushd examples/example-hostname
../gradlew jibBuildTar $GRADLE_FLAGS
popd
readonly OTHER_ARTIFACT_DIR="${OTHER_ARTIFACT_DIR:-$GRPC_JAVA_DIR/artifacts}"
mkdir -p "$OTHER_ARTIFACT_DIR"
cp core/build/version "$OTHER_ARTIFACT_DIR"/
cp examples/example-hostname/build/example-hostname.* "$OTHER_ARTIFACT_DIR"/
fi
readonly MVN_ARTIFACT_DIR="${MVN_ARTIFACT_DIR:-$GRPC_JAVA_DIR/mvn-artifacts}"
mkdir -p "$MVN_ARTIFACT_DIR"
cp -r "$LOCAL_MVN_TEMP"/* "$MVN_ARTIFACT_DIR"/