Skip to content
Snippets Groups Projects
Commit d6b4628f authored by David Garcia Quintas's avatar David Garcia Quintas
Browse files

Further improvements

parent 4875ce60
No related branches found
No related tags found
No related merge requests found
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
# Example usage: # Example usage:
# tools/codegen/core/gen_nano_proto.sh \ # tools/codegen/core/gen_nano_proto.sh \
# src/proto/grpc/lb/v0/load_balancer.proto # src/proto/grpc/lb/v0/load_balancer.proto
# src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0 # $PWD/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0
read -r -d '' COPYRIGHT <<'EOF' read -r -d '' COPYRIGHT <<'EOF'
/* /*
...@@ -76,15 +76,15 @@ COPYRIGHT_FILE=$(mktemp) ...@@ -76,15 +76,15 @@ COPYRIGHT_FILE=$(mktemp)
echo "${COPYRIGHT/<YEAR>/$CURRENT_YEAR}" > $COPYRIGHT_FILE echo "${COPYRIGHT/<YEAR>/$CURRENT_YEAR}" > $COPYRIGHT_FILE
set -ex set -ex
if [ $# -ne 2 ]; then if [ $# -lt 2 ]; then
echo "Usage: $0 <input.proto> <output dir>" echo "Usage: $0 <input.proto> <absolute path to output dir> [grpc path]"
exit 1 exit 1
fi fi
readonly GRPC_ROOT=$PWD readonly GRPC_ROOT="$PWD"
readonly INPUT_PROTO="$1" readonly INPUT_PROTO="$1"
readonly REL_OUTPUT_DIR="$2" readonly OUTPUT_DIR="$2"
readonly ABS_OUTPUT_DIR="$GRPC_ROOT/$2" readonly GRPC_OUTPUT_DIR="${3:-$OUTPUT_DIR}"
readonly EXPECTED_OPTIONS_FILE_PATH="${1%.*}.options" readonly EXPECTED_OPTIONS_FILE_PATH="${1%.*}.options"
if [[ ! -f "$INPUT_PROTO" ]]; then if [[ ! -f "$INPUT_PROTO" ]]; then
...@@ -96,9 +96,14 @@ if [[ ! -f "${EXPECTED_OPTIONS_FILE_PATH}" ]]; then ...@@ -96,9 +96,14 @@ if [[ ! -f "${EXPECTED_OPTIONS_FILE_PATH}" ]]; then
exit 4 exit 4
fi fi
mkdir -p "$ABS_OUTPUT_DIR" if [[ "${OUTPUT_DIR:0:1}" != '/' ]]; then
echo "The output directory must be an absolute path. Got '$OUTPUT_DIR'"
exit 5
fi
mkdir -p "$OUTPUT_DIR"
if [ $? != 0 ]; then if [ $? != 0 ]; then
echo "Error creating output directory $ABS_OUTPUT_DIR" echo "Error creating output directory $OUTPUT_DIR"
exit 2 exit 2
fi fi
...@@ -117,19 +122,19 @@ pushd "$(dirname $INPUT_PROTO)" > /dev/null ...@@ -117,19 +122,19 @@ pushd "$(dirname $INPUT_PROTO)" > /dev/null
protoc \ protoc \
--plugin=protoc-gen-nanopb="$GRPC_ROOT/third_party/nanopb/generator/protoc-gen-nanopb" \ --plugin=protoc-gen-nanopb="$GRPC_ROOT/third_party/nanopb/generator/protoc-gen-nanopb" \
--nanopb_out='-T -L#include\ \"third_party/nanopb/pb.h\"'":$ABS_OUTPUT_DIR" \ --nanopb_out='-T -L#include\ \"third_party/nanopb/pb.h\"'":$OUTPUT_DIR" \
"$(basename $INPUT_PROTO)" "$(basename $INPUT_PROTO)"
readonly PROTO_BASENAME=$(basename $INPUT_PROTO .proto) readonly PROTO_BASENAME=$(basename $INPUT_PROTO .proto)
sed -i "s:$PROTO_BASENAME.pb.h:$REL_OUTPUT_DIR/$PROTO_BASENAME.pb.h:g" \ sed -i "s:$PROTO_BASENAME.pb.h:${GRPC_OUTPUT_DIR}/$PROTO_BASENAME.pb.h:g" \
"$ABS_OUTPUT_DIR/$PROTO_BASENAME.pb.c" "$OUTPUT_DIR/$PROTO_BASENAME.pb.c"
# prepend copyright # prepend copyright
TMPFILE=$(mktemp) TMPFILE=$(mktemp)
cat $COPYRIGHT_FILE "$ABS_OUTPUT_DIR/$PROTO_BASENAME.pb.c" > $TMPFILE cat $COPYRIGHT_FILE "$OUTPUT_DIR/$PROTO_BASENAME.pb.c" > $TMPFILE
mv -v $TMPFILE "$ABS_OUTPUT_DIR/$PROTO_BASENAME.pb.c" mv -v $TMPFILE "$OUTPUT_DIR/$PROTO_BASENAME.pb.c"
cat $COPYRIGHT_FILE "$ABS_OUTPUT_DIR/$PROTO_BASENAME.pb.h" > $TMPFILE cat $COPYRIGHT_FILE "$OUTPUT_DIR/$PROTO_BASENAME.pb.h" > $TMPFILE
mv -v $TMPFILE "$ABS_OUTPUT_DIR/$PROTO_BASENAME.pb.h" mv -v $TMPFILE "$OUTPUT_DIR/$PROTO_BASENAME.pb.h"
deactivate deactivate
rm -rf $VENV_DIR rm -rf $VENV_DIR
......
...@@ -31,36 +31,42 @@ ...@@ -31,36 +31,42 @@
set -ex set -ex
readonly NANOPB_TMP_OUTPUT="$(mktemp -d)" readonly NANOPB_TMP_OUTPUT="$(mktemp -d)"
readonly PROTOBUF_INSTALL_PREFIX="$(mktemp -d)"
# install protoc version 3 # install protoc version 3
pushd third_party/protobuf pushd third_party/protobuf
./autogen.sh ./autogen.sh
./configure ./configure --prefix="$PROTOBUF_INSTALL_PREFIX"
make make
make install make install
ldconfig #ldconfig
popd popd
if [ ! -x "/usr/local/bin/protoc" ]; then readonly PROTOC_BIN_PATH="$PROTOBUF_INSTALL_PREFIX/bin"
echo "Error: protoc not found in path" if [ ! -x "$PROTOBUF_INSTALL_PREFIX/bin/protoc" ]; then
echo "Error: protoc not found in temp install dir '$PROTOBUF_INSTALL_PREFIX'"
exit 1 exit 1
fi fi
readonly PROTOC_PATH='/usr/local/bin'
# stack up and change to nanopb's proto generator directory # stack up and change to nanopb's proto generator directory
pushd third_party/nanopb/generator/proto pushd third_party/nanopb/generator/proto
PATH="$PROTOC_PATH:$PATH" make export PATH="$PROTOC_BIN_PATH:$PATH"
make
# back to the root directory # back to the root directory
popd popd
#
# Checks for load_balancer.proto
#
readonly LOAD_BALANCER_GRPC_OUTPUT_PATH='src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0'
# nanopb-compile the proto to a temp location # nanopb-compile the proto to a temp location
PATH="$PROTOC_PATH:$PATH" ./tools/codegen/core/gen_nano_proto.sh \ ./tools/codegen/core/gen_nano_proto.sh \
src/proto/grpc/lb/v0/load_balancer.proto \ src/proto/grpc/lb/v0/load_balancer.proto \
$NANOPB_TMP_OUTPUT "$NANOPB_TMP_OUTPUT" \
"$LOAD_BALANCER_GRPC_OUTPUT_PATH"
# compare outputs to checked compiled code # compare outputs to checked compiled code
if ! diff -r $NANOPB_TMP_OUTPUT src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0; then if ! diff -r $NANOPB_TMP_OUTPUT src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0; then
echo "Outputs differ: $NANOPB_TMP_OUTPUT vs src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0" echo "Outputs differ: $NANOPB_TMP_OUTPUT vs $LOAD_BALANCER_GRPC_OUTPUT_PATH"
exit 2 exit 2
fi fi
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment