Skip to content
This repository was archived by the owner on Aug 30, 2022. It is now read-only.

Commit 52e01a7

Browse files
author
Isaac Hier
committed
Attempt building opentracing to test dynamic loading
Signed-off-by: Isaac Hier <ihier@uber.com>
1 parent 454ab1f commit 52e01a7

File tree

4 files changed

+70
-40
lines changed

4 files changed

+70
-40
lines changed

CMakeLists.txt

+25-18
Original file line numberDiff line numberDiff line change
@@ -107,18 +107,18 @@ if(JAEGERTRACING_BUILD_CROSSDOCK)
107107
set(CROSSDOCK_SRC crossdock/Server.cpp)
108108
add_executable(crossdock ${CROSSDOCK_SRC})
109109
target_include_directories(crossdock PUBLIC
110-
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/crossdock>)
111-
target_link_libraries(crossdock PUBLIC jaegertracing-static)
110+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/crossdock>)
111+
target_link_libraries(crossdock PUBLIC ${JAEGERTRACING_LIB})
112112

113113
set(JAEGER_CROSSDOCK_URL
114114
"https://raw.githubusercontent.com/jaegertracing/jaeger/master/docker-compose/\
115115
jaeger-docker-compose.yml")
116116
file(DOWNLOAD ${JAEGER_CROSSDOCK_URL}
117-
"${PROJECT_SOURCE_DIR}/crossdock/jaeger-docker-compose.yml")
117+
"${CMAKE_CURRENT_SOURCE_DIR}/crossdock/jaeger-docker-compose.yml")
118118
find_program(DOCKER_COMPOSE_EXE docker-compose REQUIRED)
119119
set(DOCKER_COMPOSE_CMD ${DOCKER_COMPOSE_EXE}
120-
-f ${PROJECT_SOURCE_DIR}/crossdock/docker-compose.yml
121-
-f ${PROJECT_SOURCE_DIR}/crossdock/jaeger-docker-compose.yml)
120+
-f ${CMAKE_CURRENT_SOURCE_DIR}/crossdock/docker-compose.yml
121+
-f ${CMAKE_CURRENT_SOURCE_DIR}/crossdock/jaeger-docker-compose.yml)
122122
add_custom_target(crossdock-kill
123123
COMMAND ${DOCKER_COMPOSE_CMD} kill
124124
COMMAND ${DOCKER_COMPOSE_CMD} rm --force)
@@ -231,28 +231,35 @@ set(SRC
231231
src/jaegertracing/utils/UDPClient.cpp
232232
src/jaegertracing/utils/YAML.cpp)
233233

234-
add_library(jaegertracing SHARED ${SRC})
235-
target_include_directories(jaegertracing PUBLIC
236-
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>
237-
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/src>)
238-
target_link_libraries(jaegertracing ${LIBS})
239-
set_target_properties(jaegertracing PROPERTIES
240-
VERSION ${PROJECT_VERSION}
241-
SOVERSION ${PROJECT_VERSION_MAJOR})
234+
if(BUILD_SHARED_LIBS)
235+
add_library(jaegertracing SHARED ${SRC})
236+
target_include_directories(jaegertracing PUBLIC
237+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
238+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/src>)
239+
target_link_libraries(jaegertracing ${LIBS})
240+
set_target_properties(jaegertracing PROPERTIES
241+
VERSION ${PROJECT_VERSION}
242+
SOVERSION ${PROJECT_VERSION_MAJOR})
243+
set(JAEGERTRACING_LIB jaegertracing)
244+
list(APPEND JAEGERTRACING_LIBS jaegertracing)
245+
endif()
242246

243247
add_library(jaegertracing-static STATIC ${SRC})
244248
target_include_directories(jaegertracing-static PUBLIC
245-
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>
246-
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/src>)
249+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
250+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/src>)
247251
target_link_libraries(jaegertracing-static ${LIBS})
248252
set_target_properties(jaegertracing-static PROPERTIES
249253
OUTPUT_NAME jaegertracing)
254+
if(NOT JAEGERTRACING_LIB)
255+
set(JAEGERTRACING_LIB jaegertracing-static)
256+
endif()
257+
list(APPEND JAEGERTRACING_LIBS jaegertracing-static)
250258

251259
configure_file(
252260
src/jaegertracing/Constants.h.in
253261
src/jaegertracing/Constants.h
254262
@ONLY)
255-
set(CMAKE_INCLUDE_CURRENT_DIR ON)
256263

257264
if(BUILD_TESTING)
258265
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/jaegertracing/testutils")
@@ -290,7 +297,7 @@ if(BUILD_TESTING)
290297
GTEST_HAS_TR1_TUPLE=0
291298
GTEST_USE_OWN_TR1_TUPLE=0)
292299
target_link_libraries(
293-
UnitTest testutils GTest::main jaegertracing ${LIBS})
300+
UnitTest testutils GTest::main ${JAEGERTRACING_LIB} ${LIBS})
294301
add_test(NAME UnitTest COMMAND UnitTest)
295302

296303
add_executable(DynamicallyLoadTracerTest src/jaegertracing/DynamicallyLoadTracerTest.cpp)
@@ -348,7 +355,7 @@ configure_package_config_file(
348355
# * header location after install: <prefix>/include/jaegertracing/Tracer.h
349356
# * headers can be included by C++ code `#include <jaegertracing/Tracer.h>`
350357
install(
351-
TARGETS jaegertracing jaegertracing-static
358+
TARGETS ${JAEGERTRACING_LIBS}
352359
EXPORT "${TARGETS_EXPORT_NAME}"
353360
LIBRARY DESTINATION "lib"
354361
ARCHIVE DESTINATION "lib"

Dockerfile.plugin

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
FROM debian
22
RUN apt-get update
3-
RUN apt-get install --yes build-essential curl
3+
RUN apt-get install --yes build-essential curl git
44
RUN curl -L -O "https://cmake.org/files/v3.11/cmake-3.11.0-Linux-x86_64.sh" && \
55
bash cmake-3.11.0-Linux-x86_64.sh --skip-license
66

7-
ADD . /src
8-
WORKDIR /src
7+
ADD . /src/jaeger-cpp-client
8+
WORKDIR /src/jaeger-cpp-client
99
RUN ./scripts/build-plugin.sh

examples/config.yml

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
service: test-service
2+
disabled: false
3+
sampler:
4+
type: probabilistic
5+
param: 0.001
6+
reporter:
7+
queueSize: 100
8+
bufferFlushInterval: 10
9+
logSpans: false
10+
localAgentHostPort: 127.0.0.1:6831
11+
headers:
12+
jaegerDebugHeader: debug-id
13+
jaegerBaggageHeader: baggage
14+
TraceContextHeaderName: trace-id
15+
traceBaggageHeaderPrefix: testctx-
16+
baggage_restrictions:
17+
denyBaggageOnInitializationFailure: false
18+
hostPort: 127.0.0.1:5778
19+
refreshInterval: 60

scripts/build-plugin.sh

+23-19
Original file line numberDiff line numberDiff line change
@@ -4,43 +4,38 @@ set -e
44

55
function main() {
66
local project_dir
7-
if [[ "$(which git)" != "" ]]; then
8-
project_dir="$(git rev-parse --show-toplevel)"
9-
else
10-
project_dir="$PWD"
11-
fi
12-
13-
BUILD_DIR=${BUILD_DIR:-${project_dir}}
14-
cd "$BUILD_DIR"
7+
project_dir="$(git rev-parse --show-toplevel)"
158

169
mkdir -p build
1710
cd build
1811
export CFLAGS="$CFLAGS -march=x86-64"
1912
export CXXFLAGS="$CXXFLAGS -march=x86-64"
13+
14+
cat <<EOF > export.map
15+
{
16+
global:
17+
OpenTracingMakeTracerFactory;
18+
local: *;
19+
};
20+
EOF
21+
2022
cmake -DCMAKE_BUILD_TYPE=Release \
2123
-DCMAKE_INSTALL_PREFIX="${BUILD_DIR}/install" \
2224
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
25+
-DCMAKE_SHARED_LINKER_FLAGS="-Wl,--version-script=export.map" \
2326
-DBUILD_SHARED_LIBS=OFF \
2427
-DBUILD_TESTING=OFF \
2528
-DJAEGERTRACING_COVERAGE=OFF \
2629
-DJAEGERTRACING_BUILD_CROSSDOCK=OFF \
2730
-DJAEGERTRACING_WITH_YAML_CPP=ON \
2831
-DHUNTER_CONFIGURATION_TYPES=Release \
2932
..
30-
make
33+
make -j3
3134
make install
3235

3336
local hunter_install_root_dir
3437
hunter_install_root_dir=$(cat "_3rdParty/Hunter/install-root-dir")
3538

36-
cat <<EOF > export.map
37-
{
38-
global:
39-
OpenTracingMakeTracerFactory;
40-
local: *;
41-
};
42-
EOF
43-
4439
gcc -shared -o libjaegertracing_plugin.so \
4540
-Wl,--version-script=export.map \
4641
-Wl,--whole-archive \
@@ -49,7 +44,7 @@ EOF
4944
${hunter_install_root_dir}/lib/libopentracing.a \
5045
${hunter_install_root_dir}/lib/libthrift.a \
5146
${hunter_install_root_dir}/lib/libyaml-cpp.a \
52-
-static-libstdc++ -static-libgcc
47+
-static-libstdc++ -pthread -static-libgcc
5348
(ldd libjaegertracing_plugin.so |
5449
cut -d ' ' -f1 |
5550
sed -e 's/\s\+//g' \
@@ -61,10 +56,19 @@ EOF
6156
c
6257
ld-linux-x86-64
6358
linux-vdso
59+
pthread
6460
EOF
6561
diff ldd-output.txt ldd-expected.txt # Non-zero exits due to set -e above.
66-
6762
cp libjaegertracing_plugin.so /
63+
64+
git clone https://github.com/opentracing/opentracing-cpp.git
65+
cd opentracing-cpp
66+
mkdir build
67+
cd build
68+
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_MOCKTRACER=OFF ..
69+
make -j3
70+
./example/dynamic_load/dynamic_load-example /libjaegertracing_plugin.so \
71+
${project_dir}/examples/config.yml
6872
}
6973

7074
main

0 commit comments

Comments
 (0)