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"