Skip to content

Commit b1c39a1

Browse files
authored
ci: add otel overlay to use STL (#15335)
1 parent e5c44a3 commit b1c39a1

File tree

2 files changed

+131
-0
lines changed

2 files changed

+131
-0
lines changed

ci/gha/builds/lib/cmake.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ function cmake::common_args() {
5858
if [[ -n "${VCPKG_TRIPLET:-}" ]]; then
5959
args+=("-DVCPKG_TARGET_TRIPLET=${VCPKG_TRIPLET}")
6060
fi
61+
args+=("-DVCPKG_OVERLAY_PORTS=ci/gha/builds/vcpkg-overlays")
6162
printf "%s\n" "${args[@]}"
6263
}
6364

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
if (VCPKG_TARGET_IS_WINDOWS)
2+
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
3+
endif ()
4+
5+
vcpkg_from_github(
6+
OUT_SOURCE_PATH
7+
SOURCE_PATH
8+
REPO
9+
open-telemetry/opentelemetry-cpp
10+
REF
11+
"v${VERSION}"
12+
SHA512
13+
c93005c9b24b358a9998141f6c7fd9675778731775dacaad18f0e81117fd00aaabff371c04cf96688a9c86117727181052a141d961d4db28fc457b454351c570
14+
HEAD_REF
15+
main
16+
PATCHES
17+
# Missing find_dependency for Abseil
18+
add-missing-find-dependency.patch)
19+
20+
vcpkg_check_features(
21+
OUT_FEATURE_OPTIONS
22+
FEATURE_OPTIONS
23+
FEATURES
24+
etw
25+
WITH_ETW
26+
zipkin
27+
WITH_ZIPKIN
28+
prometheus
29+
WITH_PROMETHEUS
30+
elasticsearch
31+
WITH_ELASTICSEARCH
32+
otlp-http
33+
WITH_OTLP_HTTP
34+
otlp-grpc
35+
WITH_OTLP_GRPC
36+
geneva
37+
WITH_GENEVA
38+
user-events
39+
WITH_USER_EVENTS
40+
INVERTED_FEATURES
41+
user-events
42+
BUILD_TRACEPOINTS)
43+
44+
# opentelemetry-proto is a third party submodule and opentelemetry-cpp release
45+
# did not pack it.
46+
if (WITH_OTLP_GRPC OR WITH_OTLP_HTTP)
47+
set(OTEL_PROTO_VERSION "1.3.1")
48+
vcpkg_download_distfile(
49+
ARCHIVE
50+
URLS
51+
"https://github.com/open-telemetry/opentelemetry-proto/archive/v${OTEL_PROTO_VERSION}.tar.gz"
52+
FILENAME
53+
"opentelemetry-proto-${OTEL_PROTO_VERSION}.tar.gz"
54+
SHA512
55+
8c75e4ff79c4b5b251e0ec8ece92ec901d70ec601644505ffdd137fb728daac91fd9203e1f448500124906737d91d80f10b694977688c655418b94f61c828d06
56+
)
57+
58+
vcpkg_extract_source_archive(src ARCHIVE "${ARCHIVE}")
59+
file(REMOVE_RECURSE "${SOURCE_PATH}/third_party/opentelemetry-proto")
60+
file(COPY "${src}/."
61+
DESTINATION "${SOURCE_PATH}/third_party/opentelemetry-proto")
62+
# Create empty .git directory to prevent opentelemetry from cloning it
63+
# during build time
64+
file(MAKE_DIRECTORY "${SOURCE_PATH}/third_party/opentelemetry-proto/.git")
65+
list(APPEND FEATURE_OPTIONS -DCMAKE_CXX_STANDARD=14)
66+
list(
67+
APPEND
68+
FEATURE_OPTIONS
69+
"-DgRPC_CPP_PLUGIN_EXECUTABLE=${CURRENT_HOST_INSTALLED_DIR}/tools/grpc/grpc_cpp_plugin${VCPKG_HOST_EXECUTABLE_SUFFIX}"
70+
)
71+
endif ()
72+
73+
set(OPENTELEMETRY_CPP_EXTERNAL_COMPONENTS "OFF")
74+
75+
if (WITH_GENEVA OR WITH_USER_EVENTS)
76+
# Geneva and user events exporters from opentelemetry-cpp-contrib are
77+
# tightly coupled with opentelemetry-cpp repo, so they should be ported as a
78+
# feature under opentelemetry-cpp.
79+
clone_opentelemetry_cpp_contrib(CONTRIB_SOURCE_PATH)
80+
81+
if (WITH_GENEVA)
82+
set(OPENTELEMETRY_CPP_EXTERNAL_COMPONENTS
83+
"${CONTRIB_SOURCE_PATH}/exporters/geneva")
84+
if (VCPKG_TARGET_IS_WINDOWS)
85+
set(OPENTELEMETRY_CPP_EXTERNAL_COMPONENTS
86+
"${OPENTELEMETRY_CPP_EXTERNAL_COMPONENTS}\;${CONTRIB_SOURCE_PATH}/exporters/geneva-trace"
87+
)
88+
else ()
89+
set(OPENTELEMETRY_CPP_EXTERNAL_COMPONENTS
90+
"${OPENTELEMETRY_CPP_EXTERNAL_COMPONENTS}\;${CONTRIB_SOURCE_PATH}/exporters/fluentd"
91+
)
92+
endif ()
93+
endif ()
94+
95+
if (WITH_USER_EVENTS)
96+
if (WITH_GENEVA)
97+
set(OPENTELEMETRY_CPP_EXTERNAL_COMPONENTS
98+
"${OPENTELEMETRY_CPP_EXTERNAL_COMPONENTS}\;${CONTRIB_SOURCE_PATH}/exporters/user_events"
99+
)
100+
else ()
101+
set(OPENTELEMETRY_CPP_EXTERNAL_COMPONENTS
102+
"${CONTRIB_SOURCE_PATH}/exporters/user_events")
103+
endif ()
104+
endif ()
105+
endif ()
106+
107+
vcpkg_cmake_configure(
108+
SOURCE_PATH
109+
"${SOURCE_PATH}"
110+
OPTIONS
111+
-DBUILD_TESTING=OFF
112+
-DWITH_EXAMPLES=OFF
113+
-DOPENTELEMETRY_INSTALL=ON
114+
-DWITH_STL=CXX14
115+
-DWITH_ABSEIL=ON
116+
-DWITH_BENCHMARK=OFF
117+
-DOPENTELEMETRY_EXTERNAL_COMPONENT_PATH=${OPENTELEMETRY_CPP_EXTERNAL_COMPONENTS}
118+
${FEATURE_OPTIONS}
119+
MAYBE_UNUSED_VARIABLES
120+
WITH_GENEVA
121+
WITH_USER_EVENTS
122+
BUILD_TRACEPOINTS)
123+
124+
vcpkg_cmake_install()
125+
vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/${PORT}")
126+
vcpkg_copy_pdbs()
127+
128+
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
129+
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
130+
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")

0 commit comments

Comments
 (0)