Skip to content

Commit 1efe410

Browse files
Generate proto for C++ (#1871)
* Generate proto for C++ #1787 Signed-off-by: Charlie Le <charlie_le@apple.com> * build: update .licenserc.json to include currency generated files and load environment variables in docker-gen-proto.sh Signed-off-by: Charlie Le <charlie_le@apple.com> * fix: update script to source environment variables from the correct path Signed-off-by: Charlie Le <charlie_le@apple.com> * build: update Dockerfiles and CMakeLists for currency service, adjust generated files handling Signed-off-by: Charlie Le <charlie_le@apple.com> * refactor: rename currency service project to currency-proto and update related CMake configurations Signed-off-by: Charlie Le <charlie_le@apple.com> * add line break --------- Signed-off-by: Charlie Le <charlie_le@apple.com> Co-authored-by: Juliano Costa <julianocosta89@outlook.com> Co-authored-by: Juliano Costa <juliano.costa@datadoghq.com>
1 parent c217f58 commit 1efe410

18 files changed

+29251
-67
lines changed

.gitignore

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
2-
31
*~
42
*.iml
53
*.ipr
@@ -58,3 +56,5 @@ test/tracetesting/tracetesting-vars.yaml
5856

5957
# Android
6058
*.apk
59+
60+
!src/currency/build

.licenserc.json

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
"/src/accounting/src/protos/",
4242
"src/cart/src/obj/",
4343
"src/cart/tests/obj/",
44+
"src/currency/build/",
4445
"src/checkoutservice/genproto/",
4546
"src/featureflagservice/assets/vendor/",
4647
"src/featureflagservice/priv/",

docker-gen-proto.sh

+25-12
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,42 @@ set -x # Print commands and their arguments as they are executed
77

88
# This script is used to generate protobuf files for all services with Docker.
99

10+
. ./.env
11+
1012
gen_proto_go() {
1113
echo "Generating Go protobuf files for $1"
1214
docker build -f "src/$1/genproto/Dockerfile" -t "$1-genproto" .
1315
docker run --rm -v $(pwd):/build "$1-genproto" \
1416
protoc -I /build/pb /build/pb/demo.proto --go_out="./src/$1/" --go-grpc_out="./src/$1/"
1517
}
1618

19+
gen_proto_cpp() {
20+
echo "Generating Cpp protobuf files for $1"
21+
docker build --build-arg OPENTELEMETRY_CPP_VERSION=${OPENTELEMETRY_CPP_VERSION} -f "src/$1/genproto/Dockerfile" -t "$1-genproto" .
22+
docker run --rm -v $(pwd):/build "$1-genproto" \
23+
cp -r "/$1/build/generated" "/build/src/$1/build/"
24+
}
25+
1726
gen_proto_python() {
1827
echo "Generating Python protobuf files for $1"
1928
docker build -f "src/$1/genproto/Dockerfile" -t "$1-genproto" .
2029
docker run --rm -v $(pwd):/build "$1-genproto" \
2130
python -m grpc_tools.protoc -I /build/pb/ --python_out="./src/$1/" --grpc_python_out="./src/$1/" /build/pb/demo.proto
2231
}
2332

24-
#gen_proto_dotnet accounting
25-
#gen_proto_java ad
26-
#gen_proto_dotnet cart
27-
gen_proto_go checkoutservice
28-
#gen_proto_cpp currency
29-
#gen_proto_ruby email
30-
#gen_proto_ts frontend
31-
#gen_proto_js payment
32-
gen_proto_go productcatalogservice
33-
#gen_proto_php quote
34-
gen_proto_python recommendation
35-
#gen_proto_rust shipping
33+
if [ -z "$1" ]; then
34+
#gen_proto_dotnet accounting
35+
#gen_proto_java ad
36+
#gen_proto_dotnet cart
37+
gen_proto_go checkoutservice
38+
gen_proto_cpp currency
39+
#gen_proto_ruby email
40+
#gen_proto_ts frontend
41+
#gen_proto_js payment
42+
gen_proto_go productcatalogservice
43+
#gen_proto_php quote
44+
gen_proto_python recommendation
45+
#gen_proto_rust shipping
46+
else
47+
"gen_proto_$1" "$2"
48+
fi

src/currency/.dockerignore

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
client.js
22
node_modules/
3-
build/
43
out/

src/currency/CMakeLists.txt

+1-49
Original file line numberDiff line numberDiff line change
@@ -5,58 +5,10 @@ find_package(Protobuf REQUIRED)
55
find_package(gRPC CONFIG REQUIRED)
66
find_package(opentelemetry-cpp CONFIG REQUIRED)
77

8-
set(PROTO_PATH "${CMAKE_CURRENT_SOURCE_DIR}/proto")
98
set(GENERATED_PROTOBUF_PATH "${CMAKE_BINARY_DIR}/generated/proto")
10-
set(GENERATED_HEALTH_PROTOBUF_PATH "${GENERATED_PROTOBUF_PATH}/grpc/health/v1")
119

12-
file(MAKE_DIRECTORY "${GENERATED_PROTOBUF_PATH}")
10+
add_subdirectory(genproto)
1311

14-
set(DEMO_PROTO "${PROTO_PATH}/demo.proto")
15-
set(DEMO_PB_CPP_FILE "${GENERATED_PROTOBUF_PATH}/demo.pb.cc")
16-
set(DEMO_PB_H_FILE "${GENERATED_PROTOBUF_PATH}/demo.pb.h")
17-
set(DEMO_GRPC_PB_CPP_FILE "${GENERATED_PROTOBUF_PATH}/demo.grpc.pb.cc")
18-
set(DEMO_GRPC_PB_H_FILE "${GENERATED_PROTOBUF_PATH}/demo.grpc.pb.h")
19-
set(HEALTH_PROTO "${PROTO_PATH}/grpc/health/v1/health.proto")
20-
set(HEALTH_PB_CPP_FILE "${GENERATED_HEALTH_PROTOBUF_PATH}/health.pb.cc")
21-
set(HEALTH_PB_H_FILE "${GENERATED_HEALTH_PROTOBUF_PATH}/health.pb.h")
22-
set(HEALTH_GRPC_PB_CPP_FILE "${GENERATED_HEALTH_PROTOBUF_PATH}/health.grpc.pb.cc")
23-
set(HEALTH_GRPC_PB_H_FILE "${GENERATED_HEALTH_PROTOBUF_PATH}/health.grpc.pb.h")
24-
25-
foreach(IMPORT_DIR ${PROTOBUF_IMPORT_DIRS})
26-
list(APPEND PROTOBUF_INCLUDE_FLAGS "-I${IMPORT_DIR}")
27-
endforeach()
28-
29-
find_program(gRPC_CPP_PLUGIN_EXECUTABLE grpc_cpp_plugin)
30-
31-
add_custom_command(
32-
OUTPUT ${DEMO_PB_H_FILE}
33-
${DEMO_PB_CPP_FILE}
34-
${DEMO_GRPC_PB_CPP_FILE}
35-
${DEMO_GRPC_PB_H_FILE}
36-
${HEALTH_PB_H_FILE}
37-
${HEALTH_PB_CPP_FILE}
38-
${HEALTH_GRPC_PB_CPP_FILE}
39-
${HEALTH_GRPC_PB_H_FILE}
40-
41-
COMMAND
42-
${PROTOBUF_PROTOC_EXECUTABLE} ARGS "--experimental_allow_proto3_optional"
43-
"--proto_path=${PROTO_PATH}" ${PROTOBUF_INCLUDE_FLAGS}
44-
"--cpp_out=${GENERATED_PROTOBUF_PATH}"
45-
"--grpc_out=generate_mock_code=true:${GENERATED_PROTOBUF_PATH}"
46-
--plugin=protoc-gen-grpc="${gRPC_CPP_PLUGIN_EXECUTABLE}" ${DEMO_PROTO} ${HEALTH_PROTO})
47-
48-
message(STATUS "gRPC_CPP_PLUGIN_EXECUTABLE=${gRPC_CPP_PLUGIN_EXECUTABLE}")
49-
50-
add_library(demo-proto ${DEMO_PB_H_FILE}
51-
${DEMO_PB_CPP_FILE}
52-
${DEMO_GRPC_PB_CPP_FILE}
53-
${DEMO_GRPC_PB_H_FILE}
54-
${HEALTH_PB_H_FILE}
55-
${HEALTH_PB_CPP_FILE}
56-
${HEALTH_GRPC_PB_CPP_FILE}
57-
${HEALTH_GRPC_PB_H_FILE})
58-
59-
target_link_libraries(demo-proto gRPC::grpc++ protobuf::libprotobuf)
6012
include_directories("${GENERATED_PROTOBUF_PATH}" "${OPENTELEMETRY_CPP_INCLUDE_DIRS}")
6113

6214
add_executable(currency src/server.cpp)

src/currency/Dockerfile

+2-3
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@ RUN apk update && apk add git cmake make g++ grpc-dev protobuf-dev linux-headers
2020

2121
ARG OPENTELEMETRY_CPP_VERSION
2222

23-
RUN git clone https://github.com/open-telemetry/opentelemetry-cpp \
24-
&& cd opentelemetry-cpp/ \
25-
&& git checkout tags/v${OPENTELEMETRY_CPP_VERSION} -b v${OPENTELEMETRY_CPP_VERSION} \
23+
RUN git clone --depth 1 --branch v${OPENTELEMETRY_CPP_VERSION} https://github.com/open-telemetry/opentelemetry-cpp \
24+
&& cd opentelemetry-cpp/ \
2625
&& mkdir build \
2726
&& cd build \
2827
&& cmake .. -DCMAKE_CXX_STANDARD=17 -DCMAKE_POSITION_INDEPENDENT_CODE=ON \

0 commit comments

Comments
 (0)