Index: third_party/grpc/tools/codegen/core/gen_load_balancing_proto.sh |
diff --git a/third_party/grpc/tools/codegen/core/gen_load_balancing_proto.sh b/third_party/grpc/tools/codegen/core/gen_load_balancing_proto.sh |
new file mode 100755 |
index 0000000000000000000000000000000000000000..fb6a468ee0b68d376919750427e89f5f46b23ffb |
--- /dev/null |
+++ b/third_party/grpc/tools/codegen/core/gen_load_balancing_proto.sh |
@@ -0,0 +1,138 @@ |
+#!/bin/bash |
+ |
+# Copyright 2016, Google Inc. |
+# All rights reserved. |
+# |
+# Redistribution and use in source and binary forms, with or without |
+# modification, are permitted provided that the following conditions are |
+# met: |
+# |
+# * Redistributions of source code must retain the above copyright |
+# notice, this list of conditions and the following disclaimer. |
+# * Redistributions in binary form must reproduce the above |
+# copyright notice, this list of conditions and the following disclaimer |
+# in the documentation and/or other materials provided with the |
+# distribution. |
+# * Neither the name of Google Inc. nor the names of its |
+# contributors may be used to endorse or promote products derived from |
+# this software without specific prior written permission. |
+# |
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+ |
+# |
+# Example usage: |
+# tools/codegen/core/gen_load_balancing_proto.sh \ |
+# src/proto/grpc/lb/v0/load_balancer.proto |
+ |
+read -r -d '' COPYRIGHT <<'EOF' |
+/* |
+ * |
+ * Copyright <YEAR>, Google Inc. |
+ * All rights reserved. |
+ * |
+ * Redistribution and use in source and binary forms, with or without |
+ * modification, are permitted provided that the following conditions are |
+ * met: |
+ * |
+ * * Redistributions of source code must retain the above copyright |
+ * notice, this list of conditions and the following disclaimer. |
+ * * Redistributions in binary form must reproduce the above |
+ * copyright notice, this list of conditions and the following disclaimer |
+ * in the documentation and/or other materials provided with the |
+ * distribution. |
+ * * Neither the name of Google Inc. nor the names of its |
+ * contributors may be used to endorse or promote products derived from |
+ * this software without specific prior written permission. |
+ * |
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+ * |
+ */ |
+ |
+EOF |
+ |
+CURRENT_YEAR=$(date +%Y) |
+COPYRIGHT_FILE=$(mktemp) |
+echo "${COPYRIGHT/<YEAR>/$CURRENT_YEAR}" > $COPYRIGHT_FILE |
+ |
+set -ex |
+if [ $# -eq 0 ]; then |
+ echo "Usage: $0 <load_balancer.proto> [output dir]" |
+ exit 1 |
+fi |
+ |
+readonly GRPC_ROOT=$PWD |
+ |
+OUTPUT_DIR="$GRPC_ROOT/src/core/proto/grpc/lb/v0" |
+if [ $# -eq 2 ]; then |
+ mkdir -p "$2" |
+ if [ $? != 0 ]; then |
+ echo "Error creating output directory $2" |
+ exit 2 |
+ fi |
+ OUTPUT_DIR="$2" |
+fi |
+ |
+readonly EXPECTED_OPTIONS_FILE_PATH="${1%.*}.options" |
+ |
+if [[ ! -f "$1" ]]; then |
+ echo "Input proto file '$1' doesn't exist." |
+ exit 3 |
+fi |
+if [[ ! -f "${EXPECTED_OPTIONS_FILE_PATH}" ]]; then |
+ echo "Expected nanopb options file '${EXPECTED_OPTIONS_FILE_PATH}' missing" |
+ exit 4 |
+fi |
+ |
+readonly VENV_DIR=$(mktemp -d) |
+readonly VENV_NAME="nanopb-$(date '+%Y%m%d_%H%M%S_%N')" |
+pushd $VENV_DIR |
+virtualenv $VENV_NAME |
+. $VENV_NAME/bin/activate |
+popd |
+ |
+# this should be the same version as the submodule we compile against |
+# ideally we'd update this as a template to ensure that |
+pip install protobuf==3.0.0b2 |
+ |
+pushd "$(dirname $1)" > /dev/null |
+ |
+protoc \ |
+--plugin=protoc-gen-nanopb="$GRPC_ROOT/third_party/nanopb/generator/protoc-gen-nanopb" \ |
+--nanopb_out='-T -L#include\ \"third_party/nanopb/pb.h\"'":$OUTPUT_DIR" \ |
+"$(basename $1)" |
+ |
+readonly PROTO_BASENAME=$(basename $1 .proto) |
+sed -i "s:$PROTO_BASENAME.pb.h:src/core/proto/grpc/lb/v0/$PROTO_BASENAME.pb.h:g" \ |
+ "$OUTPUT_DIR/$PROTO_BASENAME.pb.c" |
+ |
+# prepend copyright |
+TMPFILE=$(mktemp) |
+cat $COPYRIGHT_FILE "$OUTPUT_DIR/$PROTO_BASENAME.pb.c" > $TMPFILE |
+mv -v $TMPFILE "$OUTPUT_DIR/$PROTO_BASENAME.pb.c" |
+cat $COPYRIGHT_FILE "$OUTPUT_DIR/$PROTO_BASENAME.pb.h" > $TMPFILE |
+mv -v $TMPFILE "$OUTPUT_DIR/$PROTO_BASENAME.pb.h" |
+ |
+deactivate |
+rm -rf $VENV_DIR |
+ |
+popd > /dev/null |