about summary refs log tree commit diff
path: root/nixpkgs/pkgs/by-name/op/opentelemetry-cpp/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/by-name/op/opentelemetry-cpp/package.nix')
-rw-r--r--nixpkgs/pkgs/by-name/op/opentelemetry-cpp/package.nix79
1 files changed, 79 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/by-name/op/opentelemetry-cpp/package.nix b/nixpkgs/pkgs/by-name/op/opentelemetry-cpp/package.nix
new file mode 100644
index 000000000000..5bc1a46ad6ce
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/op/opentelemetry-cpp/package.nix
@@ -0,0 +1,79 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, gtest
+, protobuf
+, curl
+, grpc
+, prometheus-cpp
+, nlohmann_json
+, nix-update-script
+}:
+
+let
+  opentelemetry-proto = fetchFromGitHub {
+    owner = "open-telemetry";
+    repo = "opentelemetry-proto";
+    rev = "v1.0.0";
+    hash = "sha256-1IylAZs8gElpruSX52A+ZopU8jXH/MjRE+FQV3gQ+Gk=";
+  };
+in
+stdenv.mkDerivation (finalAttrs: {
+  pname = "opentelemetry-cpp";
+  version = "1.13.0";
+
+  src = fetchFromGitHub {
+    owner = "open-telemetry";
+    repo = "opentelemetry-cpp";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-Tf1ZnmHavnwwvRb4Tes20LMld+w/2kRo5UErT8pHf3w=";
+  };
+
+  patches = [
+    ./0001-Disable-tests-requiring-network-access.patch
+  ] ++ lib.optional stdenv.isDarwin ./0002-Disable-segfaulting-test-on-Darwin.patch;
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    curl
+    grpc
+    nlohmann_json
+    prometheus-cpp
+    protobuf
+  ];
+
+  doCheck = true;
+
+  checkInputs = [
+    gtest
+  ];
+
+  strictDeps = true;
+
+  cmakeFlags = [
+    "-DBUILD_SHARED_LIBS=ON"
+    "-DWITH_OTLP_HTTP=ON"
+    "-DWITH_OTLP_GRPC=ON"
+    "-DWITH_ABSEIL=ON"
+    "-DWITH_PROMETHEUS=ON"
+    "-DWITH_ELASTICSEARCH=ON"
+    "-DWITH_ZIPKIN=ON"
+    "-DWITH_BENCHMARK=OFF"
+    "-DOTELCPP_PROTO_PATH=${opentelemetry-proto}"
+  ];
+
+  outputs = [ "out" "dev" ];
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = {
+    description = "The OpenTelemetry C++ Client Library";
+    homepage = "https://github.com/open-telemetry/opentelemetry-cpp";
+    license = [ lib.licenses.asl20 ];
+    maintainers = with lib.maintainers; [ jfroche ];
+    # https://github.com/protocolbuffers/protobuf/issues/14492
+    broken = !(stdenv.buildPlatform.canExecute stdenv.hostPlatform);
+  };
+})