Skip to content

Commit 3cfe2d3

Browse files
authored
Upgrade build and tracing code for Proton 0.39.0 (#99)
* Install tracing dependencies for GHA job * Update from jaeger to otlp trace exporter
1 parent 3ddbfc4 commit 3cfe2d3

File tree

5 files changed

+47
-12
lines changed

5 files changed

+47
-12
lines changed

Dockerfile

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,34 @@ ARG IMAGE_BASE=registry.access.redhat.com/ubi${UBI_VERSION}/ubi-minimal:${UBI_RU
1010
#DEV FROM $IMAGE_BUILD
1111
FROM quay.io/centos/centos:stream9 as build
1212

13+
ENV PROTON_VERSION=0.39.0
14+
1315
RUN curl -OL https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
1416
RUN rpm -ivh epel-release-latest-9.noarch.rpm
1517
RUN dnf install -y 'dnf-command(config-manager)'
1618
RUN /usr/bin/crb enable
1719

1820
RUN curl -L https://copr.fedorainfracloud.org/coprs/kpvdr/opentelemetry-cpp-rhel/repo/epel-9/kpvdr-opentelemetry-cpp-rhel-epel-9.repo > /etc/yum.repos.d/kpvdr-opentelemetry-cpp-rhel-epel-9.repo
1921
RUN curl -L https://copr.fedorainfracloud.org/coprs/kpvdr/protobuf/repo/epel-9/kpvdr-protobuf-epel-9.repo > /etc/yum.repos.d/kpvdr-protobuf-epel-9.repo
22+
RUN curl -L https://copr.fedorainfracloud.org/coprs/kpvdr/json/repo/epel-9/kpvdr-json-epel-9.repo > /etc/yum.repos.d/kpvdr-json-epel-9.repo
23+
24+
#CMake Error at /usr/lib64/cmake/protobuf/protobuf-targets.cmake:106 (message):
25+
# The imported target "protobuf::libprotobuf-lite" references the file
26+
#
27+
# "/usr/lib64/libprotobuf-lite.so.3.19.6.0"
2028

2129
RUN dnf -y --setopt=install_weak_deps=0 --setopt=tsflags=nodocs install \
2230
ccache findutils git patchelf \
2331
\
2432
cmake ninja-build \
2533
gcc gcc-c++ \
2634
\
35+
protobuf-lite-devel \
36+
\
37+
opentelemetry-cpp-devel \
38+
opentelemetry-cpp-exporter-otlp-devel \
39+
opentelemetry-cpp-zpages-devel \
40+
\
2741
cyrus-sasl-devel \
2842
openssl-devel \
2943
python-devel
@@ -36,10 +50,8 @@ WORKDIR /src
3650
ENV CCACHE_COMPRESS=true
3751
ENV CCACHE_MAXSIZE=400MB
3852

39-
# WORKAROUND: Use Proton 0.37.0 (without tracing) to get something compiling quickly
40-
RUN git clone --branch=0.37.0 --depth=1 https://github.com/apache/qpid-proton.git
53+
RUN git clone --branch=${PROTON_VERSION} --depth=1 https://github.com/apache/qpid-proton.git
4154
RUN CCACHE_DIR=/ccache/$(arch) cmake -S qpid-proton -B cmake-build-qpid-proton -GNinja \
42-
-DENABLE_WARNING_ERROR=OFF \
4355
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
4456
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
4557
-DCMAKE_INSTALL_PREFIX=cmake-install \
@@ -71,9 +83,13 @@ RUN rpm -ivh epel-release-latest-9.noarch.rpm
7183
RUN dnf install -y 'dnf-command(config-manager)'
7284
RUN /usr/bin/crb enable
7385

74-
RUN curl -L https://copr.fedorainfracloud.org/coprs/kpvdr/opentelemetry-cpp/repo/epel-9/kpvdr-opentelemetry-cpp-epel-9.repo > /etc/yum.repos.d/kpvdr-opentelemetry-cpp-epel-9.repo
86+
RUN curl -L https://copr.fedorainfracloud.org/coprs/kpvdr/opentelemetry-cpp-rhel/repo/epel-9/kpvdr-opentelemetry-cpp-rhel-epel-9.repo > /etc/yum.repos.d/kpvdr-opentelemetry-cpp-rhel-epel-9.repo
87+
RUN curl -L https://copr.fedorainfracloud.org/coprs/kpvdr/protobuf/repo/epel-9/kpvdr-protobuf-epel-9.repo > /etc/yum.repos.d/kpvdr-protobuf-epel-9.repo
88+
RUN curl -L https://copr.fedorainfracloud.org/coprs/kpvdr/json/repo/epel-9/kpvdr-json-epel-9.repo > /etc/yum.repos.d/kpvdr-json-epel-9.repo
7589

7690
RUN dnf -y --setopt=install_weak_deps=0 --setopt=tsflags=nodocs install \
91+
protobuf-lite \
92+
opentelemetry-cpp opentelemetry-cpp-exporter-otlp opentelemetry-cpp-zpages \
7793
cyrus-sasl cyrus-sasl-gssapi cyrus-sasl-lib cyrus-sasl-plain \
7894
openssl
7995

Dockerfile.ubi8_upstream

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1+
# podman build -f Dockerfile.ubi8_upstream -t quay.io/jdanek/cli-cpp_ubi8_upstream .
2+
13
FROM docker.io/almalinux/8-base
24

35
RUN dnf install -y 'dnf-command(copr)' \
4-
&& dnf copr enable -y kpvdr/opentelemetry-cpp \
6+
&& dnf copr enable -y kpvdr/json \
7+
&& dnf copr enable -y kpvdr/protobuf \
8+
&& dnf copr enable -y kpvdr/opentelemetry-cpp-rhel \
59
&& yum install -y dnf \
610
&& dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm \
711
&& dnf install -y \
@@ -16,6 +20,8 @@ RUN dnf install -y 'dnf-command(copr)' \
1620
boost-devel \
1721
\
1822
opentelemetry-cpp-devel \
23+
opentelemetry-cpp-exporter-otlp-devel \
24+
opentelemetry-cpp-zpages-devel \
1925
\
2026
cyrus-sasl-devel \
2127
openssl-devel \

src/api/qpid-proton/CMakeLists.txt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,17 @@ target_link_libraries(
8181

8282
if (OPENTELEMETRY_ENABLED)
8383
set(CMAKE_BUILD_TYPE "")
84-
find_package(opentelemetry-cpp)
84+
# This is a workaround because the otlp exporter requires protobuf but most packaged versions
85+
# of protobuf don't ship cmake config yet. We use this exporter in our examples
86+
find_package(Protobuf REQUIRED)
87+
find_package(opentelemetry-cpp REQUIRED)
8588
include_directories(${OPENTELEMETRY_CPP_INCLUDE_DIRS})
8689

8790
target_link_libraries(dtests-proton-reactor
8891
opentelemetry-cpp::trace
89-
opentelemetry-cpp::jaeger_trace_exporter
90-
opentelemetry-cpp::ostream_span_exporter)
91-
endif (UNIX)
92+
opentelemetry-cpp::otlp_http_exporter
93+
)
94+
endif ()
9295

9396
set(proton-reactor-clients
9497
aac3_connector

src/api/qpid-proton/common/ModernClient_tracing_opentracing.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#include <opentelemetry/sdk/trace/tracer_provider.h>
77
#include <opentelemetry/trace/provider.h>
88
#include <opentelemetry/nostd/unique_ptr.h>
9-
#include <opentelemetry/exporters/jaeger/jaeger_exporter.h>
9+
#include <opentelemetry/exporters/otlp/otlp_http_exporter.h>
1010
#include <opentelemetry/exporters/ostream/span_exporter.h>
1111
#include <opentelemetry/sdk/resource/resource.h>
1212

@@ -17,11 +17,11 @@
1717
void dtests::proton::common::ModernClient::enableTracing(std::string service_name) const
1818
{
1919

20-
opentelemetry::exporter::jaeger::JaegerExporterOptions opts;
20+
opentelemetry::exporter::otlp::OtlpHttpExporterOptions opts;
2121

2222
// Initialize Jaeger Exporter
2323
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> exporter = std::unique_ptr<opentelemetry::sdk::trace::SpanExporter>(
24-
new opentelemetry::exporter::jaeger::JaegerExporter(opts));
24+
new opentelemetry::exporter::otlp::OtlpHttpExporter(opts));
2525

2626
// Set service-name
2727
auto resource_attributes = opentelemetry::sdk::resource::ResourceAttributes

vcpkg.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"name" : "cli-cpp",
3+
"version-string" : "1.0.0",
4+
"builtin-baseline" : "223b8d5695bd0615e1eeba393c64770f6faf20e7",
5+
"dependencies" : [ {
6+
"name" : "opentelemetry-cpp",
7+
"version>=" : "1.9.1",
8+
"features": ["otlp-http"]
9+
} ]
10+
}

0 commit comments

Comments
 (0)