sdbusplus: Update patches for GCC 15

Update asio eventfd patch and add pyproject license fix patch for
python3-sdbus++ under GCC 15 / setuptools.

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: I64c9a1ddddfd41ecd6bcbb1676183624bc8ded73
Signed-off-by: Willy Tu <wltu@google.com>
diff --git a/recipes-extended/sdbusplus/python3-sdbus++_%.bbappend b/recipes-extended/sdbusplus/python3-sdbus++_%.bbappend
new file mode 100644
index 0000000..d5b05f3
--- /dev/null
+++ b/recipes-extended/sdbusplus/python3-sdbus++_%.bbappend
@@ -0,0 +1,3 @@
+FILESEXTRAPATHS:prepend:gbmc := "${THISDIR}/sdbusplus:"
+
+SRC_URI:append:gbmc = " file://0001-python3-sdbus-Fix-pyproject-license.patch"
diff --git a/recipes-extended/sdbusplus/sdbusplus/0001-asio-Leverage-sd-bus-rqueue-eventfd.patch b/recipes-extended/sdbusplus/sdbusplus/0001-asio-Leverage-sd-bus-rqueue-eventfd.patch
index a12a96b..9e946a6 100644
--- a/recipes-extended/sdbusplus/sdbusplus/0001-asio-Leverage-sd-bus-rqueue-eventfd.patch
+++ b/recipes-extended/sdbusplus/sdbusplus/0001-asio-Leverage-sd-bus-rqueue-eventfd.patch
@@ -1,4 +1,4 @@
-From 18a4b95dcef9433aadfd976315694d6ee397859f Mon Sep 17 00:00:00 2001
+From 506f81eaf7113107fe2c6cabca761c2c15b956fc Mon Sep 17 00:00:00 2001
 From: "William A. Kennington III" <wak@google.com>
 Date: Wed, 20 Aug 2025 11:08:31 -0700
 Subject: [PATCH] asio: Leverage sd-bus rqueue eventfd
@@ -7,38 +7,39 @@
 Signed-off-by: William A. Kennington III <wak@google.com>
 Signed-off-by: Willy Tu <wltu@google.com>
 ---
- include/sdbusplus/asio/connection.hpp | 40 +++++++++++++++++++++++++--
+ include/sdbusplus/asio/connection.hpp | 37 +++++++++++++++++++++++++--
  include/sdbusplus/bus.hpp             |  4 +++
- include/sdbusplus/sdbus.hpp           |  6 ++++
+ include/sdbusplus/sdbus.hpp           |  6 +++++
  include/sdbusplus/test/sdbus_mock.hpp |  1 +
- 4 files changed, 48 insertions(+), 3 deletions(-)
+ 4 files changed, 46 insertions(+), 2 deletions(-)
 
 diff --git a/include/sdbusplus/asio/connection.hpp b/include/sdbusplus/asio/connection.hpp
-index 841c6d7..b5021c1 100644
+index 8958cdf..9a49344 100644
 --- a/include/sdbusplus/asio/connection.hpp
 +++ b/include/sdbusplus/asio/connection.hpp
-@@ -54,14 +54,18 @@ class connection : public sdbusplus::bus_t
-     // default to system bus
-     connection(boost::asio::io_context& io) :
-         sdbusplus::bus_t(sdbusplus::bus::new_default()), io_(io),
--        socket(io_.get_executor(), get_fd())
+@@ -59,15 +59,20 @@ class connection : public sdbusplus::bus_t
+         boost::asio::io_context& io,
+         sdbusplus::bus_t&& bus = sdbusplus::bus::new_default()) :
+         sdbusplus::bus_t(std::move(bus)), io_(io),
+-        socket(io_.get_executor(), get_fd()), timer(io_.get_executor())
 +        socket(io_.get_executor(), get_fd()),
-+        queue_eventfd(io.get_executor(), get_rqueue_eventfd())
++        queue_eventfd(io.get_executor(), get_rqueue_eventfd()),
++        timer(io_.get_executor())
      {
          read_immediate();
 +        queue_wait();
      }
      connection(boost::asio::io_context& io, sd_bus* bus) :
--        sdbusplus::bus_t(bus), io_(io), socket(io_.get_executor(), get_fd())
-+        sdbusplus::bus_t(bus), io_(io), socket(io_.get_executor(), get_fd()),
-+        queue_eventfd(io.get_executor(), get_rqueue_eventfd())
+         sdbusplus::bus_t(bus), io_(io), socket(io_.get_executor(), get_fd()),
++        queue_eventfd(io.get_executor(), get_rqueue_eventfd()),
+         timer(io_.get_executor())
      {
          read_immediate();
 +        queue_wait();
      }
      ~connection()
      {
-@@ -69,6 +73,7 @@ class connection : public sdbusplus::bus_t
+@@ -75,6 +80,7 @@ class connection : public sdbusplus::bus_t
          // sd_bus object to avoid a double close()  Ignore return codes here,
          // because there's nothing we can do about errors
          socket.release();
@@ -46,18 +47,18 @@
      }
  
      /** @brief Perform an asynchronous send of a message, executing the handler
-@@ -313,7 +318,7 @@ class connection : public sdbusplus::bus_t
+@@ -297,7 +303,7 @@ class connection : public sdbusplus::bus_t
  
    private:
      boost::asio::io_context& io_;
 -    boost::asio::posix::stream_descriptor socket;
 +    boost::asio::posix::stream_descriptor socket, queue_eventfd;
+     boost::asio::steady_timer timer;
  
-     void read_wait()
+     void process()
+@@ -403,6 +409,33 @@ class connection : public sdbusplus::bus_t
      {
-@@ -347,6 +352,35 @@ class connection : public sdbusplus::bus_t
-             }
-         });
+         boost::asio::post(io_, std::bind_front(&connection::process, this));
      }
 +    void proc_queue_next()
 +    {
@@ -75,27 +76,25 @@
 +        queue_eventfd.async_read_some(
 +            boost::asio::null_buffers(),
 +            [&](const boost::system::error_code& ec, std::size_t) {
-+            if (ec)
-+            {
-+                return;
-+            }
-+            proc_queue_next();
-+        });
++                if (ec)
++                {
++                    return;
++                }
++                proc_queue_next();
++            });
 +    }
 +    void queue_immediate()
 +    {
-+        boost::asio::post(io_, [&] {
-+            proc_queue_next();
-+        });
++        boost::asio::post(io_, [&] { proc_queue_next(); });
 +    }
  };
  
  } // namespace asio
 diff --git a/include/sdbusplus/bus.hpp b/include/sdbusplus/bus.hpp
-index 7e834c0..6a8f905 100644
+index 836b2f8..8dc453a 100644
 --- a/include/sdbusplus/bus.hpp
 +++ b/include/sdbusplus/bus.hpp
-@@ -412,6 +412,10 @@ struct bus
+@@ -417,6 +417,10 @@ struct bus_t
      {
          return _intf->sd_bus_get_fd(_bus.get());
      }
@@ -104,22 +103,22 @@
 +        return _intf->sd_bus_get_rqueue_eventfd(_bus.get());
 +    }
  
-     /** @brief Attach the bus with a sd-event event loop object.
-      *
+     auto get_events()
+     {
 diff --git a/include/sdbusplus/sdbus.hpp b/include/sdbusplus/sdbus.hpp
-index 9022f1c..1c6ed03 100644
+index fef7d21..26e7a15 100644
 --- a/include/sdbusplus/sdbus.hpp
 +++ b/include/sdbusplus/sdbus.hpp
-@@ -69,6 +69,7 @@ class SdBusInterface
- 
-     virtual sd_event* sd_bus_get_event(sd_bus* bus) = 0;
-     virtual int sd_bus_get_fd(sd_bus* bus) = 0;
-+    virtual int sd_bus_get_rqueue_eventfd(sd_bus* bus) = 0;
+@@ -68,6 +68,7 @@ class SdBusInterface
+     virtual int sd_bus_get_events(sd_bus* bus) = 0;
+     virtual int sd_bus_get_timeout(sd_bus* bus, uint64_t* timeout_usec) = 0;
      virtual int sd_bus_get_unique_name(sd_bus* bus, const char** unique) = 0;
++    virtual int sd_bus_get_rqueue_eventfd(sd_bus* bus) = 0;
  
      virtual int sd_bus_list_names(sd_bus* bus, char*** acquired,
-@@ -315,6 +316,11 @@ class SdBusImpl : public SdBusInterface
-         return ::sd_bus_get_fd(bus);
+                                   char*** activatable) = 0;
+@@ -329,6 +330,11 @@ class SdBusImpl : public SdBusInterface
+         return ::sd_bus_get_timeout(bus, timeout_usec);
      }
  
 +    int sd_bus_get_rqueue_eventfd(sd_bus* bus) override
@@ -131,17 +130,17 @@
      {
          return ::sd_bus_get_unique_name(bus, unique);
 diff --git a/include/sdbusplus/test/sdbus_mock.hpp b/include/sdbusplus/test/sdbus_mock.hpp
-index 6e1a1a3..fa517c6 100644
+index 704424e..69b628e 100644
 --- a/include/sdbusplus/test/sdbus_mock.hpp
 +++ b/include/sdbusplus/test/sdbus_mock.hpp
-@@ -59,6 +59,7 @@ class SdBusMock : public SdBusInterface
- 
-     MOCK_METHOD(sd_event*, sd_bus_get_event, (sd_bus*), (override));
-     MOCK_METHOD(int, sd_bus_get_fd, (sd_bus*), (override));
-+    MOCK_METHOD(int, sd_bus_get_rqueue_eventfd, (sd_bus*), (override));
+@@ -66,6 +66,7 @@ class SdBusMock : public SdBusInterface
+                 (override));
      MOCK_METHOD(int, sd_bus_get_unique_name, (sd_bus*, const char**),
                  (override));
++    MOCK_METHOD(int, sd_bus_get_rqueue_eventfd, (sd_bus*), (override));
  
+     MOCK_METHOD(int, sd_bus_list_names, (sd_bus*, char***, char***),
+                 (override));
 -- 
-2.51.0.261.g7ce5a0a67e-goog
+2.55.0.737.g08866a6d13-goog
 
diff --git a/recipes-extended/sdbusplus/sdbusplus/0001-python3-sdbus-Fix-pyproject-license.patch b/recipes-extended/sdbusplus/sdbusplus/0001-python3-sdbus-Fix-pyproject-license.patch
new file mode 100644
index 0000000..3894c69
--- /dev/null
+++ b/recipes-extended/sdbusplus/sdbusplus/0001-python3-sdbus-Fix-pyproject-license.patch
@@ -0,0 +1,27 @@
+From e08ca5ff81ed4722319172a9bb30ca23daf318c9 Mon Sep 17 00:00:00 2001
+From: Willy Tu <wltu@google.com>
+Date: Thu, 5 Feb 2026 09:18:30 +0000
+Subject: [PATCH] python3-sdbus++: Fix pyproject license
+
+Change-Id: I80a8b1f1e3cdbef6a55952eb1f60cd86820f2a94
+Signed-off-by: Willy Tu <wltu@google.com>
+---
+ tools/pyproject.toml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/pyproject.toml b/tools/pyproject.toml
+index b87bd65..410b29f 100644
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
+ [project]
+ name = "sdbusplus"
+ version = "1.0"
+-license = "Apache-2.0"
++license = {text = "Apache-2.0"}
+ urls = { Homepage = "http://github.com/openbmc/sdbusplus" }
+ dependencies = ["inflection", "mako", "pyyaml"]
+ 
+-- 
+2.53.0.rc2.204.g2597b5adb4-goog
+