From 70d5fc02d6bccbe2a22367167229f1471ae244f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Sun, 27 Jul 2025 10:05:08 +0300 Subject: [PATCH 1/3] Document minimum required versions The libraries that opentelemetry-cpp requires have minimum required versions which are higher than the ones that are natively available on the systems being tested. By listing the exact versions of the libraries, the dependencies are clearly stated which removes the guesswork from build problems. --- docs/dependencies.md | 16 +++++++++------- install/cmake/third_party_minimum | 2 ++ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/docs/dependencies.md b/docs/dependencies.md index 8d19b6490b..b417c56f8d 100644 --- a/docs/dependencies.md +++ b/docs/dependencies.md @@ -6,6 +6,8 @@ There are - Internal dependencies as the part of code from external libraries backported/copied in main repo. +The minimum required versions of the third-party libraries that are required can be found in the [third_party_minimum](../install/cmake/third_party_minimum) file. The minimum supported versions are listed here for convenience but the authorative source is always the linked file. + Both these dependencies are listed here: ## Internal dependencies @@ -37,7 +39,7 @@ Both these dependencies are listed here: - [OTLP/HTTP+JSON](/exporters/otlp) exporter: - - [protobuf](https://github.com/protocolbuffers/protobuf): Library to + - [protobuf](https://github.com/protocolbuffers/protobuf) (v3.21.6 or later): Library to serialize structured data. - OTLP messages are constructed as protobuf payloads. - `protoc` compiler is used to generate C++ stubs for proto files provided @@ -48,17 +50,17 @@ Both these dependencies are listed here: [here](https://github.com/protocolbuffers/protobuf/blob/master/LICENSE). The code generated by protoc compiler is owned by the owner of `.proto` file. - - [libcurl](https://curl.se/libcurl/) : the multiprotocol file transfer + - [libcurl](https://curl.se/libcurl/) (curl-7_81_0 or later) : the multiprotocol file transfer library. - Export connects with opentelemetry collector over HTTP protocol using libcurl library - License: Inspired by `MIT/X` but not same. - - [nlohmann/json](https://github.com/nlohmann/json): JSON for Modern C++. + - [nlohmann/json](https://github.com/nlohmann/json) (v3.10.5 or later): JSON for Modern C++. - protobuf serialized otlp messages are encoded in JSON format using this library. - License: `MIT License` - - [zlib](https://www.zlib.net/): A Massively Spiffy Yet Delicately + - [zlib](https://www.zlib.net/) (v1.2.11 or later): A Massively Spiffy Yet Delicately Unobtrusive Compression Library. - The `http_client` utilizes zlib to compress the message body and send it in gzip format. @@ -68,7 +70,7 @@ Both these dependencies are listed here: - [OTLP/gRPC](/exporters/otlp) exporter: - `protobuf` OTLP messages are constructed as protobuf payloads. - - [gRPC](https://github.com/grpc/grpc): An RPC library and framework + - [gRPC](https://github.com/grpc/grpc) (v1.49.2 or later): An RPC library and framework - Exporter communicates with OTLP collector using gRPC transport mechanism. - License: `Apache License 2.0` @@ -84,7 +86,7 @@ Both these dependencies are listed here: - [Prometheus](/exporters/prometheus) exporter: - - [`prometheus-cpp`](https://github.com/jupp0r/prometheus-cpp) Prometheus + - [`prometheus-cpp`](https://github.com/jupp0r/prometheus-cpp) (v1.1.0 or later) Prometheus Client Library for Modern C++ - License: `MIT License` @@ -95,7 +97,7 @@ Both these dependencies are listed here: - [Opentracing](/opentracing-shim) shim: - - [`opentracing-cpp`](https://github.com/opentracing/opentracing-cpp) + - [`opentracing-cpp`](https://github.com/opentracing/opentracing-cpp) (v1.6.0 or later) OpenTracing API for C++ - A bridge layer implementing the OpenTracing API using the OpenTelemetry API - License: `Apache License 2.0` diff --git a/install/cmake/third_party_minimum b/install/cmake/third_party_minimum index 004c8e597a..15470c56ac 100644 --- a/install/cmake/third_party_minimum +++ b/install/cmake/third_party_minimum @@ -4,6 +4,8 @@ # Minimum supported version git tags of third-party dependencies # Format: = +# Update docs/dependencies.md whenever the minimum version of a library is modified. + abseil=20220623.2 zlib=v1.2.11 curl=curl-7_81_0 From 7752778807e27df5bf3da3b12035bed2eca22306 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Sun, 27 Jul 2025 10:08:49 +0300 Subject: [PATCH 2/3] Update dependencies.md Typo of authoritative. --- docs/dependencies.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dependencies.md b/docs/dependencies.md index b417c56f8d..a631bd3570 100644 --- a/docs/dependencies.md +++ b/docs/dependencies.md @@ -6,7 +6,7 @@ There are - Internal dependencies as the part of code from external libraries backported/copied in main repo. -The minimum required versions of the third-party libraries that are required can be found in the [third_party_minimum](../install/cmake/third_party_minimum) file. The minimum supported versions are listed here for convenience but the authorative source is always the linked file. +The minimum required versions of the third-party libraries that are required can be found in the [third_party_minimum](../install/cmake/third_party_minimum) file. The minimum supported versions are listed here for convenience but the authoritative source is always the linked file. Both these dependencies are listed here: From 5f4b119b9611cd77100887e2ec5b9188a5bb65a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Mon, 28 Jul 2025 06:49:25 +0300 Subject: [PATCH 3/3] Fix links and line length The link used a relative path when the rest of them used absolue ones and the lines were above the 80 line limit. --- docs/dependencies.md | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/docs/dependencies.md b/docs/dependencies.md index a631bd3570..78dbc4bb4d 100644 --- a/docs/dependencies.md +++ b/docs/dependencies.md @@ -6,7 +6,10 @@ There are - Internal dependencies as the part of code from external libraries backported/copied in main repo. -The minimum required versions of the third-party libraries that are required can be found in the [third_party_minimum](../install/cmake/third_party_minimum) file. The minimum supported versions are listed here for convenience but the authoritative source is always the linked file. +The minimum required versions of the third-party libraries that are required can +be found in the [third_party_minimum](/install/cmake/third_party_minimum) file. +The minimum supported versions are listed here for convenience but the +authoritative source is always the linked file. Both these dependencies are listed here: @@ -39,8 +42,8 @@ Both these dependencies are listed here: - [OTLP/HTTP+JSON](/exporters/otlp) exporter: - - [protobuf](https://github.com/protocolbuffers/protobuf) (v3.21.6 or later): Library to - serialize structured data. + - [protobuf](https://github.com/protocolbuffers/protobuf) (v3.21.6 or later): + Library to serialize structured data. - OTLP messages are constructed as protobuf payloads. - `protoc` compiler is used to generate C++ stubs for proto files provided by `opentelemetry-proto`. @@ -50,18 +53,19 @@ Both these dependencies are listed here: [here](https://github.com/protocolbuffers/protobuf/blob/master/LICENSE). The code generated by protoc compiler is owned by the owner of `.proto` file. - - [libcurl](https://curl.se/libcurl/) (curl-7_81_0 or later) : the multiprotocol file transfer - library. + - [libcurl](https://curl.se/libcurl/) (curl-7_81_0 or later): + the multiprotocol file transfer library. - Export connects with opentelemetry collector over HTTP protocol using libcurl library - License: Inspired by `MIT/X` but not same. - - [nlohmann/json](https://github.com/nlohmann/json) (v3.10.5 or later): JSON for Modern C++. + - [nlohmann/json](https://github.com/nlohmann/json) (v3.10.5 or later): + JSON for Modern C++. - protobuf serialized otlp messages are encoded in JSON format using this library. - License: `MIT License` - - [zlib](https://www.zlib.net/) (v1.2.11 or later): A Massively Spiffy Yet Delicately - Unobtrusive Compression Library. + - [zlib](https://www.zlib.net/) (v1.2.11 or later): + A Massively Spiffy Yet Delicately Unobtrusive Compression Library. - The `http_client` utilizes zlib to compress the message body and send it in gzip format. - License: The library is licensed @@ -86,8 +90,8 @@ Both these dependencies are listed here: - [Prometheus](/exporters/prometheus) exporter: - - [`prometheus-cpp`](https://github.com/jupp0r/prometheus-cpp) (v1.1.0 or later) Prometheus - Client Library for Modern C++ + - [`prometheus-cpp`](https://github.com/jupp0r/prometheus-cpp) + (v1.1.0 or later): Prometheus Client Library for Modern C++ - License: `MIT License` - [ElasticSearch](/exporters/elasticsearch) @@ -97,7 +101,7 @@ Both these dependencies are listed here: - [Opentracing](/opentracing-shim) shim: - - [`opentracing-cpp`](https://github.com/opentracing/opentracing-cpp) (v1.6.0 or later) - OpenTracing API for C++ + - [`opentracing-cpp`](https://github.com/opentracing/opentracing-cpp) + (v1.6.0 or later): OpenTracing API for C++ - A bridge layer implementing the OpenTracing API using the OpenTelemetry API - License: `Apache License 2.0`