summaryrefslogtreecommitdiff
path: root/dev-cpp/opentelemetry-cpp/opentelemetry-cpp-1.24.0.ebuild
diff options
context:
space:
mode:
Diffstat (limited to 'dev-cpp/opentelemetry-cpp/opentelemetry-cpp-1.24.0.ebuild')
-rw-r--r--dev-cpp/opentelemetry-cpp/opentelemetry-cpp-1.24.0.ebuild123
1 files changed, 123 insertions, 0 deletions
diff --git a/dev-cpp/opentelemetry-cpp/opentelemetry-cpp-1.24.0.ebuild b/dev-cpp/opentelemetry-cpp/opentelemetry-cpp-1.24.0.ebuild
new file mode 100644
index 000000000000..86dcb12d100a
--- /dev/null
+++ b/dev-cpp/opentelemetry-cpp/opentelemetry-cpp-1.24.0.ebuild
@@ -0,0 +1,123 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# update based on third_party_release
+OPENTELEMETRY_PROTO="1.8.0"
+
+inherit cmake
+
+DESCRIPTION="The OpenTelemetry C++ Client"
+HOMEPAGE="
+ https://opentelemetry.io/
+ https://github.com/open-telemetry/opentelemetry-cpp/
+"
+SRC_URI="
+ https://github.com/open-telemetry/${PN}/archive/refs/tags/v${PV}.tar.gz
+ -> ${P}.tar.gz
+ otlp? (
+ https://github.com/open-telemetry/opentelemetry-proto/archive/refs/tags/v${OPENTELEMETRY_PROTO}.tar.gz
+ -> opentelemetry-proto-${OPENTELEMETRY_PROTO}.tar.gz
+ )
+"
+
+LICENSE="Apache-2.0"
+SLOT="0/1"
+KEYWORDS="~amd64 ~arm64 ~ppc64"
+
+IUSE="elasticsearch grpc http otlp prometheus test"
+REQUIRED_USE="
+ grpc? ( otlp )
+ http? ( otlp )
+"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ http? (
+ net-misc/curl
+ virtual/zlib:=
+ )
+ elasticsearch? (
+ dev-cpp/nlohmann_json
+ net-misc/curl
+ )
+ grpc? ( net-libs/grpc:= )
+ otlp? (
+ dev-cpp/abseil-cpp:=
+ dev-libs/protobuf:=[libprotoc(+)]
+ dev-cpp/nlohmann_json
+ )
+ prometheus? ( dev-cpp/prometheus-cpp )
+"
+DEPEND="
+ ${RDEPEND}
+ test? ( dev-cpp/gtest )
+"
+BDEPEND="
+ virtual/pkgconfig
+ otlp? ( dev-libs/protobuf[protoc(+)] )
+"
+
+src_configure() {
+ # sanity check subslot to kick would be drive by bumpers
+ # https://github.com/open-telemetry/opentelemetry-cpp/blob/main/docs/abi-version-policy.md
+ local detected_abi
+ detected_abi="$(sed -n -e 's/^# define OPENTELEMETRY_ABI_VERSION_NO \(.*\)/\1/p' \
+ api/include/opentelemetry/version.h)"
+ detected_abi="${detected_abi}"
+ if [[ "${SLOT}" != "0/${detected_abi}" ]]; then
+ die "SLOT ${SLOT} doesn't match upstream specified ABI ${detected_abi}."
+ fi
+
+ local detected_proto_ver
+ detected_proto_ver="$(sed -n -e '/^opentelemetry-proto=/p' third_party_release)"
+ if [[ "${OPENTELEMETRY_PROTO}" != "${detected_proto_ver#opentelemetry-proto=v}" ]]; then
+ die "OPENTELEMETRY_PROTO=${OPENTELEMETRY_PROTO} doesn't match upstream specified ${detected_proto_ver}"
+ fi
+
+ local mycmakeargs=(
+ -DBUILD_TESTING=$(usex test)
+ -DWITH_BENCHMARK=OFF # benchmark tests dont make sense in ebuilds
+ -DBUILD_W3CTRACECONTEXT_TEST=OFF # network-sandbox breaking tests
+ -DWITH_FUNC_TESTS=ON
+
+ -DOTELCPP_VERSIONED_LIBS=ON
+ -DOTELCPP_MAINTAINER_MODE=OFF
+ -DOPENTELEMETRY_INSTALL=ON
+ # Modifies ABI and some project expect the non C++ std reliant ABI specifically
+ -DWITH_STL=OFF
+ -DWITH_GSL=OFF
+
+ -DWITH_API_ONLY=OFF
+
+ -DWITH_CONFIGURATION=OFF # experimental, vendored rapidyaml
+
+ -DWITH_ELASTICSEARCH=$(usex elasticsearch)
+ -DWITH_PROMETHEUS=$(usex prometheus)
+ -DWITH_OPENTRACING=OFF # unpackaged
+ -DWITH_ZIPKIN=OFF # unpackaged
+ -DWITH_ETW=OFF # unpackaged
+
+ # https://github.com/open-telemetry/opentelemetry-cpp/blob/main/exporters/otlp/README.md
+ # file exporter can be built separately to the other exporter.
+ # Its just simpler dependency wise to have a "otlp" use flag that the other exporter require.
+ -DWITH_OTLP_FILE=$(usex otlp)
+ -DWITH_OTLP_GRPC=$(usex grpc)
+ -DWITH_OTLP_HTTP=$(usex http)
+ -DWITH_OTLP_HTTP_COMPRESSION=ON # zlib is in the system set
+ )
+ use otlp && mycmakeargs+=( -DOTELCPP_PROTO_PATH="${WORKDIR}"/opentelemetry-proto-${OPENTELEMETRY_PROTO} )
+
+ cmake_src_configure
+}
+
+src_test() {
+ local CMAKE_SKIP_TESTS=(
+ # needs a running prometheus instance
+ exporter.PrometheusExporter.ShutdownSetsIsShutdownToTrue
+ )
+
+ # curl tests fragile
+ cmake_src_test -j1
+}