homebrew-core/Formula/opentelemetry-cpp.rb

85 lines
3.5 KiB
Ruby

class OpentelemetryCpp < Formula
desc "OpenTelemetry C++ Client"
homepage "https://opentelemetry.io/"
url "https://github.com/open-telemetry/opentelemetry-cpp/archive/refs/tags/v1.6.0.tar.gz"
sha256 "802cf9132ee847bd1c72b72bd8116055fd7e78f60a44bb9c10225b41f5e35bff"
license "Apache-2.0"
revision 1
head "https://github.com/open-telemetry/opentelemetry-cpp.git", branch: "main"
bottle do
sha256 cellar: :any_skip_relocation, arm64_monterey: "c0579817319cb0ff56103c5d74ee6e8fb743aaa110d25d6be5a5e55aecb9e938"
sha256 cellar: :any_skip_relocation, arm64_big_sur: "ce5b98cdbbe8d8ac397c38fb431e391a5d95b62a8333bc940bbef4be1975e915"
sha256 cellar: :any_skip_relocation, monterey: "b2897f0007f910891e558bc837fb1854815c886a2819d567d3b755b609bce094"
sha256 cellar: :any_skip_relocation, big_sur: "5762bc92dafe82735f542891184c54b29b51c79e1af218204fd22a93bacac377"
sha256 cellar: :any_skip_relocation, catalina: "89f256729e0b1455e192086680602ae58eff3291a09289c3ec8eb26f526739e8"
sha256 cellar: :any_skip_relocation, x86_64_linux: "5c7945d895f138719fb7609a4c9dc518ba48fba8505f39e7bff7d3c5a963cc39"
end
depends_on "cmake" => :build
depends_on "boost"
depends_on "grpc"
depends_on "nlohmann-json"
depends_on "prometheus-cpp"
depends_on "protobuf"
depends_on "thrift"
uses_from_macos "curl"
def install
system "cmake", "-S", ".", "-B", "build",
"-DCMAKE_INSTALL_RPATH=#{rpath}",
"-DBUILD_TESTING=OFF",
"-DWITH_ELASTICSEARCH=ON",
"-DWITH_EXAMPLES=OFF",
"-DWITH_JAEGER=ON",
"-DWITH_LOGS_PREVIEW=ON",
"-DWITH_METRICS_PREVIEW=ON",
"-DWITH_OTLP=ON",
"-DWITH_OTLP_GRPC=ON",
"-DWITH_OTLP_HTTP=ON",
"-DWITH_PROMETHEUS=ON",
*std_cmake_args
system "cmake", "--build", "build"
system "cmake", "--install", "build"
end
test do
(testpath/"test.cc").write <<~EOS
#include "opentelemetry/sdk/trace/simple_processor.h"
#include "opentelemetry/sdk/trace/tracer_provider.h"
#include "opentelemetry/trace/provider.h"
#include "opentelemetry/exporters/ostream/span_exporter.h"
#include "opentelemetry/exporters/otlp/otlp_recordable_utils.h"
namespace trace_api = opentelemetry::trace;
namespace trace_sdk = opentelemetry::sdk::trace;
namespace nostd = opentelemetry::nostd;
int main()
{
auto exporter = std::unique_ptr<trace_sdk::SpanExporter>(
new opentelemetry::exporter::trace::OStreamSpanExporter);
auto processor = std::unique_ptr<trace_sdk::SpanProcessor>(
new trace_sdk::SimpleSpanProcessor(std::move(exporter)));
auto provider = nostd::shared_ptr<trace_api::TracerProvider>(
new trace_sdk::TracerProvider(std::move(processor)));
// Set the global trace provider
trace_api::Provider::SetTracerProvider(provider);
auto tracer = provider->GetTracer("library", OPENTELEMETRY_SDK_VERSION);
auto scoped_span = trace_api::Scope(tracer->StartSpan("test"));
}
EOS
system ENV.cxx, "test.cc", "-std=c++11", "-I#{include}", "-L#{lib}",
"-lopentelemetry_resources",
"-lopentelemetry_trace",
"-lopentelemetry_exporter_ostream_span",
"-lopentelemetry_common",
"-pthread",
"-o", "simple-example"
system "./simple-example"
end
end