Bug#1140897: plasma-discover: Rebuild bookworm plasma-discover against newer fwupd 2.0.20

Mario Limonciello <[email protected]>
Newsgroups gmane.linux.debian.devel.qt-kde
Message-ID <178262288252.2201954.13043152512480855569.reportbug__32060.2361856558$1782623018$gmane$org@kingboo>
Source: plasma-discover
Severity: important
Tags: patch

Due to changes in the secure boot summarized in https://wiki.debian.org/SecureBoot/CAChanges)
there needs to be an upgrade to a newer fwupd version in bookworm to allow updating the trust
chain.

This work is tracked by release team in the bookworm-pu bug:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1139252

Unfortunately; upgrading to the newer fwupd version requires an ABI bump which means some minor
patches for the ABI change and rebuilding against the newer libfwupd.

I've validated this works properly, and I would like permission to send up a NMU coordinating
with the updated fwupd.  The proposed debdiff is attached to the release team bug.
plasma-discover.debdiff (text/plain, 8.2 KB)
diff -Nru plasma-discover-5.27.5/debian/changelog plasma-discover-5.27.5/debian/changelog
--- plasma-discover-5.27.5/debian/changelog	2023-05-27 11:23:42.000000000 -0500
+++ plasma-discover-5.27.5/debian/changelog	2026-06-27 13:29:28.000000000 -0500
@@ -1,3 +1,11 @@
+plasma-discover (5.27.5-2+deb12u1) bookworm; urgency=medium
+
+  * Backport patch for fwupd 2.0 compat
+  * d/control:
+    - b-d on newer libfwupd
+
+ -- Mario Limonciello <[email protected]>  Sat, 27 Jun 2026 13:29:28 -0500
+
 plasma-discover (5.27.5-2) unstable; urgency=medium
 
   * Release to unstable.
diff -Nru plasma-discover-5.27.5/debian/control plasma-discover-5.27.5/debian/control
--- plasma-discover-5.27.5/debian/control	2023-05-14 17:24:52.000000000 -0500
+++ plasma-discover-5.27.5/debian/control	2026-06-27 13:29:28.000000000 -0500
@@ -16,7 +16,7 @@
                libcurl4-gnutls-dev,
                libdebconf-kde-dev (>= 1.0.0),
                libflatpak-dev (>= 0.11.8~) [linux-any],
-               libfwupd-dev (>= 1.5.0~) [linux-any],
+               libfwupd-dev (>= 2.0.20) [linux-any],
                libkf5archive-dev (>= 5.102.0~),
                libkf5attica-dev (>= 5.23~),
                libkf5config-dev (>= 5.102.0~),
diff -Nru plasma-discover-5.27.5/debian/patches/fwupd-2.0-compatibility-fixes plasma-discover-5.27.5/debian/patches/fwupd-2.0-compatibility-fixes
--- plasma-discover-5.27.5/debian/patches/fwupd-2.0-compatibility-fixes	1969-12-31 18:00:00.000000000 -0600
+++ plasma-discover-5.27.5/debian/patches/fwupd-2.0-compatibility-fixes	2026-06-27 13:29:28.000000000 -0500
@@ -0,0 +1,137 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Mario Limonciello <[email protected]>
+Date: Sat, 27 Jun 2026 19:03 -0500
+Subject: [PATCH] Fix compilation against fwupd 2.0 API
+
+
+---
+Fix fwupd 2.0 API compatibility
+--- a/libdiscover/backends/FwupdBackend/FwupdBackend.cpp
++++ b/libdiscover/backends/FwupdBackend/FwupdBackend.cpp
+@@ -198,7 +198,8 @@
+         return nullptr;
+     }
+ 
+-    const QUrl update_uri(QString::fromUtf8(fwupd_release_get_uri(release)));
++    GPtrArray *locations = fwupd_release_get_locations(release);
++    const QUrl update_uri(locations && locations->len > 0 ? QString::fromUtf8((const gchar *)g_ptr_array_index(locations, 0)) : QString());
+     if (!update_uri.isValid()) {
+         qWarning() << "Fwupd Error: No Update URI available for" << app->name() << "[" << app->id() << "]";
+         return nullptr;
+@@ -323,13 +324,13 @@
+ {
+     for (uint i = 0; remotes && i < remotes->len; i++) {
+         FwupdRemote *remote = (FwupdRemote *)g_ptr_array_index(remotes, i);
+-        if (!fwupd_remote_get_enabled(remote))
++        if (!fwupd_remote_has_flag(remote, FWUPD_REMOTE_FLAG_ENABLED))
+             continue;
+ 
+         if (fwupd_remote_get_kind(remote) == FWUPD_REMOTE_KIND_LOCAL)
+             continue;
+ 
+-        fwupd_client_refresh_remote_async(client, remote, m_cancellable, fwupd_client_refresh_remote_cb, this);
++        fwupd_client_refresh_remote_async(client, remote, FWUPD_CLIENT_DOWNLOAD_FLAG_NONE, m_cancellable, fwupd_client_refresh_remote_cb, this);
+     }
+ }
+ 
+--- a/libdiscover/backends/FwupdBackend/FwupdResource.cpp
++++ b/libdiscover/backends/FwupdBackend/FwupdResource.cpp
+@@ -161,13 +161,15 @@
+     m_description = QString::fromUtf8((fwupd_release_get_description(release)));
+     m_homepage = QUrl(QString::fromUtf8(fwupd_release_get_homepage(release)));
+     m_license = QString::fromUtf8(fwupd_release_get_license(release));
+-    m_updateURI = QString::fromUtf8(fwupd_release_get_uri(release));
++    GPtrArray *locations = fwupd_release_get_locations(release);
++    if (locations != nullptr && locations->len > 0) {
++        m_updateURI = QString::fromUtf8((const gchar *)g_ptr_array_index(locations, 0));
++    }
+ }
+ 
+ void FwupdResource::setDeviceDetails(FwupdDevice *dev)
+ {
+     m_isLiveUpdatable = fwupd_device_has_flag(dev, FWUPD_DEVICE_FLAG_UPDATABLE);
+-    m_isOnlyOffline = fwupd_device_has_flag(dev, FWUPD_DEVICE_FLAG_ONLY_OFFLINE);
+     m_needsReboot = fwupd_device_has_flag(dev, FWUPD_DEVICE_FLAG_NEEDS_REBOOT);
+ 
+     if (fwupd_device_get_name(dev)) {
+@@ -182,7 +184,6 @@
+     m_vendor = QString::fromUtf8(fwupd_device_get_vendor(dev));
+     m_releaseDate = QDateTime::fromSecsSinceEpoch(fwupd_device_get_created(dev)).date();
+     m_availableVersion = QString::fromUtf8(fwupd_device_get_version(dev));
+-    m_description = QString::fromUtf8((fwupd_device_get_description(dev)));
+ 
+     if (fwupd_device_get_icons(dev)->len >= 1)
+         m_iconName = QString::fromUtf8((const gchar *)g_ptr_array_index(fwupd_device_get_icons(dev), 0)); // Check whether given icon exists or not!
+--- a/libdiscover/backends/FwupdBackend/FwupdResource.h
++++ b/libdiscover/backends/FwupdBackend/FwupdResource.h
+@@ -102,11 +102,6 @@
+         return m_isDeviceLocked;
+     }
+ 
+-    bool isOnlyOffline() const
+-    {
+-        return m_isOnlyOffline;
+-    }
+-
+     bool isLiveUpdatable() const
+     {
+         return m_isLiveUpdatable;
+@@ -146,7 +141,6 @@
+ 
+     QString m_updateURI;
+     bool m_isDeviceLocked = false; // True if device is locked!
+-    bool m_isOnlyOffline = false; // True if only offline updates
+     bool m_isLiveUpdatable = false; // True if device is live updatable
+     bool m_needsReboot = false; // True if device needs Reboot
+     QString m_origin;
+--- a/libdiscover/backends/FwupdBackend/FwupdSourcesBackend.cpp
++++ b/libdiscover/backends/FwupdBackend/FwupdSourcesBackend.cpp
+@@ -34,7 +34,7 @@
+         case Qt::CheckStateRole: {
+             if (value == Qt::Checked) {
+                 m_backend->m_currentItem = item;
+-                if (fwupd_remote_get_approval_required(remote)) {
++                if (fwupd_remote_has_flag(remote, FWUPD_REMOTE_FLAG_APPROVAL_REQUIRED)) {
+                     QString eulaText = i18n("The remote %1 require that you accept their license:\n %2",
+                                             QString::fromUtf8(fwupd_remote_get_title(remote)),
+                                             QString::fromUtf8(fwupd_remote_get_agreement(remote)));
+@@ -88,7 +88,7 @@
+         it->setData(id, AbstractSourcesBackend::IdRole);
+         it->setData(QVariant(QString::fromUtf8(fwupd_remote_get_title(remote))), Qt::ToolTipRole);
+         it->setCheckable(true);
+-        it->setCheckState(fwupd_remote_get_enabled(remote) ? Qt::Checked : Qt::Unchecked);
++        it->setCheckState(fwupd_remote_has_flag(remote, FWUPD_REMOTE_FLAG_ENABLED) ? Qt::Checked : Qt::Unchecked);
+         m_sources->appendRow(it);
+     }
+ }
+@@ -121,7 +121,7 @@
+ {
+     FwupdRemote *remote =
+         fwupd_client_get_remote_by_id(backend->client, m_currentItem->data(AbstractSourcesBackend::IdRole).toString().toUtf8().constData(), nullptr, nullptr);
+-    m_currentItem->setCheckState(fwupd_remote_get_enabled(remote) ? Qt::Checked : Qt::Unchecked);
++    m_currentItem->setCheckState(fwupd_remote_has_flag(remote, FWUPD_REMOTE_FLAG_ENABLED) ? Qt::Checked : Qt::Unchecked);
+ 
+     m_currentItem = nullptr;
+ }
+--- a/libdiscover/backends/FwupdBackend/FwupdTransaction.cpp
++++ b/libdiscover/backends/FwupdBackend/FwupdTransaction.cpp
+@@ -82,10 +82,6 @@
+     FwupdInstallFlags install_flags = FWUPD_INSTALL_FLAG_NONE;
+     g_autoptr(GError) error = nullptr;
+ 
+-    /* only offline supported */
+-    if (m_app->isOnlyOffline())
+-        install_flags = static_cast<FwupdInstallFlags>(install_flags | FWUPD_INSTALL_FLAG_OFFLINE);
+-
+     if (!fwupd_client_install(m_backend->client, m_app->deviceId().toUtf8().constData(), file.toUtf8().constData(), install_flags, nullptr, &error)) {
+         m_backend->handleError(error);
+         setStatus(DoneWithErrorStatus);
+@@ -110,7 +106,7 @@
+ 
+ void FwupdTransaction::finishTransaction()
+ {
+-    AbstractResource::State newState;
++    AbstractResource::State newState = AbstractResource::None;
+     switch (role()) {
+     case InstallRole:
+     case ChangeAddonsRole:
diff -Nru plasma-discover-5.27.5/debian/patches/series plasma-discover-5.27.5/debian/patches/series
--- plasma-discover-5.27.5/debian/patches/series	1969-12-31 18:00:00.000000000 -0600
+++ plasma-discover-5.27.5/debian/patches/series	2026-06-27 13:29:28.000000000 -0500
@@ -0,0 +1 @@
+fwupd-2.0-compatibility-fixes
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.