diff --git a/CHANGELOG.md b/CHANGELOG.md index 462236afa6..2979d4d448 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,10 @@ Increment the: * [CONFIGURATION] Add a configuration builder for the host resource detector [#4451](https://github.com/open-telemetry/opentelemetry-cpp/issues/4451) + +* [CONFIGURATION] Cleanup build targets and docs + [#4486](https://github.com/open-telemetry/opentelemetry-cpp/pull/4486) + * [CONFIGURATION] Build the configured resource detectors in SdkBuilder, apply the `detection.attributes` include/exclude filter to the detected attributes, and merge the resource per the resource SDK specification. diff --git a/INSTALL.md b/INSTALL.md index 97cb5bb41a..546be8f9bb 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -242,8 +242,13 @@ build configuration. | | opentelemetry-cpp::trace | | | opentelemetry-cpp::metrics | | | opentelemetry-cpp::logs | -| | opentelemetry-cpp::configuration_core (EXPERIMENTAL: Programmatic configuration) | -| **configuration** | opentelemetry-cpp::configuration (EXPERIMENTAL: YAML configuration) | +| | opentelemetry-cpp::configuration_core (EXPERIMENTAL: Model, Builder and Interfaces) | +| | opentelemetry-cpp::configuration_trace_builders (EXPERIMENTAL: Trace SDK default builders) | +| | opentelemetry-cpp::configuration_metrics_builders (EXPERIMENTAL: Metrics SDK default builders) | +| | opentelemetry-cpp::configuration_logs_builders (EXPERIMENTAL: Logs SDK default builders) | +| | opentelemetry-cpp::configuration_registry_factory (EXPERIMENTAL: Built-in registry creator) | +| **configuration** | opentelemetry-cpp::configuration_yaml (EXPERIMENTAL: YAML configuration) | +| | opentelemetry-cpp::configuration (EXPERIMENTAL: All config targets interface) | | **ext_common** | opentelemetry-cpp::ext | | **ext_http_curl** | opentelemetry-cpp::http_client_curl | | **ext_dll** | opentelemetry-cpp::opentelemetry_cpp | diff --git a/ci/verify_packages.sh b/ci/verify_packages.sh index a8f34b56bf..576e81335e 100755 --- a/ci/verify_packages.sh +++ b/ci/verify_packages.sh @@ -47,5 +47,11 @@ for exporter in prometheus prometheus_builder zipkin_trace elasticsearch_logs in validate_package "opentelemetry_exporter_${exporter}" done -# Optional features +# SDK configuration core and builders +for pkg in configuration_core configuration_trace_builders configuration_logs_builders configuration_metrics_builders configuration_registry_factory; do + pkg-config --validate "opentelemetry_${pkg}" --print-errors +done + +# Optional features (YAML parser and full interface) +validate_package "opentelemetry_configuration_yaml" validate_package "opentelemetry_configuration" diff --git a/cmake/templates/opentelemetry-cpp-config.cmake.in b/cmake/templates/opentelemetry-cpp-config.cmake.in index 5fde329cea..196ba74d1a 100644 --- a/cmake/templates/opentelemetry-cpp-config.cmake.in +++ b/cmake/templates/opentelemetry-cpp-config.cmake.in @@ -109,6 +109,11 @@ # opentelemetry-cpp::metrics - Imported target of COMPONENT sdk # opentelemetry-cpp::logs - Imported target of COMPONENT sdk # opentelemetry-cpp::configuration_core - Imported target of COMPONENT sdk +# opentelemetry-cpp::configuration_trace_builders - Imported target of COMPONENT sdk +# opentelemetry-cpp::configuration_metrics_builders - Imported target of COMPONENT sdk +# opentelemetry-cpp::configuration_logs_builders - Imported target of COMPONENT sdk +# opentelemetry-cpp::configuration_registry_factory - Imported target of COMPONENT sdk +# opentelemetry-cpp::configuration_yaml - Imported target of COMPONENT configuration # opentelemetry-cpp::configuration - Imported target of COMPONENT configuration # opentelemetry-cpp::ext - Imported target of COMPONENT ext_common # opentelemetry-cpp::http_client_curl - Imported target of COMPONENT ext_http_curl diff --git a/examples/configuration/BUILD b/examples/configuration/BUILD index 4f1810c482..2001bf2f81 100644 --- a/examples/configuration/BUILD +++ b/examples/configuration/BUILD @@ -44,7 +44,6 @@ cc_test( "//resource_detectors:resource_detectors_builders", "//sdk:headers", "//sdk/src/configuration", - "//sdk/src/configuration:configuration_registry_factory", "//sdk/src/logs", "//sdk/src/metrics", "//sdk/src/trace", @@ -75,7 +74,6 @@ cc_test( "//exporters/ostream:ostream_span_exporter_builder", "//sdk:headers", "//sdk/src/configuration", - "//sdk/src/configuration:configuration_registry_factory", "//sdk/src/logs", "//sdk/src/metrics", "//sdk/src/trace", @@ -106,7 +104,6 @@ cc_test( "//exporters/ostream:ostream_span_exporter_builder", "//sdk:headers", "//sdk/src/configuration", - "//sdk/src/configuration:configuration_registry_factory", "//sdk/src/logs", "//sdk/src/metrics", "//sdk/src/trace", diff --git a/examples/configuration/CMakeLists.txt b/examples/configuration/CMakeLists.txt index 06ed313862..495ec1db64 100644 --- a/examples/configuration/CMakeLists.txt +++ b/examples/configuration/CMakeLists.txt @@ -24,7 +24,6 @@ add_executable( target_link_libraries( example_yaml PRIVATE ${CMAKE_THREAD_LIBS_INIT} - opentelemetry-cpp::configuration_registry_factory opentelemetry-cpp::configuration common_metrics_foo_library common_logs_foo_library diff --git a/install/test/cmake/component_tests/configuration/CMakeLists.txt b/install/test/cmake/component_tests/configuration/CMakeLists.txt index 7600814c83..058abc488c 100644 --- a/install/test/cmake/component_tests/configuration/CMakeLists.txt +++ b/install/test/cmake/component_tests/configuration/CMakeLists.txt @@ -17,8 +17,7 @@ include(GoogleTest) add_executable(configuration_test ${INSTALL_TEST_SRC_DIR}/test_configuration.cc) target_link_libraries( configuration_test - PRIVATE opentelemetry-cpp::configuration_registry_factory - opentelemetry-cpp::configuration + PRIVATE opentelemetry-cpp::configuration opentelemetry-cpp::ostream_log_record_exporter_builder opentelemetry-cpp::ostream_metrics_exporter_builder opentelemetry-cpp::ostream_span_exporter_builder diff --git a/install/test/cmake/fetch_content_test/CMakeLists.txt b/install/test/cmake/fetch_content_test/CMakeLists.txt index 432523d966..4d4f87ece9 100644 --- a/install/test/cmake/fetch_content_test/CMakeLists.txt +++ b/install/test/cmake/fetch_content_test/CMakeLists.txt @@ -102,6 +102,7 @@ target_link_libraries( opentelemetry-cpp::configuration_metrics_builders opentelemetry-cpp::configuration_logs_builders opentelemetry-cpp::configuration_registry_factory + opentelemetry-cpp::configuration_yaml opentelemetry-cpp::configuration opentelemetry-cpp::resource_detectors opentelemetry-cpp::resource_detectors_builders diff --git a/sdk/CMakeLists.txt b/sdk/CMakeLists.txt index 3c2b5f9131..5580f4f988 100644 --- a/sdk/CMakeLists.txt +++ b/sdk/CMakeLists.txt @@ -55,6 +55,7 @@ if(OTELCPP_WITH_CONFIGURATION) COMPONENT configuration TARGETS + opentelemetry_configuration_yaml opentelemetry_configuration FILES_DIRECTORY "include/opentelemetry/" diff --git a/sdk/src/configuration/BUILD b/sdk/src/configuration/BUILD index d02484305d..390c3cfef7 100644 --- a/sdk/src/configuration/BUILD +++ b/sdk/src/configuration/BUILD @@ -82,7 +82,7 @@ cc_library( ) cc_library( - name = "configuration", + name = "configuration_yaml", srcs = [ "configuration_parser.cc", "ryml_document.cc", @@ -97,3 +97,15 @@ cc_library( "@rapidyaml", ], ) + +cc_library( + name = "configuration", + deps = [ + ":configuration_core", + ":configuration_logs_builders", + ":configuration_metrics_builders", + ":configuration_registry_factory", + ":configuration_trace_builders", + ":configuration_yaml", + ], +) diff --git a/sdk/src/configuration/CMakeLists.txt b/sdk/src/configuration/CMakeLists.txt index e3254f9e45..eb34598a90 100644 --- a/sdk/src/configuration/CMakeLists.txt +++ b/sdk/src/configuration/CMakeLists.txt @@ -23,11 +23,12 @@ target_include_directories( PUBLIC "$" "$") +# TODO: Remove trace, metrics and logs library links from config core. See: +# https://github.com/open-telemetry/opentelemetry-cpp/issues/4352 target_link_libraries( opentelemetry_configuration_core - PUBLIC opentelemetry_api opentelemetry_common opentelemetry_trace - opentelemetry_metrics opentelemetry_logs opentelemetry_resources - PRIVATE) + PUBLIC opentelemetry_api opentelemetry_common opentelemetry_resources + opentelemetry_trace opentelemetry_metrics opentelemetry_logs) # Trace SDK component builders add_library(opentelemetry_configuration_trace_builders trace_builders.cc) @@ -43,8 +44,7 @@ target_include_directories( target_link_libraries( opentelemetry_configuration_trace_builders - PUBLIC opentelemetry_trace - PRIVATE opentelemetry_configuration_core) + PUBLIC opentelemetry_trace opentelemetry_configuration_core) # Logs SDK component builders add_library(opentelemetry_configuration_logs_builders logs_builders.cc) @@ -60,8 +60,7 @@ target_include_directories( target_link_libraries( opentelemetry_configuration_logs_builders - PUBLIC opentelemetry_logs - PRIVATE opentelemetry_configuration_core) + PUBLIC opentelemetry_logs opentelemetry_configuration_core) # Metrics SDK component builders add_library(opentelemetry_configuration_metrics_builders metrics_builders.cc) @@ -77,8 +76,7 @@ target_include_directories( target_link_libraries( opentelemetry_configuration_metrics_builders - PUBLIC opentelemetry_metrics - PRIVATE opentelemetry_configuration_core) + PUBLIC opentelemetry_metrics opentelemetry_configuration_core) # Registry factory for to register all SDK component builders add_library(opentelemetry_configuration_registry_factory registry_factory.cc) @@ -95,37 +93,108 @@ target_include_directories( target_link_libraries( opentelemetry_configuration_registry_factory PUBLIC opentelemetry_configuration_core - opentelemetry_configuration_trace_builders - opentelemetry_configuration_metrics_builders - opentelemetry_configuration_logs_builders) + PRIVATE opentelemetry_configuration_trace_builders + opentelemetry_configuration_metrics_builders + opentelemetry_configuration_logs_builders) + +if(OPENTELEMETRY_INSTALL) + opentelemetry_add_pkgconfig( + configuration_core + "OpenTelemetry SDK - Configuration Core" + "Programmatic configuration model, registry, and SDK builder." + "opentelemetry_api" + "opentelemetry_common" + "opentelemetry_trace" + "opentelemetry_metrics" + "opentelemetry_logs" + "opentelemetry_resources") + + opentelemetry_add_pkgconfig( + configuration_trace_builders + "OpenTelemetry SDK - Configuration Trace Builders" + "Default trace SDK component builders for programmatic configuration." + "opentelemetry_trace" + "opentelemetry_configuration_core") + + opentelemetry_add_pkgconfig( + configuration_logs_builders + "OpenTelemetry SDK - Configuration Logs Builders" + "Default logs SDK component builders for programmatic configuration." + "opentelemetry_logs" + "opentelemetry_configuration_core") + + opentelemetry_add_pkgconfig( + configuration_metrics_builders + "OpenTelemetry SDK - Configuration Metrics Builders" + "Default metrics SDK component builders for programmatic configuration." + "opentelemetry_metrics" + "opentelemetry_configuration_core") + + opentelemetry_add_pkgconfig( + configuration_registry_factory + "OpenTelemetry SDK - Configuration Registry Factory" + "Registry factory pre-populated with default SDK component builders." + "opentelemetry_configuration_core" + "opentelemetry_configuration_trace_builders" + "opentelemetry_configuration_metrics_builders" + "opentelemetry_configuration_logs_builders") +endif() if(OTELCPP_WITH_CONFIGURATION) # YAML configuration parser add_library( - opentelemetry_configuration + opentelemetry_configuration_yaml configuration_parser.cc yaml_configuration_parser.cc ryml_document.cc ryml_document_node.cc) - set_target_properties(opentelemetry_configuration PROPERTIES EXPORT_NAME - configuration) - set_target_version(opentelemetry_configuration) + set_target_properties(opentelemetry_configuration_yaml + PROPERTIES EXPORT_NAME configuration_yaml) + set_target_version(opentelemetry_configuration_yaml) target_include_directories( - opentelemetry_configuration + opentelemetry_configuration_yaml PUBLIC "$" "$") target_link_libraries( - opentelemetry_configuration + opentelemetry_configuration_yaml PUBLIC opentelemetry_configuration_core PRIVATE ryml::ryml) + # Full configuration interface target (links to all configuration libraries) + # Link to this for all SDK default built-in component builders and YAML + # parsing + add_library(opentelemetry_configuration INTERFACE) + set_target_properties(opentelemetry_configuration PROPERTIES EXPORT_NAME + configuration) + + set_target_version(opentelemetry_configuration) + target_link_libraries( + opentelemetry_configuration + INTERFACE opentelemetry_configuration_core + opentelemetry_configuration_yaml + opentelemetry_configuration_registry_factory + opentelemetry_configuration_trace_builders + opentelemetry_configuration_metrics_builders + opentelemetry_configuration_logs_builders) + if(OPENTELEMETRY_INSTALL) opentelemetry_add_pkgconfig( - configuration "OpenTelemetry SDK - Configuration" - "Components for exporting traces in the OpenTelemetry SDK." - "opentelemetry_configuration") + configuration_yaml "OpenTelemetry SDK - Configuration YAML" + "YAML configuration parser for the OpenTelemetry SDK." + "opentelemetry_configuration_core") + + opentelemetry_add_pkgconfig( + configuration + "OpenTelemetry SDK - Configuration" + "Full YAML configuration interface: parser, registry, and all default builders." + "opentelemetry_configuration_core" + "opentelemetry_configuration_yaml" + "opentelemetry_configuration_registry_factory" + "opentelemetry_configuration_trace_builders" + "opentelemetry_configuration_metrics_builders" + "opentelemetry_configuration_logs_builders") endif() endif(OTELCPP_WITH_CONFIGURATION) diff --git a/sdk/test/configuration/BUILD b/sdk/test/configuration/BUILD index 67fa143c3a..ad7470943f 100644 --- a/sdk/test/configuration/BUILD +++ b/sdk/test/configuration/BUILD @@ -150,7 +150,7 @@ cc_test( deps = [ "//api", "//sdk:headers", - "//sdk/src/configuration", + "//sdk/src/configuration:configuration_yaml", "//sdk/src/logs", "//sdk/src/metrics", "//sdk/src/trace", @@ -170,7 +170,7 @@ cc_test( deps = [ "//api", "//sdk:headers", - "//sdk/src/configuration", + "//sdk/src/configuration:configuration_yaml", "//sdk/src/logs", "//sdk/src/metrics", "//sdk/src/trace", @@ -190,7 +190,7 @@ cc_test( deps = [ "//api", "//sdk:headers", - "//sdk/src/configuration", + "//sdk/src/configuration:configuration_yaml", "//sdk/src/logs", "//sdk/src/metrics", "//sdk/src/trace", @@ -210,7 +210,7 @@ cc_test( deps = [ "//api", "//sdk:headers", - "//sdk/src/configuration", + "//sdk/src/configuration:configuration_yaml", "//sdk/src/logs", "//sdk/src/metrics", "//sdk/src/trace", @@ -230,7 +230,7 @@ cc_test( deps = [ "//api", "//sdk:headers", - "//sdk/src/configuration", + "//sdk/src/configuration:configuration_yaml", "//sdk/src/logs", "//sdk/src/metrics", "//sdk/src/trace", @@ -250,7 +250,7 @@ cc_test( deps = [ "//api", "//sdk:headers", - "//sdk/src/configuration", + "//sdk/src/configuration:configuration_yaml", "//sdk/src/logs", "//sdk/src/metrics", "//sdk/src/trace", @@ -270,7 +270,7 @@ cc_test( deps = [ "//api", "//sdk:headers", - "//sdk/src/configuration", + "//sdk/src/configuration:configuration_yaml", "//sdk/src/logs", "//sdk/src/metrics", "//sdk/src/trace", diff --git a/sdk/test/configuration/CMakeLists.txt b/sdk/test/configuration/CMakeLists.txt index 51db624863..fc6b4739b7 100644 --- a/sdk/test/configuration/CMakeLists.txt +++ b/sdk/test/configuration/CMakeLists.txt @@ -70,7 +70,7 @@ if(WITH_CONFIGURATION) add_executable(${testname} "${testname}.cc") target_link_libraries( ${testname} PRIVATE ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} - opentelemetry_configuration) + opentelemetry_configuration_yaml) gtest_add_tests( TARGET ${testname} TEST_PREFIX yaml.