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.
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

