opentelemetry-cpp 1.17 support

On conda-forge a PR was opened to rebuild cpptango with opentelemetry 1.17.

Build is failing. See full logs:

2024-10-15T05:07:43.1951668Z /home/conda/feedstock_root/build_artifacts/cpptango_1728968675512/work/src/common/telemetry/telemetry.cpp: In member function 'void Tango::telemetry::InterfaceImplementation::init_tracer_provider()':
2024-10-15T05:07:43.1962052Z /home/conda/feedstock_root/build_artifacts/cpptango_1728968675512/work/src/common/telemetry/telemetry.cpp:534:107: error: no match for 'operator=' (operand types are 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::trace::TracerProvider>' and 'std::unique_ptr<opentelemetry::v1::sdk::trace::TracerProvider>')
2024-10-15T05:07:43.1963309Z   534 |         provider = opentelemetry::sdk::trace::TracerProviderFactory::Create(std::move(processor), resource);
2024-10-15T05:07:43.1964070Z       |                                                                                                           ^
2024-10-15T05:07:43.1964842Z In file included from /home/conda/feedstock_root/build_artifacts/cpptango_1728968675512/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/include/opentelemetry/trace/span_context.h:8,
2024-10-15T05:07:43.1965782Z                  from /home/conda/feedstock_root/build_artifacts/cpptango_1728968675512/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/include/opentelemetry/trace/span.h:13,
2024-10-15T05:07:43.1966551Z                  from /home/conda/feedstock_root/build_artifacts/cpptango_1728968675512/work/src/common/telemetry/telemetry.cpp:14:
2024-10-15T05:07:43.1968108Z /home/conda/feedstock_root/build_artifacts/cpptango_1728968675512/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/include/opentelemetry/nostd/shared_ptr.h:120:15: note: candidate: 'opentelemetry::v1::nostd::shared_ptr<T>& opentelemetry::v1::nostd::shared_ptr<T>::operator=(opentelemetry::v1::nostd::shared_ptr<T>&&) [with T = opentelemetry::v1::trace::TracerProvider]'
2024-10-15T05:07:43.1969787Z   120 |   shared_ptr &operator=(shared_ptr &&other) noexcept
2024-10-15T05:07:43.1970134Z       |               ^~~~~~~~
2024-10-15T05:07:43.2000047Z

See opentelemetry-cpp CHANGELOG:

SDK factory methods such as:

opentelemetry::sdk::trace::TracerProviderFactory::Create() opentelemetry::sdk::metrics::MeterProviderFactory::Create() opentelemetry::sdk::logs::LoggerProviderFactory::Create() opentelemetry::sdk::logs::EventLoggerProviderFactory::Create()

returned an API object (opentelemetry::trace::TracerProvider) to the caller.

After this fix, these methods return an SDK level object (opentelemetry::sdk::trace::TracerProvider) to the caller.

Edited by Benjamin Bertrand