mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2025-12-09 00:07:57 +03:00
Done via: ``` git grep -l virtual/zlib$ | xargs sed -i -e 's@virtual/zlib$@&:=@' ``` Signed-off-by: Michał Górny <mgorny@gentoo.org>
121 lines
3.2 KiB
Bash
121 lines
3.2 KiB
Bash
# 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.7.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
|
|
-DWITH_STL=ON
|
|
-DWITH_GSL=OFF
|
|
|
|
-DWITH_API_ONLY=OFF
|
|
|
|
-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
|
|
}
|