From e6ee4978791512179f27ca4032d8f718e7ea68ce Mon Sep 17 00:00:00 2001 From: esigo Date: Fri, 19 Nov 2021 11:05:18 +0100 Subject: [PATCH 1/7] jaeger bazel --- WORKSPACE | 30 ++++++++ examples/jaeger/BUILD | 26 +++---- exporters/jaeger/BUILD | 101 ++++++++++++++++++++++++++ exporters/jaeger/README.md | 6 +- exporters/jaeger/src/thrift_sender.cc | 1 + exporters/jaeger/src/thrift_sender.h | 1 - 6 files changed, 148 insertions(+), 17 deletions(-) create mode 100644 exporters/jaeger/BUILD diff --git a/WORKSPACE b/WORKSPACE index e44ca82ad4..8c00f79ba1 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -36,5 +36,35 @@ upb_deps() # Load prometheus C++ dependencies. load("@com_github_jupp0r_prometheus_cpp//bazel:repositories.bzl", "prometheus_cpp_repositories") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "rules_foreign_cc", + sha256 = "69023642d5781c68911beda769f91fcbc8ca48711db935a75da7f6536b65047f", + strip_prefix = "rules_foreign_cc-0.6.0", + url = "https://github.com/bazelbuild/rules_foreign_cc/archive/0.6.0.tar.gz", +) + +load("@rules_foreign_cc//foreign_cc:repositories.bzl", "rules_foreign_cc_dependencies") + +rules_foreign_cc_dependencies() + +_ALL_CONTENT = """\ +filegroup( + name = "all_srcs", + srcs = glob(["**"]), + visibility = ["//visibility:public"], +) +""" + +http_archive( + name = "thrift", + build_file_content = _ALL_CONTENT, + sha256 = "5ae1c4d16452a22eaf9d802ba7489907147c2b316ff38c9758918552fae5132c", + strip_prefix = "thrift-0.14.1", + urls = [ + "https://github.com/apache/thrift/archive/refs/tags/v0.14.1.tar.gz", + ], +) prometheus_cpp_repositories() diff --git a/examples/jaeger/BUILD b/examples/jaeger/BUILD index 0eca4845d7..23f42f93b2 100644 --- a/examples/jaeger/BUILD +++ b/examples/jaeger/BUILD @@ -1,13 +1,13 @@ -# TODO: enable bazel build -# cc_binary( -# name = "example_jaeger", -# srcs = [ -# "main.cc", -# ], -# deps = [ -# "//examples/common/foo_library:common_foo_library", -# "//api", -# "//exporters/jaeger:jaeger_exporter", -# "//sdk/src/trace", -# ], -# ) +cc_binary( + name = "example_jaeger", + srcs = [ + "main.cc", + ], + tags = ["jaeger"], + deps = [ + "//api", + "//examples/common/foo_library:common_foo_library", + "//exporters/jaeger:opentelemetry_exporter_jaeger_trace", + "//sdk/src/trace", + ], +) diff --git a/exporters/jaeger/BUILD b/exporters/jaeger/BUILD new file mode 100644 index 0000000000..9a749e8126 --- /dev/null +++ b/exporters/jaeger/BUILD @@ -0,0 +1,101 @@ +package(default_visibility = ["//visibility:public"]) + +load("@rules_foreign_cc//foreign_cc:defs.bzl", "cmake") + +cmake( + name = "thrift", + cache_entries = { + "CMAKE_BUILD_TYPE": "Release", + "BUILD_COMPILER": "OFF", + "BUILD_CPP": "ON", + "BUILD_LIBRARIES": "ON", + "BUILD_NODEJS": "OFF", + "BUILD_PYTHON": "OFF", + "BUILD_JAVASCRIPT": "OFF", + "BUILD_C_GLIB": "OFF", + "BUILD_JAVA": "OFF", + "BUILD_TESTING": "OFF", + "BUILD_TUTORIALS": "OFF", + }, + lib_source = "@thrift//:all_srcs", + out_static_libs = [ + "libthrift.a", + "libthriftnb.a", + "libthriftz.a", + ], + tags = ["jaeger"], +) + +cc_library( + name = "jaeger_thrift_gencpp", + srcs = [ + "thrift-gen/Agent.cpp", + "thrift-gen/Collector.cpp", + "thrift-gen/ZipkinCollector.cpp", + "thrift-gen/jaeger_types.cpp", + "thrift-gen/zipkincore_constants.cpp", + "thrift-gen/zipkincore_types.cpp", + ], + hdrs = [ + "thrift-gen/Agent.h", + "thrift-gen/Collector.h", + "thrift-gen/ZipkinCollector.h", + "thrift-gen/agent_types.h", + "thrift-gen/jaeger_types.h", + "thrift-gen/zipkincore_constants.h", + "thrift-gen/zipkincore_types.h", + ], + strip_include_prefix = "thrift-gen", + tags = ["jaeger"], + deps = [ + ":thrift", + "//ext/src/http/client/curl:http_client_curl", + ], +) + +cc_library( + name = "jaeger_exporter", + srcs = [ + ], + hdrs = [ + "src/THttpTransport.h", + "src/TUDPTransport.h", + "src/http_transport.h", + "src/sender.h", + "src/thrift_sender.h", + "src/transport.h", + "src/udp_transport.h", + ], + strip_include_prefix = "src", + tags = ["jaeger"], + deps = [ + ":jaeger_thrift_gencpp", + ":thrift", + "//ext/src/http/client/curl:http_client_curl", + ], +) + +cc_library( + name = "opentelemetry_exporter_jaeger_trace", + srcs = [ + "src/THttpTransport.cc", + "src/TUDPTransport.cc", + "src/http_transport.cc", + "src/jaeger_exporter.cc", + "src/recordable.cc", + "src/thrift_sender.cc", + "src/udp_transport.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/jaeger/jaeger_exporter.h", + "include/opentelemetry/exporters/jaeger/recordable.h", + ], + strip_include_prefix = "include", + tags = ["jaeger"], + deps = [ + ":jaeger_exporter", + ":jaeger_thrift_gencpp", + ":thrift", + "//ext/src/http/client/curl:http_client_curl", + ], +) diff --git a/exporters/jaeger/README.md b/exporters/jaeger/README.md index fb5063f85a..99f1e99b82 100644 --- a/exporters/jaeger/README.md +++ b/exporters/jaeger/README.md @@ -26,9 +26,9 @@ below: ``` ### Bazel install Instructions - -TODO - +``` +bazel build //exporters/jaeger:opentelemetry_exporter_jaeger_trace +``` ## Usage Install the exporter in your application, initialize and pass the `options` to it. diff --git a/exporters/jaeger/src/thrift_sender.cc b/exporters/jaeger/src/thrift_sender.cc index 770bb81991..35dd84ec69 100644 --- a/exporters/jaeger/src/thrift_sender.cc +++ b/exporters/jaeger/src/thrift_sender.cc @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 #include "thrift_sender.h" +#include #include "udp_transport.h" OPENTELEMETRY_BEGIN_NAMESPACE diff --git a/exporters/jaeger/src/thrift_sender.h b/exporters/jaeger/src/thrift_sender.h index 15b37dc231..40fcf5f09a 100644 --- a/exporters/jaeger/src/thrift_sender.h +++ b/exporters/jaeger/src/thrift_sender.h @@ -9,7 +9,6 @@ #include #include -#include #include #include From 37be1843984c181902da023bdc5be2853eafb848 Mon Sep 17 00:00:00 2001 From: esigo Date: Fri, 19 Nov 2021 13:08:19 +0100 Subject: [PATCH 2/7] ci fix --- .github/workflows/ci.yml | 5 +++++ ci/setup_thrift.sh | 4 ++++ exporters/jaeger/README.md | 2 ++ 3 files changed, 11 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 514b86ff3b..d6db5f15af 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -144,6 +144,7 @@ jobs: key: bazel_test - name: setup run: | + sudo ./ci/setup_thrift.sh dependencies_only sudo ./ci/setup_ci_environment.sh sudo ./ci/install_bazelisk.sh - name: run tests @@ -165,6 +166,7 @@ jobs: key: bazel_valgrind - name: setup run: | + sudo ./ci/setup_thrift.sh dependencies_only sudo ./ci/setup_ci_environment.sh sudo ./ci/install_bazelisk.sh - name: run tests @@ -186,6 +188,7 @@ jobs: key: bazel_noexcept - name: setup run: | + sudo ./ci/setup_thrift.sh dependencies_only sudo ./ci/setup_ci_environment.sh sudo ./ci/install_bazelisk.sh - name: run tests @@ -207,6 +210,7 @@ jobs: key: bazel_asan - name: setup run: | + sudo ./ci/setup_thrift.sh dependencies_only sudo ./ci/setup_ci_environment.sh sudo ./ci/install_bazelisk.sh - name: run tests @@ -228,6 +232,7 @@ jobs: key: bazel_tsan - name: setup run: | + sudo ./ci/setup_thrift.sh dependencies_only sudo ./ci/setup_ci_environment.sh sudo ./ci/install_bazelisk.sh - name: run tests diff --git a/ci/setup_thrift.sh b/ci/setup_thrift.sh index 03d1a7851d..9c23b45f97 100755 --- a/ci/setup_thrift.sh +++ b/ci/setup_thrift.sh @@ -17,6 +17,10 @@ apt install -y --no-install-recommends \ libssl-dev \ ninja-build +if [[ "$1" == "dependencies_only" ]]; then + exit 0; +fi + pushd $BUILD_DIR wget https://github.com/apache/thrift/archive/refs/tags/v${THRIFT_VERSION}.tar.gz tar -zxvf v${THRIFT_VERSION}.tar.gz diff --git a/exporters/jaeger/README.md b/exporters/jaeger/README.md index 99f1e99b82..83058808f0 100644 --- a/exporters/jaeger/README.md +++ b/exporters/jaeger/README.md @@ -26,6 +26,8 @@ below: ``` ### Bazel install Instructions +Refer to install instructions +[INSTALL.md](../../INSTALL.md#building-as-standalone-bazel-project). ``` bazel build //exporters/jaeger:opentelemetry_exporter_jaeger_trace ``` From 40b6c2f502167d1375116cd47c4c7b255a51ca3e Mon Sep 17 00:00:00 2001 From: esigo Date: Fri, 19 Nov 2021 13:52:04 +0100 Subject: [PATCH 3/7] ci Linux only --- ci/do_ci.ps1 | 2 +- ci/do_ci.sh | 2 +- exporters/jaeger/src/sender.h | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ci/do_ci.ps1 b/ci/do_ci.ps1 index fdc141768e..da340c9624 100644 --- a/ci/do_ci.ps1 +++ b/ci/do_ci.ps1 @@ -5,7 +5,7 @@ $action = $args[0] $SRC_DIR=(Get-Item -Path ".\").FullName -$BAZEL_OPTIONS="--copt=-DENABLE_METRICS_PREVIEW --copt=-DENABLE_LOGS_PREVIEW" +$BAZEL_OPTIONS="--copt=-DENABLE_METRICS_PREVIEW --copt=-DENABLE_LOGS_PREVIEW --build_tag_filters=-jaeger" $BAZEL_TEST_OPTIONS="$BAZEL_OPTIONS --test_output=errors" if (!(test-path build)) { diff --git a/ci/do_ci.sh b/ci/do_ci.sh index 6534340cd5..be08a8687c 100755 --- a/ci/do_ci.sh +++ b/ci/do_ci.sh @@ -28,7 +28,7 @@ BAZEL_TEST_OPTIONS="$BAZEL_OPTIONS --test_output=errors" # https://github.com/bazelbuild/bazel/issues/4341 BAZEL_MACOS_OPTIONS="$BAZEL_OPRIONS --features=-supports_dynamic_linker" -BAZEL_MACOS_TEST_OPTIONS="$BAZEL_MACOS_OPTIONS --test_output=errors" +BAZEL_MACOS_TEST_OPTIONS="$BAZEL_MACOS_OPTIONS --test_output=errors --build_tag_filters=-jaeger" BAZEL_STARTUP_OPTIONS="--output_user_root=$HOME/.cache/bazel" diff --git a/exporters/jaeger/src/sender.h b/exporters/jaeger/src/sender.h index 6162cf0d1b..f4827b5502 100644 --- a/exporters/jaeger/src/sender.h +++ b/exporters/jaeger/src/sender.h @@ -3,6 +3,7 @@ #pragma once +#include #include OPENTELEMETRY_BEGIN_NAMESPACE From b1eb4c092ce0f62b75554dd630d6e9ccd22fafd5 Mon Sep 17 00:00:00 2001 From: esigo Date: Fri, 19 Nov 2021 15:55:30 +0100 Subject: [PATCH 4/7] md lint --- exporters/jaeger/BUILD | 1 + exporters/jaeger/README.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/exporters/jaeger/BUILD b/exporters/jaeger/BUILD index 9a749e8126..78b408c698 100644 --- a/exporters/jaeger/BUILD +++ b/exporters/jaeger/BUILD @@ -16,6 +16,7 @@ cmake( "BUILD_JAVA": "OFF", "BUILD_TESTING": "OFF", "BUILD_TUTORIALS": "OFF", + "WITH_HASKELL": "OFF", }, lib_source = "@thrift//:all_srcs", out_static_libs = [ diff --git a/exporters/jaeger/README.md b/exporters/jaeger/README.md index 83058808f0..d7489b8510 100644 --- a/exporters/jaeger/README.md +++ b/exporters/jaeger/README.md @@ -28,7 +28,7 @@ below: ### Bazel install Instructions Refer to install instructions [INSTALL.md](../../INSTALL.md#building-as-standalone-bazel-project). -``` +```console bazel build //exporters/jaeger:opentelemetry_exporter_jaeger_trace ``` ## Usage From 9038feeb263014ac65eafecc28dac31cd4434920 Mon Sep 17 00:00:00 2001 From: esigo Date: Fri, 19 Nov 2021 17:36:29 +0100 Subject: [PATCH 5/7] jaeger enable exception --- exporters/jaeger/BUILD | 9 ++++----- exporters/jaeger/README.md | 3 +++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/exporters/jaeger/BUILD b/exporters/jaeger/BUILD index 78b408c698..a409d48598 100644 --- a/exporters/jaeger/BUILD +++ b/exporters/jaeger/BUILD @@ -17,6 +17,7 @@ cmake( "BUILD_TESTING": "OFF", "BUILD_TUTORIALS": "OFF", "WITH_HASKELL": "OFF", + "CMAKE_CXX_FLAGS": "-fexceptions", }, lib_source = "@thrift//:all_srcs", out_static_libs = [ @@ -46,6 +47,7 @@ cc_library( "thrift-gen/zipkincore_constants.h", "thrift-gen/zipkincore_types.h", ], + copts = ["-fexceptions"], strip_include_prefix = "thrift-gen", tags = ["jaeger"], deps = [ @@ -67,12 +69,11 @@ cc_library( "src/transport.h", "src/udp_transport.h", ], + copts = ["-fexceptions"], strip_include_prefix = "src", tags = ["jaeger"], deps = [ ":jaeger_thrift_gencpp", - ":thrift", - "//ext/src/http/client/curl:http_client_curl", ], ) @@ -91,12 +92,10 @@ cc_library( "include/opentelemetry/exporters/jaeger/jaeger_exporter.h", "include/opentelemetry/exporters/jaeger/recordable.h", ], + copts = ["-fexceptions"], strip_include_prefix = "include", tags = ["jaeger"], deps = [ ":jaeger_exporter", - ":jaeger_thrift_gencpp", - ":thrift", - "//ext/src/http/client/curl:http_client_curl", ], ) diff --git a/exporters/jaeger/README.md b/exporters/jaeger/README.md index d7489b8510..d4fa3b45b8 100644 --- a/exporters/jaeger/README.md +++ b/exporters/jaeger/README.md @@ -26,11 +26,14 @@ below: ``` ### Bazel install Instructions + Refer to install instructions [INSTALL.md](../../INSTALL.md#building-as-standalone-bazel-project). + ```console bazel build //exporters/jaeger:opentelemetry_exporter_jaeger_trace ``` + ## Usage Install the exporter in your application, initialize and pass the `options` to it. From ce9a15bbe3bc47d53235466cbb4f352fa0563269 Mon Sep 17 00:00:00 2001 From: esigo Date: Fri, 19 Nov 2021 19:38:46 +0100 Subject: [PATCH 6/7] ci mac --- ci/do_ci.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/do_ci.sh b/ci/do_ci.sh index be08a8687c..2ab3c3a4d0 100755 --- a/ci/do_ci.sh +++ b/ci/do_ci.sh @@ -27,8 +27,8 @@ BAZEL_OPTIONS="--copt=-DENABLE_METRICS_PREVIEW --copt=-DENABLE_LOGS_PREVIEW" BAZEL_TEST_OPTIONS="$BAZEL_OPTIONS --test_output=errors" # https://github.com/bazelbuild/bazel/issues/4341 -BAZEL_MACOS_OPTIONS="$BAZEL_OPRIONS --features=-supports_dynamic_linker" -BAZEL_MACOS_TEST_OPTIONS="$BAZEL_MACOS_OPTIONS --test_output=errors --build_tag_filters=-jaeger" +BAZEL_MACOS_OPTIONS="$BAZEL_OPRIONS --features=-supports_dynamic_linker --build_tag_filters=-jaeger" +BAZEL_MACOS_TEST_OPTIONS="$BAZEL_MACOS_OPTIONS --test_output=errors" BAZEL_STARTUP_OPTIONS="--output_user_root=$HOME/.cache/bazel" From a0478cb38bb48577ca5342c9223888d7c980dfbc Mon Sep 17 00:00:00 2001 From: esigo Date: Fri, 19 Nov 2021 20:24:27 +0100 Subject: [PATCH 7/7] ci Windows --- exporters/jaeger/BUILD | 3 +++ 1 file changed, 3 insertions(+) diff --git a/exporters/jaeger/BUILD b/exporters/jaeger/BUILD index a409d48598..eefacc5c5f 100644 --- a/exporters/jaeger/BUILD +++ b/exporters/jaeger/BUILD @@ -26,6 +26,9 @@ cmake( "libthriftz.a", ], tags = ["jaeger"], + target_compatible_with = [ + "@platforms//os:linux", + ], ) cc_library(