From d99bc446c2634d91b24ef75aa78abb6fdc75394e Mon Sep 17 00:00:00 2001 From: Rajan Sabapathi Date: Tue, 16 Dec 2025 15:23:08 +0000 Subject: [PATCH 1/4] opentelemetry-poc Integrating opentelemetry into rdke Change-Id: Iafd52f53ba5813e31a91f88648803d8fca6d2c1b --- .../opentelemetry/opentelemetry-cpp_1.20.0.bb | 64 +++++++ .../opentelemetry-examples/CMakeLists.txt | 51 ++++++ .../otlp_grpc_logging.cpp | 32 ++++ .../opentelemetry-examples/otlp_logger.cpp | 164 ++++++++++++++++++ .../opentelemetry-examples/otlp_logger.h | 15 ++ .../opentelemetry-examples/test_main.cpp | 14 ++ .../opentelemetry-examples_1.0.bb | 38 ++++ .../0001-link-absl-strings-into-common.patch | 26 +++ 8 files changed, 404 insertions(+) create mode 100644 recipes-support/opentelemetry/opentelemetry-cpp_1.20.0.bb create mode 100644 recipes-support/opentelemetry/opentelemetry-examples/CMakeLists.txt create mode 100644 recipes-support/opentelemetry/opentelemetry-examples/otlp_grpc_logging.cpp create mode 100644 recipes-support/opentelemetry/opentelemetry-examples/otlp_logger.cpp create mode 100644 recipes-support/opentelemetry/opentelemetry-examples/otlp_logger.h create mode 100644 recipes-support/opentelemetry/opentelemetry-examples/test_main.cpp create mode 100644 recipes-support/opentelemetry/opentelemetry-examples_1.0.bb create mode 100644 recipes-support/opentelemetry/opentelemetry/0001-link-absl-strings-into-common.patch diff --git a/recipes-support/opentelemetry/opentelemetry-cpp_1.20.0.bb b/recipes-support/opentelemetry/opentelemetry-cpp_1.20.0.bb new file mode 100644 index 00000000..574e55b6 --- /dev/null +++ b/recipes-support/opentelemetry/opentelemetry-cpp_1.20.0.bb @@ -0,0 +1,64 @@ + +SUMMARY = "OpenTelemetry C++ SDK and API" +DESCRIPTION = "C++ implementation of OpenTelemetry for traces, metrics, and logs." +HOMEPAGE = "https://github.com/open-telemetry/opentelemetry-cpp" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" + +PV = "1.20.0" +SRC_URI = "gitsm://github.com/open-telemetry/opentelemetry-cpp.git;branch=main" +SRCREV = "6175aa0b213eea053247e43b4f35b8d201fa356e" + +FILESEXTRAPATHS:prepend := "${THISDIR}/opentelemetry:" +# Bring in patch that links absl::strings from Abseil +SRC_URI += "file://0001-link-absl-strings-into-common.patch" + +S = "${WORKDIR}/git" + +inherit cmake pkgconfig + +DEPENDS = "\ + grpc \ + protobuf \ + abseil-cpp \ + nlohmann-json \ + curl \ + re2 \ + c-ares \ + openssl \ +" + +DEPENDS += "protobuf-native grpc-native" + +PACKAGECONFIG ??= "otlp_grpc" +PACKAGECONFIG[otlp_grpc] = "-DWITH_OTLP_GRPC=ON,-DWITH_OTLP_GRPC=OFF,grpc protobuf" +PACKAGECONFIG[otlp_http] = "-DWITH_OTLP_HTTP=ON,-DWITH_OTLP_HTTP=OFF,curl nlohmann-json" +PACKAGECONFIG[otlp_prometheus]= "-DWITH_PROMETHEUS=ON,-DWITH_PROMETHEUS=OFF,prometheus-cpp" +PACKAGECONFIG[benchmark] = "-DWITH_BENCHMARK=ON,-DWITH_BENCHMARK=OFF,benchmark" +PACKAGECONFIG[testing] = "-DWITH_TESTING=ON,-DWITH_TESTING=OFF,gtest" + +EXTRA_OECMAKE += "\ + -DBUILD_SHARED_LIBS=ON \ + -DWITH_ABSEIL=OFF \ + -DWITH_STL=CXX17 \ + -Dabsl_DIR=${RECIPE_SYSROOT}/usr/lib/cmake/absl \ +" + +# Point CMake at native protoc + grpc_cpp_plugin +EXTRA_OECMAKE += "\ + -DProtobuf_PROTOC_EXECUTABLE=${STAGING_BINDIR_NATIVE}/protoc \ + -DgRPC_CPP_PLUGIN=${STAGING_BINDIR_NATIVE}/grpc_cpp_plugin \ +" + +EXTRA_OECMAKE += "-DCMAKE_CXX_FLAGS_append=' -D_GLIBCXX_USE_CXX11_ABI=1'" +TARGET_LDFLAGS:append = " -Wl,--no-as-needed" + + + +EXTRA_OECMAKE = "\ + -DBUILD_SHARED_LIBS=ON \ + -DWITH_ABI_VERSION_1=ON \ + -DWITH_ABI_VERSION_2=OFF \ + -DWITH_STL=OFF \ + -DCMAKE_CXX_STANDARD=17 \ +" diff --git a/recipes-support/opentelemetry/opentelemetry-examples/CMakeLists.txt b/recipes-support/opentelemetry/opentelemetry-examples/CMakeLists.txt new file mode 100644 index 00000000..3d2834a5 --- /dev/null +++ b/recipes-support/opentelemetry/opentelemetry-examples/CMakeLists.txt @@ -0,0 +1,51 @@ + +cmake_minimum_required(VERSION 3.10) +project(otlp_grpc_logging_example) + +set(CMAKE_CXX_STANDARD 14) + +find_package(opentelemetry-cpp CONFIG REQUIRED) + +add_executable(otlp_grpc_logging otlp_grpc_logging.cpp) + +target_link_libraries(otlp_grpc_logging + opentelemetry_logs + opentelemetry_exporter_otlp_grpc_log +) + + +set(LIB_VERSION "1.0.0") +set(LIB_SOVERSION "1") + +add_library(otlp_logger SHARED otlp_logger.cpp) + +set_target_properties(otlp_logger PROPERTIES + VERSION ${LIB_VERSION} + SOVERSION ${LIB_SOVERSION} +) + +target_include_directories(otlp_logger PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(otlp_logger PUBLIC + opentelemetry_common + opentelemetry_logs + opentelemetry_exporter_otlp_grpc_log + opentelemetry_exporter_ostream_logs +) + +# Install the library +install(TARGETS otlp_logger + DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +# Install the header +install(FILES otlp_logger.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + +add_executable(otlp-logger-example test_main.cpp) +target_link_libraries(otlp-logger-example PRIVATE otlp_logger) + +# Install the example executable +install(TARGETS otlp-logger-example + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + + + diff --git a/recipes-support/opentelemetry/opentelemetry-examples/otlp_grpc_logging.cpp b/recipes-support/opentelemetry/opentelemetry-examples/otlp_grpc_logging.cpp new file mode 100644 index 00000000..73f5597b --- /dev/null +++ b/recipes-support/opentelemetry/opentelemetry-examples/otlp_grpc_logging.cpp @@ -0,0 +1,32 @@ + +#include +#include +#include +#include +#include +#include + +using namespace opentelemetry::logs; +using namespace opentelemetry::sdk::logs; +using namespace opentelemetry::exporter::otlp; + +int main() +{ + auto exporter = std::unique_ptr(new OtlpGrpcLogRecordExporter()); + auto processor = std::unique_ptr(new SimpleLogRecordProcessor(std::move(exporter))); + + // Factory returns std::unique_ptr + auto provider_unique = LoggerProviderFactory::Create(std::move(processor)); + + // Disambiguate conversion to nostd::shared_ptr + opentelemetry::nostd::shared_ptr provider{ + provider_unique.release() // release raw pointer from unique_ptr + }; + + Provider::SetLoggerProvider(provider); + + auto logger = Provider::GetLoggerProvider()->GetLogger("example_logger"); + logger->EmitLogRecord("Hello from OTLP gRPC Logging Client!", Severity::kInfo); + + return 0; +} diff --git a/recipes-support/opentelemetry/opentelemetry-examples/otlp_logger.cpp b/recipes-support/opentelemetry/opentelemetry-examples/otlp_logger.cpp new file mode 100644 index 00000000..4de68e98 --- /dev/null +++ b/recipes-support/opentelemetry/opentelemetry-examples/otlp_logger.cpp @@ -0,0 +1,164 @@ +#include "otlp_logger.h" +#include +#include +#include "opentelemetry/logs/logger_provider.h" +#include +#include "opentelemetry/sdk/logs/provider.h" +#include "opentelemetry/sdk/logs/logger_provider.h" +#include +#include +#include +#include +#include "opentelemetry/exporters/ostream/log_record_exporter.h" + +#include "opentelemetry/logs/logger_provider.h" +#include "opentelemetry/logs/provider.h" + +//To be deleted these includes - Start +#include "opentelemetry/exporters/ostream/log_record_exporter.h" +#include "opentelemetry/exporters/ostream/span_exporter_factory.h" +#include "opentelemetry/logs/logger_provider.h" +#include "opentelemetry/sdk/logs/exporter.h" +#include "opentelemetry/sdk/logs/logger_provider.h" +#include "opentelemetry/sdk/logs/logger_provider_factory.h" +#include "opentelemetry/sdk/logs/processor.h" +#include "opentelemetry/sdk/logs/provider.h" +#include "opentelemetry/sdk/logs/simple_log_record_processor_factory.h" +#include "opentelemetry/sdk/trace/exporter.h" +#include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" +#include "opentelemetry/sdk/trace/simple_processor_factory.h" +#include "opentelemetry/sdk/trace/tracer_provider.h" +#include "opentelemetry/sdk/trace/tracer_provider_factory.h" +#include "opentelemetry/trace/tracer_provider.h" +//To be deleted these includes - End + +#include + +namespace logs_api = opentelemetry::logs; +namespace logs_sdk = opentelemetry::sdk::logs; +namespace logs_exporter = opentelemetry::exporter::otlp; +// namespace logs_exporter = opentelemetry::exporter::logs; + +namespace otlp_logger +{ + static std::once_flag init_flag; + static nostd::shared_ptr logger; + + // void InitLogger() + // { + // // Create ostream log exporter instance + // auto exporter = + // std::unique_ptr(new logs_exporter::OStreamLogRecordExporter); + // auto processor = logs_sdk::SimpleLogRecordProcessorFactory::Create(std::move(exporter)); + + // std::shared_ptr sdk_provider( + // logs_sdk::LoggerProviderFactory::Create(std::move(processor))); + + // // Set the global logger provider + // const std::shared_ptr &api_provider = sdk_provider; + // logs_sdk::Provider::SetLoggerProvider(api_provider); + // } + + static void InitLogger() + { + // using namespace opentelemetry::sdk::logs; + // using namespace opentelemetry::exporter::otlp; + + auto exporter = std::unique_ptr(new logs_exporter::OtlpGrpcLogRecordExporter()); + + auto processor = logs_sdk::SimpleLogRecordProcessorFactory::Create(std::move(exporter)); + + std::shared_ptr sdk_provider( + opentelemetry::sdk::logs::LoggerProviderFactory::Create(std::move(processor))); + + const std::shared_ptr &api_provider = sdk_provider; + + // opentelemetry::logs::Provider::SetLoggerProvider(api_provider); + logs_sdk::Provider::SetLoggerProvider(api_provider); + + // GetLogger returns nostd::shared_ptr + auto provider = opentelemetry::logs::Provider::GetLoggerProvider(); + std::cout << "RSABAPATHI -- provider got successfully\n"; + + logger = provider->GetLogger("example_logger", "example"); + std::cout << "RSABAPATHI -- example_logger got\n"; + // logger = opentelemetry::logs::Provider::GetLoggerProvider()->GetLogger("example_logger"); + } + + void log_msg(opentelemetry::logs::Severity level, const std::string &msg) + { + // std::call_once(init_flag, init); + std::call_once(init_flag, InitLogger); + if (logger) + { + logger->EmitLogRecord(msg, level); + } + } + + // ---- helper: robust vsnprintf -> std::string ---- + + static std::string vformat_printf(const char *fmt, va_list args) + { + // First pass: compute required size (number of chars excluding '\0') + va_list args1; + va_copy(args1, args); + int needed = std::vsnprintf(nullptr, 0, fmt, args1); + va_end(args1); + + if (needed >= 0) + { + // Resize to exact number of chars; we’ll write with a trailing '\0' + std::string out; + out.resize(static_cast(needed)); + + va_list args2; + va_copy(args2, args); + // Write into string storage via non-const pointer in C++14 + std::vsnprintf(&out[0], static_cast(needed) + 1, fmt, args2); + va_end(args2); + + return out; // excludes the final '\0' + } + + // Fallback: grow a buffer until it fits (handles libcs that return -1) + std::vector buf(1024); + while (true) + { + va_list args3; + va_copy(args3, args); + int n = std::vsnprintf(buf.data(), buf.size(), fmt, args3); + va_end(args3); + + if (n >= 0 && static_cast(n) < buf.size()) + { + return std::string(buf.data(), static_cast(n)); + } + std::size_t new_size = (n >= 0) ? static_cast(n + 1) : buf.size() * 2; + buf.resize(new_size); + } + } + + // ---- new printf-style API ---- + void log_msgf(opentelemetry::logs::Severity level, const char *fmt, ...) + { + std::call_once(init_flag, InitLogger); + std::cout << "RSABAPATHI -- checking logger\n"; + if (!logger) + return; + + std::cout << "RSABAPATHI -- logger avaialble\n"; + + va_list args; + va_start(args, fmt); + std::string msg = vformat_printf(fmt, args); + va_end(args); + + // Use the same EmitLogRecord signature ordering as your existing code + std::cout << "RSABAPATHI -- Emitting Log Record\n"; + logger->EmitLogRecord(msg, level); + // If your SDK expects (Severity, Body), use: + // logger->EmitLogRecord(level, msg); + } + +} diff --git a/recipes-support/opentelemetry/opentelemetry-examples/otlp_logger.h b/recipes-support/opentelemetry/opentelemetry-examples/otlp_logger.h new file mode 100644 index 00000000..8841e98c --- /dev/null +++ b/recipes-support/opentelemetry/opentelemetry-examples/otlp_logger.h @@ -0,0 +1,15 @@ + +#ifndef OTLP_LOGGER_H +#define OTLP_LOGGER_H + +#include +#include + +namespace otlp_logger +{ + // Only expose log_msg to outside + void log_msg(opentelemetry::logs::Severity level, const std::string &msg); + void log_msgf(opentelemetry::logs::Severity level, const char *fmt, ...); +} + +#endif // OTLP_LOGGER_H diff --git a/recipes-support/opentelemetry/opentelemetry-examples/test_main.cpp b/recipes-support/opentelemetry/opentelemetry-examples/test_main.cpp new file mode 100644 index 00000000..db451f30 --- /dev/null +++ b/recipes-support/opentelemetry/opentelemetry-examples/test_main.cpp @@ -0,0 +1,14 @@ + +#include "otlp_logger.h" +#include + +#include + +int main() +{ + std::cout << "RSABAPATHI -- Logs to be sent now\n"; + otlp_logger::log_msgf(opentelemetry::logs::Severity::kInfo, "First log message triggers init(): %d\n", __LINE__); + otlp_logger::log_msgf(opentelemetry::logs::Severity::kError, "Second log message after init: %d", __LINE__); + std::cout << "RSABAPATHI -- Logs are sent\n"; + return 0; +} diff --git a/recipes-support/opentelemetry/opentelemetry-examples_1.0.bb b/recipes-support/opentelemetry/opentelemetry-examples_1.0.bb new file mode 100644 index 00000000..5a8e0753 --- /dev/null +++ b/recipes-support/opentelemetry/opentelemetry-examples_1.0.bb @@ -0,0 +1,38 @@ + +SUMMARY = "OpenTelemetry Example Programs" +DESCRIPTION = "Example programs demonstrating OpenTelemetry OTLP gRPC logging in RDK Yocto environment" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" +FILESEXTRAPATHS:prepend := "${THISDIR}/opentelemetry-examples:" + +SRC_URI = "file://otlp_grpc_logging.cpp \ + file://CMakeLists.txt \ + file://otlp_logger.cpp \ + file://otlp_logger.h \ + file://test_main.cpp \ + " + +S = "${WORKDIR}" + +DEPENDS = "opentelemetry-cpp" +RDEPENDS_${PN} = "opentelemetry-cpp grpc protobuf" + +INSANE_SKIP:${PN} += "dev-deps" + +inherit cmake + +# do_install() { +# install -d ${D}${bindir} +# install -m 0755 otlp_grpc_logging ${D}${bindir}/ +# } + + +EXTRA_OECMAKE = "\ + -DBUILD_SHARED_LIBS=ON \ + -DWITH_ABI_VERSION_1=ON \ + -DWITH_ABI_VERSION_2=OFF \ + -DWITH_STL=OFF \ + -DCMAKE_CXX_STANDARD=17 \ +" + + diff --git a/recipes-support/opentelemetry/opentelemetry/0001-link-absl-strings-into-common.patch b/recipes-support/opentelemetry/opentelemetry/0001-link-absl-strings-into-common.patch new file mode 100644 index 00000000..d572b727 --- /dev/null +++ b/recipes-support/opentelemetry/opentelemetry/0001-link-absl-strings-into-common.patch @@ -0,0 +1,26 @@ + +--- a/sdk/src/common/CMakeLists.txt ++++ b/sdk/src/common/CMakeLists.txt +@@ -1,6 +1,8 @@ + # Copyright The OpenTelemetry Authors + # SPDX-License-Identifier: Apache-2.0 + ++find_package(absl CONFIG REQUIRED) ++ + set(COMMON_SRCS random.cc global_log_handler.cc env_variables.cc base64.cc + disabled.cc) + if(WIN32) +@@ -17,6 +19,16 @@ + target_link_libraries( + opentelemetry_common PUBLIC opentelemetry_api opentelemetry_sdk + Threads::Threads) ++ ++ target_link_libraries(opentelemetry_common PRIVATE ++ absl::strings absl::strings_internal ++ absl::base ++ absl::raw_logging_internal ++ absl::log_severity ++ absl::throw_delegate ++ ) ++ ++ set_target_properties(opentelemetry_common PROPERTIES LINK_FLAGS "-Wl,--no-as-needed") From 54b1048f20091065967fc59c4f3da51160ed9531 Mon Sep 17 00:00:00 2001 From: Rajan Sabapathi Date: Wed, 17 Dec 2025 10:56:02 +0000 Subject: [PATCH 2/4] fixed a compilation error Change-Id: I3ebe9321726346666e917f52d4fa78846ff36745 --- .../opentelemetry-examples/otlp_logger.cpp | 36 +------------------ 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/recipes-support/opentelemetry/opentelemetry-examples/otlp_logger.cpp b/recipes-support/opentelemetry/opentelemetry-examples/otlp_logger.cpp index 4de68e98..fc6bae5c 100644 --- a/recipes-support/opentelemetry/opentelemetry-examples/otlp_logger.cpp +++ b/recipes-support/opentelemetry/opentelemetry-examples/otlp_logger.cpp @@ -14,25 +14,6 @@ #include "opentelemetry/logs/logger_provider.h" #include "opentelemetry/logs/provider.h" -//To be deleted these includes - Start -#include "opentelemetry/exporters/ostream/log_record_exporter.h" -#include "opentelemetry/exporters/ostream/span_exporter_factory.h" -#include "opentelemetry/logs/logger_provider.h" -#include "opentelemetry/sdk/logs/exporter.h" -#include "opentelemetry/sdk/logs/logger_provider.h" -#include "opentelemetry/sdk/logs/logger_provider_factory.h" -#include "opentelemetry/sdk/logs/processor.h" -#include "opentelemetry/sdk/logs/provider.h" -#include "opentelemetry/sdk/logs/simple_log_record_processor_factory.h" -#include "opentelemetry/sdk/trace/exporter.h" -#include "opentelemetry/sdk/trace/processor.h" -#include "opentelemetry/sdk/trace/provider.h" -#include "opentelemetry/sdk/trace/simple_processor_factory.h" -#include "opentelemetry/sdk/trace/tracer_provider.h" -#include "opentelemetry/sdk/trace/tracer_provider_factory.h" -#include "opentelemetry/trace/tracer_provider.h" -//To be deleted these includes - End - #include namespace logs_api = opentelemetry::logs; @@ -43,22 +24,7 @@ namespace logs_exporter = opentelemetry::exporter::otlp; namespace otlp_logger { static std::once_flag init_flag; - static nostd::shared_ptr logger; - - // void InitLogger() - // { - // // Create ostream log exporter instance - // auto exporter = - // std::unique_ptr(new logs_exporter::OStreamLogRecordExporter); - // auto processor = logs_sdk::SimpleLogRecordProcessorFactory::Create(std::move(exporter)); - - // std::shared_ptr sdk_provider( - // logs_sdk::LoggerProviderFactory::Create(std::move(processor))); - - // // Set the global logger provider - // const std::shared_ptr &api_provider = sdk_provider; - // logs_sdk::Provider::SetLoggerProvider(api_provider); - // } + static opentelemetry::nostd::shared_ptr logger; static void InitLogger() { From 89a064f57ee475130fb79982b0452398c195610f Mon Sep 17 00:00:00 2001 From: Rajan Sabapathi Date: Wed, 17 Dec 2025 16:34:01 +0000 Subject: [PATCH 3/4] package architecture changed to middleware arch Change-Id: I34dbced646c57e44df0769fd3d3c4db25620eacf --- recipes-support/opentelemetry/opentelemetry-cpp_1.20.0.bb | 2 ++ recipes-support/opentelemetry/opentelemetry-examples_1.0.bb | 2 ++ 2 files changed, 4 insertions(+) diff --git a/recipes-support/opentelemetry/opentelemetry-cpp_1.20.0.bb b/recipes-support/opentelemetry/opentelemetry-cpp_1.20.0.bb index 574e55b6..3440cdbf 100644 --- a/recipes-support/opentelemetry/opentelemetry-cpp_1.20.0.bb +++ b/recipes-support/opentelemetry/opentelemetry-cpp_1.20.0.bb @@ -9,6 +9,8 @@ PV = "1.20.0" SRC_URI = "gitsm://github.com/open-telemetry/opentelemetry-cpp.git;branch=main" SRCREV = "6175aa0b213eea053247e43b4f35b8d201fa356e" +PACKAGE_ARCH = "${MIDDLEWARE_ARCH}" + FILESEXTRAPATHS:prepend := "${THISDIR}/opentelemetry:" # Bring in patch that links absl::strings from Abseil SRC_URI += "file://0001-link-absl-strings-into-common.patch" diff --git a/recipes-support/opentelemetry/opentelemetry-examples_1.0.bb b/recipes-support/opentelemetry/opentelemetry-examples_1.0.bb index 5a8e0753..acabcf6b 100644 --- a/recipes-support/opentelemetry/opentelemetry-examples_1.0.bb +++ b/recipes-support/opentelemetry/opentelemetry-examples_1.0.bb @@ -5,6 +5,8 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" FILESEXTRAPATHS:prepend := "${THISDIR}/opentelemetry-examples:" +PACKAGE_ARCH = "${MIDDLEWARE_ARCH}" + SRC_URI = "file://otlp_grpc_logging.cpp \ file://CMakeLists.txt \ file://otlp_logger.cpp \ From 003d2bf2e49d0c3688d78b08761436be9ca2a9a2 Mon Sep 17 00:00:00 2001 From: Rajan Sabapathi Date: Thu, 18 Dec 2025 03:16:45 +0000 Subject: [PATCH 4/4] Adding non-versioned libraries into base pkg Change-Id: I160cca19961dd8b1b80fe1bcb895e35a2c47d62c --- .../opentelemetry/opentelemetry-cpp_1.20.0.bb | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/recipes-support/opentelemetry/opentelemetry-cpp_1.20.0.bb b/recipes-support/opentelemetry/opentelemetry-cpp_1.20.0.bb index 3440cdbf..bd3f94da 100644 --- a/recipes-support/opentelemetry/opentelemetry-cpp_1.20.0.bb +++ b/recipes-support/opentelemetry/opentelemetry-cpp_1.20.0.bb @@ -57,10 +57,25 @@ TARGET_LDFLAGS:append = " -Wl,--no-as-needed" -EXTRA_OECMAKE = "\ +EXTRA_OECMAKE += "\ -DBUILD_SHARED_LIBS=ON \ -DWITH_ABI_VERSION_1=ON \ -DWITH_ABI_VERSION_2=OFF \ -DWITH_STL=OFF \ -DCMAKE_CXX_STANDARD=17 \ " + +# Treat unversioned .so as runtime libs +SOLIBS = ".so" +FILES:${PN} += "${libdir}/*.so" + +# Prevent Yocto from classifying them as -dev +SOLIBSDEV = "" +INSANE_SKIP:${PN} += "dev-so" + +# Explicitly define -dev content so it does NOT include ${libdir}/*.so +FILES:${PN}-dev = "\ + ${includedir} \ + ${libdir}/pkgconfig \ + ${libdir}/cmake \ +"