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
No related tags found
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 @@
...
@@ -31,8 +31,16 @@
#
#
# Example usage:
# 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
# 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
'
read
-r
-d
''
COPYRIGHT
<<
'
EOF
'
/*
/*
...
@@ -75,34 +83,37 @@ COPYRIGHT_FILE=$(mktemp)
...
@@ -75,34 +83,37 @@ COPYRIGHT_FILE=$(mktemp)
echo
"
${
COPYRIGHT
/<YEAR>/
$CURRENT_YEAR
}
"
>
$COPYRIGHT_FILE
echo
"
${
COPYRIGHT
/<YEAR>/
$CURRENT_YEAR
}
"
>
$COPYRIGHT_FILE
set
-ex
set
-ex
if
[
$#
-
eq
0
]
;
then
if
[
$#
-
lt
2
]
||
[
$#
-gt
3
]
;
then
echo
"Usage:
$0
<
load_balancer.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
"
OUTPUT_DIR
=
"
$GRPC_ROOT
/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0"
readonly
OUTPUT_DIR
=
"
$2
"
if
[
$#
-eq
2
]
;
then
readonly
GRPC_OUTPUT_DIR
=
"
${
3
:-
$OUTPUT_DIR
}
"
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"
readonly
EXPECTED_OPTIONS_FILE_PATH
=
"
${
1
%.*
}
.options"
if
[[
!
-f
"
$
1
"
]]
;
then
if
[[
!
-f
"
$
INPUT_PROTO
"
]]
;
then
echo
"Input proto file '
$
1
' doesn't exist."
echo
"Input proto file '
$
INPUT_PROTO
' doesn't exist."
exit
3
exit
2
fi
fi
if
[[
!
-f
"
${
EXPECTED_OPTIONS_FILE_PATH
}
"
]]
;
then
if
[[
!
-f
"
${
EXPECTED_OPTIONS_FILE_PATH
}
"
]]
;
then
echo
"Expected nanopb options file '
${
EXPECTED_OPTIONS_FILE_PATH
}
' missing"
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
exit
4
fi
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_DIR
=
$(
mktemp
-d
)
readonly
VENV_NAME
=
"nanopb-
$(
date
'+%Y%m%d_%H%M%S_%N'
)
"
readonly
VENV_NAME
=
"nanopb-
$(
date
'+%Y%m%d_%H%M%S_%N'
)
"
pushd
$VENV_DIR
pushd
$VENV_DIR
...
@@ -114,16 +125,16 @@ popd
...
@@ -114,16 +125,16 @@ popd
# ideally we'd update this as a template to ensure that
# ideally we'd update this as a template to ensure that
pip
install
protobuf
==
3.0.0b2
pip
install
protobuf
==
3.0.0b2
pushd
"
$(
dirname
$
1
)
"
>
/dev/null
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\"'
":
$OUTPUT_DIR
"
\
--nanopb_out
=
'-T -L#include\ \"third_party/nanopb/pb.h\"'
":
$OUTPUT_DIR
"
\
"
$(
basename
$
1
)
"
"
$(
basename
$
INPUT_PROTO
)
"
readonly
PROTO_BASENAME
=
$(
basename
$
1
.proto
)
readonly
PROTO_BASENAME
=
$(
basename
$
INPUT_PROTO
.proto
)
sed
-i
"s:
$PROTO_BASENAME
.pb.h:
src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0
/
$PROTO_BASENAME
.pb.h:g"
\
sed
-i
"s:
$PROTO_BASENAME
.pb.h:
${
GRPC_OUTPUT_DIR
}
/
$PROTO_BASENAME
.pb.h:g"
\
"
$OUTPUT_DIR
/
$PROTO_BASENAME
.pb.c"
"
$OUTPUT_DIR
/
$PROTO_BASENAME
.pb.c"
# prepend copyright
# prepend copyright
TMPFILE
=
$(
mktemp
)
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 @@
...
@@ -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_
load_balancing
_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
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