pldmd-file-transfer: Fix inline_scheduler Add patch to fix stdexec::inline_scheduler compatibility under C++23. This patch will be dropped when the source revision is bumped. Tested: Verified build with GCC 15 and C++23 across gBMC platforms. - platform11: http://fusion2/3ff2006d-9c03-3f0c-99fd-bcefc6aaca1f - platform11: http://fusion2/982d88b5-28f9-38ef-a3a2-d824b919c13c - platform5: http://fusion2/a7e89bcd-86a0-33b2-8f33-2bb24ef3afb5 - platform15: http://fusion2/e56dcb19-6dcd-35a0-b5ee-30740fbf27df - platform17: http://fusion2/d0e6af61-eb95-3a70-a6a3-d1bdab987ea2 - platform18: http://fusion2/cda6ba3a-58f5-3907-b584-04786b9fe634 - platform25: http://fusion2/714cc620-6f0a-3bfd-90dd-95356b62b54b Google-Bug-Id: 482144905 Change-Id: If89ccec4b44a8ab41b9106a15d1d40d49f8ae52e Signed-off-by: Willy Tu <wltu@google.com>
diff --git a/recipes-google/pldmd/pldmd-file-transfer/0001-use-stdexec-inline_scheduler.patch b/recipes-google/pldmd/pldmd-file-transfer/0001-use-stdexec-inline_scheduler.patch new file mode 100644 index 0000000..ce0c33b --- /dev/null +++ b/recipes-google/pldmd/pldmd-file-transfer/0001-use-stdexec-inline_scheduler.patch
@@ -0,0 +1,76 @@ +From 2f8f60bb243821a8c2b4eb0f1b26e819d491cca5 Mon Sep 17 00:00:00 2001 +From: Willy Tu <wltu@google.com> +Date: Wed, 6 May 2026 03:25:59 +0000 +Subject: [PATCH] use stdexec::inline_scheduler + +Use NVIDIA/stdexec as we need to update sdbusplus which depends on that. + +Google-Bug-Id: 482144905 +Change-Id: Id851b147dd6c1313c8145bcb5112a701a8e99e9a +Signed-off-by: Willy Tu <wltu@google.com> +--- + platform-mc/sensor_manager.cpp | 2 +- + platform-mc/terminus_manager.cpp | 2 +- + requester/test/handler_test.cpp | 6 +++--- + 3 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/platform-mc/sensor_manager.cpp b/platform-mc/sensor_manager.cpp +index 1cd4826..6a1994d 100644 +--- a/platform-mc/sensor_manager.cpp ++++ b/platform-mc/sensor_manager.cpp +@@ -155,7 +155,7 @@ void SensorManager::doSensorPolling(pldm_tid_t tid) + rcOpt = PLDM_SUCCESS; + } + }), +- exec::default_task_context<void>(exec::inline_scheduler{})); ++ exec::default_task_context<void>(stdexec::inline_scheduler{})); + } + + exec::task<int> SensorManager::doSensorPollingTask(pldm_tid_t tid) +diff --git a/platform-mc/terminus_manager.cpp b/platform-mc/terminus_manager.cpp +index 0de6ce9..3540a70 100644 +--- a/platform-mc/terminus_manager.cpp ++++ b/platform-mc/terminus_manager.cpp +@@ -164,7 +164,7 @@ void TerminusManager::discoverMctpTerminus(const MctpInfos& mctpInfos) + auto& [scope, rcOpt] = discoverMctpTerminusTaskHandle.emplace(); + scope.spawn(discoverMctpTerminusTask() | + stdexec::then([&](int rc) { rcOpt.emplace(rc); }), +- exec::default_task_context<void>(exec::inline_scheduler{})); ++ exec::default_task_context<void>(stdexec::inline_scheduler{})); + } + + TerminiMapper::iterator TerminusManager::findTerminusPtr( +diff --git a/requester/test/handler_test.cpp b/requester/test/handler_test.cpp +index caa4663..a3c06e5 100644 +--- a/requester/test/handler_test.cpp ++++ b/requester/test/handler_test.cpp +@@ -197,7 +197,7 @@ TEST_F(HandlerTest, singleRequestResponseScenarioUsingCoroutine) + + EXPECT_EQ(validResponse, true); + }), +- exec::default_task_context<void>(exec::inline_scheduler{})); ++ exec::default_task_context<void>(stdexec::inline_scheduler{})); + + pldm::Response mockResponse(sizeof(pldm_msg_hdr) + sizeof(uint8_t), 0); + auto mockResponsePtr = +@@ -231,7 +231,7 @@ TEST_F(HandlerTest, singleRequestCancellationScenarioUsingCoroutine) + + EXPECT_TRUE(false); // unreachable + }) | stdexec::upon_stopped([&] { stopped = true; }), +- exec::default_task_context<void>(exec::inline_scheduler{})); ++ exec::default_task_context<void>(stdexec::inline_scheduler{})); + + scope.request_stop(); + +@@ -285,7 +285,7 @@ TEST_F(HandlerTest, asyncRequestResponseByCoroutine) + + EXPECT_EQ(expectedTid, respTid); + }), +- exec::default_task_context<void>(exec::inline_scheduler{})); ++ exec::default_task_context<void>(stdexec::inline_scheduler{})); + + pldm::Response mockResponse(sizeof(pldm_msg_hdr) + PLDM_GET_TID_RESP_BYTES, + 0); +-- +2.55.0.766.g2966f0265a-goog +
diff --git a/recipes-google/pldmd/pldmd-file-transfer_git.bb b/recipes-google/pldmd/pldmd-file-transfer_git.bb index 527b602..b4f5d68 100644 --- a/recipes-google/pldmd/pldmd-file-transfer_git.bb +++ b/recipes-google/pldmd/pldmd-file-transfer_git.bb
@@ -9,8 +9,12 @@ inherit meson pkgconfig systemd S = "${WORKDIR}/git" +# TODO(b/482144905): We need to update the CI and submit this patch +# https://gbmc-review.googlesource.com/c/pldm/+/107844. Have a patch to get the bitbake build +# working first. SRC_URI = "git://gbmc.googlesource.com/pldm;protocol=https;branch=file-transfer \ file://service-override.conf \ + file://0001-use-stdexec-inline_scheduler.patch \ " SRCREV = "7b75e716740bf30524fe6655d2803429f9838767"