From a9899c50074cb9b680f88a0a9d2230acfce7112e Mon Sep 17 00:00:00 2001 From: qxz6ezp Date: Tue, 4 Aug 2026 21:20:44 +0530 Subject: [PATCH 1/4] feat(deps): add score_config_management to reference integration Pin score_config_management to 49f26b74 and add a patch (sourced from config_management PR#37) fixing the ProxyFuture API migration and removing SOCAL/component_tests targets not present in the OSS build. --- MODULE.bazel.lock | 2 + .../score_modules_target_sw.MODULE.bazel | 11 ++ known_good.json | 23 +++ ...communication-api-and-remove-targets.patch | 159 ++++++++++++++++++ patches/config_management/BUILD | 0 5 files changed, 195 insertions(+) create mode 100644 patches/config_management/001-fix-communication-api-and-remove-targets.patch create mode 100644 patches/config_management/BUILD diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index c9eb12e0be6..6bebc35cfd4 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -274,6 +274,7 @@ "https://bcr.bazel.build/modules/grpc-java/1.62.2/MODULE.bazel": "99b8771e8c7cacb130170fed2a10c9e8fed26334a93e73b42d2953250885a158", "https://bcr.bazel.build/modules/grpc-java/1.66.0/MODULE.bazel": "86ff26209fac846adb89db11f3714b3dc0090fb2fb81575673cc74880cda4e7e", "https://bcr.bazel.build/modules/grpc-java/1.69.0/MODULE.bazel": "53887af6a00b3b406d70175d3d07e84ea9362016ff55ea90b9185f0227bfaf98", + "https://bcr.bazel.build/modules/grpc-java/1.70.0/MODULE.bazel": "cae8776b751f03c7984f651b00f604c297d7e759f1ce97da8fbf2fc7ce6cd226", "https://bcr.bazel.build/modules/grpc-java/1.75.0.bcr.1/MODULE.bazel": "ba818f142b40cc7fb82fbdc8a9f7475b6783cd7849f9a71da814bacaf0acfd74", "https://bcr.bazel.build/modules/grpc-java/1.78.0/MODULE.bazel": "48f790fbb95625245295df1283e0dba344a4e30b4a9a9cefbabfa92bd84f3691", "https://bcr.bazel.build/modules/grpc-java/1.78.0/source.json": "36c3a83c5ddeb864d7a4b97801456c464077f80a8216354ac1a71f7ce8699771", @@ -782,6 +783,7 @@ "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-java/1.62.2/MODULE.bazel": "not found", "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-java/1.66.0/MODULE.bazel": "not found", "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-java/1.69.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-java/1.70.0/MODULE.bazel": "not found", "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-java/1.75.0.bcr.1/MODULE.bazel": "not found", "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-java/1.78.0/MODULE.bazel": "not found", "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-proto/0.0.0-20240627-ec30f58/MODULE.bazel": "not found", diff --git a/bazel_common/score_modules_target_sw.MODULE.bazel b/bazel_common/score_modules_target_sw.MODULE.bazel index 96ecbab5e35..2f54de2dc25 100644 --- a/bazel_common/score_modules_target_sw.MODULE.bazel +++ b/bazel_common/score_modules_target_sw.MODULE.bazel @@ -94,3 +94,14 @@ git_override( ], remote = "https://github.com/eclipse-score/time.git", ) + +bazel_dep(name = "score_config_management") +git_override( + module_name = "score_config_management", + commit = "b22ca9bd222b99985be4339187c639d6862051a0", + patch_strip = 1, + patches = [ + "patches/config_management/001-fix-communication-api-and-remove-targets.patch", + ], + remote = "https://github.com/eclipse-score/config_management.git", +) diff --git a/known_good.json b/known_good.json index 8e671f5c393..865e8a99a27 100644 --- a/known_good.json +++ b/known_good.json @@ -135,6 +135,29 @@ "cpp" ] } + }, + "score_config_management": { + "repo": "https://github.com/eclipse-score/config_management.git", + "hash": "b22ca9bd222b99985be4339187c639d6862051a0", + "bazel_patches": [ + "patches/config_management/001-fix-communication-api-and-remove-targets.patch" + ], + "metadata": { + "code_root_path": "//score/config_management/...", + "extra_test_config": [ + "@score_config_management//score/config_management/config_daemon/code:score_variant=true" + ], + "exclude_test_targets": [ + "//score/config_management/config_daemon/code/factory/details:unit_test_mw_com", + "//score/config_management/config_daemon/code/services/details/mw_com:unit_test", + "//score/config_management/config_provider/code/config_provider/factory:unit_tests_mw_com", + "//score/config_management/config_provider/code/proxies/details:unit_test_mw", + "//score/config_management/dependability/..." + ], + "langs": [ + "cpp" + ] + } } }, "tooling": { diff --git a/patches/config_management/001-fix-communication-api-and-remove-targets.patch b/patches/config_management/001-fix-communication-api-and-remove-targets.patch new file mode 100644 index 00000000000..e0107b3e938 --- /dev/null +++ b/patches/config_management/001-fix-communication-api-and-remove-targets.patch @@ -0,0 +1,159 @@ +diff --git a/score/config_management/config_provider/BUILD b/score/config_management/config_provider/BUILD +index e0d763b..0dd66b9 100644 +--- a/score/config_management/config_provider/BUILD ++++ b/score/config_management/config_provider/BUILD +@@ -14,13 +14,6 @@ alias( + visibility = ["//visibility:public"], + ) + +-cc_library( +- name = "config_provider_factory_impl", +- tags = ["FUSA"], +- visibility = ["//visibility:public"], +- deps = ["//score/config_management/config_provider/code/config_provider/factory:factory_socal_r20_11"], +-) +- + cc_library( + name = "config_provider_mw_com", + tags = ["FUSA"], +@@ -28,12 +21,6 @@ cc_library( + deps = ["//score/config_management/config_provider/code/config_provider/factory:factory_mw_com"], + ) + +-alias( +- name = "config_provider_factory_for_unit_test", +- actual = "//score/config_management/config_provider/code/config_provider/factory:factory_socal_r20_11_for_unit_tests", +- visibility = ["//visibility:public"], +-) +- + cc_unit_test_suites_for_host_and_qnx( + name = "unit_tests", + test_suites_from_sub_packages = [ +@@ -45,14 +32,6 @@ cc_unit_test_suites_for_host_and_qnx( + visibility = ["//score/config_management:__pkg__"], + ) + +-test_suite( +- name = "component_tests", +- tests = [ +- "//score/config_management/config_provider/test/sct:component_tests", +- ], +- visibility = ["//score/config_management:__pkg__"], +-) +- + clang_tidy_extra_checks( + name = "clang_tidy_extra_checks", + extra_features = [ +diff --git a/score/config_management/config_provider/code/config_provider/details/config_provider_impl.cpp b/score/config_management/config_provider/code/config_provider/details/config_provider_impl.cpp +index 6784355..c6f05ea 100644 +--- a/score/config_management/config_provider/code/config_provider/details/config_provider_impl.cpp ++++ b/score/config_management/config_provider/code/config_provider/details/config_provider_impl.cpp +@@ -46,7 +46,7 @@ std::string GetParameterSetValue(mw::log::Logger& logger, const ParameterSet& pa + } // namespace + + ConfigProviderImpl::ConfigProviderImpl( +- mw::service::OptionalProxyData proxy_data, ++ mw::service::ProxyFuture> proxy_future, + score::cpp::stop_token user_stop_token, + score::cpp::pmr::memory_resource* const memory_resource, + score::cpp::optional max_samples_limit, +@@ -78,22 +78,23 @@ ConfigProviderImpl::ConfigProviderImpl( + score::cpp::ignore = proxy_available_thread_.emplace( + [this](const score::cpp::stop_token jthread_stop_token, + decltype(callback) notification_callback, +- decltype(proxy_data) pd) mutable { +- auto proxy_holder = pd.GetProxyFuture().Get(jthread_stop_token); +- pd.StopServiceDiscovery(); +- if (proxy_holder.has_value()) ++ decltype(proxy_future) pf) mutable { ++ auto proxy_holder = pf.Get(jthread_stop_token); ++ if (proxy_holder.has_value() && (proxy_holder.value() != nullptr)) + { + logger_.LogInfo() << "ProxyAvailableThread: InternalConfigProvider proxy is connected"; + SetupInternalConfigProvider( +- std::move(proxy_holder).value(), std::move(notification_callback), jthread_stop_token); ++ std::shared_ptr(std::move(proxy_holder).value()), ++ std::move(notification_callback), ++ jthread_stop_token); + } + else + { +- logger_.LogInfo() << "ProxyAvailableThread: No proxy found: " << proxy_holder.error().Message(); ++ logger_.LogInfo() << "ProxyAvailableThread: No proxy found"; + } + }, + std::move(callback), +- std::move(proxy_data)); ++ std::move(proxy_future)); + + score::cpp::ignore = stop_callback_.emplace(user_stop_token, [this]() { + score::cpp::ignore = proxy_available_thread_->request_stop(); +diff --git a/score/config_management/config_provider/code/config_provider/details/config_provider_impl.h b/score/config_management/config_provider/code/config_provider/details/config_provider_impl.h +index 508555c..7630e60 100644 +--- a/score/config_management/config_provider/code/config_provider/details/config_provider_impl.h ++++ b/score/config_management/config_provider/code/config_provider/details/config_provider_impl.h +@@ -24,6 +24,7 @@ + + #include "score/concurrency/condition_variable.h" + #include "score/mw/service/proxy_data.h" ++#include "score/mw/service/proxy_future.h" + + #include + #include +@@ -87,7 +88,7 @@ class ConfigProviderImpl final : public ConfigProvider + bool IsAwaitingProxyConnection() const noexcept; + + ConfigProviderImpl( +- mw::service::OptionalProxyData proxy_data, ++ mw::service::ProxyFuture> proxy_future, + score::cpp::stop_token user_stop_token, + score::cpp::pmr::memory_resource* const memory_resource, + score::cpp::optional max_samples_limit, +diff --git a/score/config_management/config_provider/code/config_provider/details/config_provider_impl_test.cpp b/score/config_management/config_provider/code/config_provider/details/config_provider_impl_test.cpp +index 8bd5f2f..ed559ea 100644 +--- a/score/config_management/config_provider/code/config_provider/details/config_provider_impl_test.cpp ++++ b/score/config_management/config_provider/code/config_provider/details/config_provider_impl_test.cpp +@@ -182,7 +182,7 @@ class ConfigProviderTest : public ::testing::Test + auto CreateConfigProviderWithAvailableCallback(IsAvailableNotificationCallback callback) + { + return std::make_unique( +- mw::service::OptionalProxyData{promise_.GetInterruptibleFuture().value()}, ++ promise_.GetInterruptibleFuture().value(), + stop_source_.get_token(), + score::cpp::pmr::get_default_resource(), + score::cpp::nullopt, // default max_samples_limit +@@ -196,7 +196,7 @@ class ConfigProviderTest : public ::testing::Test + IsAvailableNotificationCallback callback) + { + return std::make_unique( +- mw::service::OptionalProxyData{promise_.GetInterruptibleFuture().value()}, ++ promise_.GetInterruptibleFuture().value(), + stop_source_.get_token(), + score::cpp::pmr::get_default_resource(), + score::cpp::nullopt, +diff --git a/score/config_management/config_provider/code/config_provider/factory/factory_mw_com.h b/score/config_management/config_provider/code/config_provider/factory/factory_mw_com.h +index 5aeca26..123868b 100644 +--- a/score/config_management/config_provider/code/config_provider/factory/factory_mw_com.h ++++ b/score/config_management/config_provider/code/config_provider/factory/factory_mw_com.h +@@ -182,7 +182,8 @@ class ConfigProviderFactory final + logger_.LogDebug() << "ConfigProviderFactory:: Create ConfigProviderImpl"; + auto config_provider = score::cpp::pmr::make_unique( + memory_resource, +- proxy_container.template Extract>(), ++ static_cast>>( ++ proxy_container.template Extract>()), + token, + memory_resource, + max_samples_limit, +diff --git a/score/config_management/config_daemon/code/app/details/BUILD b/score/config_management/config_daemon/code/app/details/BUILD +index 63e9161..db9b630 100644 +--- a/score/config_management/config_daemon/code/app/details/BUILD ++++ b/score/config_management/config_daemon/code/app/details/BUILD +@@ -52,6 +52,7 @@ cc_library( + "//score/config_management/config_daemon/code/factory:interface_for_unit_test", + "//score/config_management/config_daemon/code/fault_event_reporter", + "@score_baselibs//score/scope_exit", ++ "@score_lifecycle_health//score/launch_manager:application_cc", + "@score_lifecycle_health//score/launch_manager:applicationcontext_mock_cc", + "@score_logging//score/mw/log", + ], diff --git a/patches/config_management/BUILD b/patches/config_management/BUILD new file mode 100644 index 00000000000..e69de29bb2d From 6d75cbdc893ba998850aa30bfcd2b9fd40a6a05a Mon Sep 17 00:00:00 2001 From: qxz6ezp Date: Mon, 10 Aug 2026 15:31:28 +0530 Subject: [PATCH 2/4] ci: re-trigger CI From ddbf6517474da57560e62b63a2d22fcb002ee0c5 Mon Sep 17 00:00:00 2001 From: qxz6ezp Date: Mon, 10 Aug 2026 15:39:33 +0530 Subject: [PATCH 3/4] ci: re-trigger CI --- bazel_common/score_modules_target_sw.MODULE.bazel | 2 +- known_good.json | 2 +- ...ch => 001-adapt-proxy-api-and-remove-internal-targets.patch} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename patches/config_management/{001-fix-communication-api-and-remove-targets.patch => 001-adapt-proxy-api-and-remove-internal-targets.patch} (100%) diff --git a/bazel_common/score_modules_target_sw.MODULE.bazel b/bazel_common/score_modules_target_sw.MODULE.bazel index 2f54de2dc25..ebb4b2bb52b 100644 --- a/bazel_common/score_modules_target_sw.MODULE.bazel +++ b/bazel_common/score_modules_target_sw.MODULE.bazel @@ -101,7 +101,7 @@ git_override( commit = "b22ca9bd222b99985be4339187c639d6862051a0", patch_strip = 1, patches = [ - "patches/config_management/001-fix-communication-api-and-remove-targets.patch", + "patches/config_management/001-adapt-proxy-api-and-remove-internal-targets.patch", ], remote = "https://github.com/eclipse-score/config_management.git", ) diff --git a/known_good.json b/known_good.json index 865e8a99a27..cde411dcb81 100644 --- a/known_good.json +++ b/known_good.json @@ -140,7 +140,7 @@ "repo": "https://github.com/eclipse-score/config_management.git", "hash": "b22ca9bd222b99985be4339187c639d6862051a0", "bazel_patches": [ - "patches/config_management/001-fix-communication-api-and-remove-targets.patch" + "patches/config_management/001-adapt-proxy-api-and-remove-internal-targets.patch" ], "metadata": { "code_root_path": "//score/config_management/...", diff --git a/patches/config_management/001-fix-communication-api-and-remove-targets.patch b/patches/config_management/001-adapt-proxy-api-and-remove-internal-targets.patch similarity index 100% rename from patches/config_management/001-fix-communication-api-and-remove-targets.patch rename to patches/config_management/001-adapt-proxy-api-and-remove-internal-targets.patch From cf3520b497849e986d933f667a05b58df5d453d0 Mon Sep 17 00:00:00 2001 From: qxz6ezp Date: Tue, 11 Aug 2026 13:37:02 +0530 Subject: [PATCH 4/4] feat: add config_management showcase --- .bazelrc | 1 + bazel_common/score_modules_target_sw.MODULE.bazel | 2 +- known_good.json | 2 +- ...pt-proxy-api-and-remove-internal-targets.patch | 12 ++++++++++++ showcases/BUILD | 1 + showcases/standalone/BUILD | 15 +++++++++++++++ showcases/standalone/config_management.score.json | 14 ++++++++++++++ 7 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 showcases/standalone/config_management.score.json diff --git a/.bazelrc b/.bazelrc index 38064c481c0..f00a26c8437 100644 --- a/.bazelrc +++ b/.bazelrc @@ -23,6 +23,7 @@ build --tool_java_runtime_version=remotejdk_17 build:_common --@score_baselibs//score/json:base_library=nlohmann build:_common --@score_communication//score/memory/shared/flags:use_typedshmd=False build:_common --@score_baselibs//score/log_rust:safety_level=qm +build:_common --@score_config_management//score/config_management/config_daemon/code:score_variant=true build:_common --@score_baselibs//score/analysis/tracing/generic_trace_library:implementation=@score_baselibs//score/analysis/tracing/generic_trace_library/stub_implementation build:_common --cxxopt=-Wno-error=mismatched-new-delete build:_common --host_platform=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-posix diff --git a/bazel_common/score_modules_target_sw.MODULE.bazel b/bazel_common/score_modules_target_sw.MODULE.bazel index ebb4b2bb52b..cb0bd52644d 100644 --- a/bazel_common/score_modules_target_sw.MODULE.bazel +++ b/bazel_common/score_modules_target_sw.MODULE.bazel @@ -98,7 +98,7 @@ git_override( bazel_dep(name = "score_config_management") git_override( module_name = "score_config_management", - commit = "b22ca9bd222b99985be4339187c639d6862051a0", + commit = "952461ceffff774fb4c125ee023fea0221fcdce2", patch_strip = 1, patches = [ "patches/config_management/001-adapt-proxy-api-and-remove-internal-targets.patch", diff --git a/known_good.json b/known_good.json index cde411dcb81..0a661f3b227 100644 --- a/known_good.json +++ b/known_good.json @@ -138,7 +138,7 @@ }, "score_config_management": { "repo": "https://github.com/eclipse-score/config_management.git", - "hash": "b22ca9bd222b99985be4339187c639d6862051a0", + "hash": "952461ceffff774fb4c125ee023fea0221fcdce2", "bazel_patches": [ "patches/config_management/001-adapt-proxy-api-and-remove-internal-targets.patch" ], diff --git a/patches/config_management/001-adapt-proxy-api-and-remove-internal-targets.patch b/patches/config_management/001-adapt-proxy-api-and-remove-internal-targets.patch index e0107b3e938..9baed89317a 100644 --- a/patches/config_management/001-adapt-proxy-api-and-remove-internal-targets.patch +++ b/patches/config_management/001-adapt-proxy-api-and-remove-internal-targets.patch @@ -157,3 +157,15 @@ index 63e9161..db9b630 100644 "@score_lifecycle_health//score/launch_manager:applicationcontext_mock_cc", "@score_logging//score/mw/log", ], +diff --git a/score/config_management/config_daemon/code/BUILD b/score/config_management/config_daemon/code/BUILD +index b9a1469..7fdb370 100644 +--- a/score/config_management/config_daemon/code/BUILD ++++ b/score/config_management/config_daemon/code/BUILD +@@ -76,6 +76,7 @@ cc_binary( + deps = [ + "//score/config_management/config_daemon/code/app/details:app", + "//score/config_management/config_daemon/code/factory/details:mw_factory", ++ "@score_lifecycle_health//score/launch_manager:lifecyclemanager_cc", + "@score_lifecycle_health//score/launch_manager:runapplication_cc", + ], + ) diff --git a/showcases/BUILD b/showcases/BUILD index 84f6f32440a..609a3c9a6a3 100644 --- a/showcases/BUILD +++ b/showcases/BUILD @@ -20,6 +20,7 @@ score_pkg_bundle( "//showcases/standalone:kyron_pkg_files", "//showcases/standalone:time_pkg_files", "//showcases/standalone:logging_pkg_files", + "//showcases/standalone:config_management_pkg_files", "//showcases/orchestration_persistency:orch_per_pkg_files", "//showcases/simple_lifecycle:simple_lifecycle_pkg_files", ], diff --git a/showcases/standalone/BUILD b/showcases/standalone/BUILD index a4ec4071075..0bb5b946e8d 100644 --- a/showcases/standalone/BUILD +++ b/showcases/standalone/BUILD @@ -66,3 +66,18 @@ score_pkg_bundle( }, package_dir = "standalone", ) + +score_pkg_bundle( + name = "config_management", + bins = [ + "@score_config_management//score/config_management/config_daemon/code:config_daemon", + ], + config_data = [ + "//showcases/standalone:config_management.score.json", + ], + custom_layout = { + "@score_config_management//score/config_management/config_daemon/code/services/details/mw_com:mw_com_config": "etc/mw_com_config.json", + "@score_config_management//score/config_management/config_daemon/code/plugins/demo_json:demo_parameters": "etc/demo_parameters.json", + }, + package_dir = "standalone", +) diff --git a/showcases/standalone/config_management.score.json b/showcases/standalone/config_management.score.json new file mode 100644 index 00000000000..106b21a6a7a --- /dev/null +++ b/showcases/standalone/config_management.score.json @@ -0,0 +1,14 @@ +{ + "name": "Config Management Daemon Example", + "description": "Example for running the config management daemon with demo parameters", + "apps": [ + { + "path": "/showcases/bin/config_daemon", + "args": [ + "-s", "/showcases/data/config_management/etc/mw_com_config.json" + ], + "env": {}, + "dir": "/showcases/data/config_management" + } + ] +}