Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
G
Grpc
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
tci-gateway-module
Grpc
Commits
de4fcb3a
Commit
de4fcb3a
authored
8 years ago
by
Jan Tattermusch
Browse files
Options
Downloads
Plain Diff
Merge pull request #6050 from dgquintas/nanopb_generation
Generalized nanopb generator script
parents
679cfaf2
f7d9cbe6
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
tools/codegen/core/gen_nano_proto.sh
+34
-23
34 additions, 23 deletions
tools/codegen/core/gen_nano_proto.sh
tools/distrib/check_nanopb_output.sh
+17
-11
17 additions, 11 deletions
tools/distrib/check_nanopb_output.sh
with
51 additions
and
34 deletions
tools/codegen/core/gen_
load_balancing
_proto.sh
→
tools/codegen/core/gen_
nano
_proto.sh
+
34
−
23
View file @
de4fcb3a
...
...
@@ -31,8 +31,16 @@
#
# Example usage:
# tools/codegen/core/gen_
load_balancing
_proto.sh \
# tools/codegen/core/gen_
nano
_proto.sh \
# src/proto/grpc/lb/v0/load_balancer.proto
# $PWD/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0
#
# Exit statuses:
# 1: Incorrect number of arguments
# 2: Input proto file (1st argument) doesn't exist or is not a regular file.
# 3: Options file for nanopb not found in same dir as the input proto file.
# 4: Output dir not an absolute path.
# 5: Couldn't create output directory (2nd argument).
read
-r
-d
''
COPYRIGHT
<<
'
EOF
'
/*
...
...
@@ -75,34 +83,37 @@ COPYRIGHT_FILE=$(mktemp)
echo
"
${
COPYRIGHT
/<YEAR>/
$CURRENT_YEAR
}
"
>
$COPYRIGHT_FILE
set
-ex
if
[
$#
-
eq
0
]
;
then
echo
"Usage:
$0
<
load_balancer.proto> [output dir
]"
if
[
$#
-
lt
2
]
||
[
$#
-gt
3
]
;
then
echo
"Usage:
$0
<
input.proto> <absolute path to output dir> [grpc path
]"
exit
1
fi
readonly
GRPC_ROOT
=
$PWD
OUTPUT_DIR
=
"
$GRPC_ROOT
/src/core/ext/lb_policy/grpclb/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
GRPC_ROOT
=
"
$PWD
"
readonly
INPUT_PROTO
=
"
$1
"
readonly
OUTPUT_DIR
=
"
$2
"
readonly
GRPC_OUTPUT_DIR
=
"
${
3
:-
$OUTPUT_DIR
}
"
readonly
EXPECTED_OPTIONS_FILE_PATH
=
"
${
1
%.*
}
.options"
if
[[
!
-f
"
$
1
"
]]
;
then
echo
"Input proto file '
$
1
' doesn't exist."
exit
3
if
[[
!
-f
"
$
INPUT_PROTO
"
]]
;
then
echo
"Input proto file '
$
INPUT_PROTO
' doesn't exist."
exit
2
fi
if
[[
!
-f
"
${
EXPECTED_OPTIONS_FILE_PATH
}
"
]]
;
then
echo
"Expected nanopb options file '
${
EXPECTED_OPTIONS_FILE_PATH
}
' missing"
exit
3
fi
if
[[
"
${
OUTPUT_DIR
:0:1
}
"
!=
'/'
]]
;
then
echo
"The output directory must be an absolute path. Got '
$OUTPUT_DIR
'"
exit
4
fi
mkdir
-p
"
$OUTPUT_DIR
"
if
[
$?
!=
0
]
;
then
echo
"Error creating output directory
$OUTPUT_DIR
"
exit
5
fi
readonly
VENV_DIR
=
$(
mktemp
-d
)
readonly
VENV_NAME
=
"nanopb-
$(
date
'+%Y%m%d_%H%M%S_%N'
)
"
pushd
$VENV_DIR
...
...
@@ -114,16 +125,16 @@ popd
# ideally we'd update this as a template to ensure that
pip
install
protobuf
==
3.0.0b2
pushd
"
$(
dirname
$
1
)
"
>
/dev/null
pushd
"
$(
dirname
$
INPUT_PROTO
)
"
>
/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
)
"
"
$(
basename
$
INPUT_PROTO
)
"
readonly
PROTO_BASENAME
=
$(
basename
$
1
.proto
)
sed
-i
"s:
$PROTO_BASENAME
.pb.h:
src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0
/
$PROTO_BASENAME
.pb.h:g"
\
"
$OUTPUT_DIR
/
$PROTO_BASENAME
.pb.c"
readonly
PROTO_BASENAME
=
$(
basename
$
INPUT_PROTO
.proto
)
sed
-i
"s:
$PROTO_BASENAME
.pb.h:
${
GRPC_OUTPUT_DIR
}
/
$PROTO_BASENAME
.pb.h:g"
\
"
$OUTPUT_DIR
/
$PROTO_BASENAME
.pb.c"
# prepend copyright
TMPFILE
=
$(
mktemp
)
...
...
This diff is collapsed.
Click to expand it.
tools/distrib/check_nanopb_output.sh
+
17
−
11
View file @
de4fcb3a
...
...
@@ -31,36 +31,42 @@
set
-ex
readonly
NANOPB_TMP_OUTPUT
=
"
$(
mktemp
-d
)
"
readonly
PROTOBUF_INSTALL_PREFIX
=
"
$(
mktemp
-d
)
"
# install protoc version 3
pushd
third_party/protobuf
./autogen.sh
./configure
./configure
--prefix
=
"
$PROTOBUF_INSTALL_PREFIX
"
make
make
install
ldconfig
#
ldconfig
popd
if
[
!
-x
"/usr/local/bin/protoc"
]
;
then
echo
"Error: protoc not found in path"
readonly
PROTOC_BIN_PATH
=
"
$PROTOBUF_INSTALL_PREFIX
/bin"
if
[
!
-x
"
$PROTOBUF_INSTALL_PREFIX
/bin/protoc"
]
;
then
echo
"Error: protoc not found in temp install dir '
$PROTOBUF_INSTALL_PREFIX
'"
exit
1
fi
readonly
PROTOC_PATH
=
'/usr/local/bin'
# stack up and change to nanopb's proto generator directory
pushd
third_party/nanopb/generator/proto
PATH
=
"
$PROTOC_PATH
:
$PATH
"
make
export
PATH
=
"
$PROTOC_
BIN_
PATH
:
$PATH
"
make
# back to the root directory
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
PATH
=
"
$PROTOC_PATH
:
$PATH
"
./tools/codegen/core/gen_
load_balancing
_proto.sh
\
./tools/codegen/core/gen_
nano
_proto.sh
\
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
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
fi
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment