On 6/27/26 3:45 PM, Jonathan Wiltshire wrote:
On Sat, Jun 27, 2026 at 12:46:44PM -0500, Mario Limonciello wrote:
On 6/27/26 8:04 AM, Adrian Bunk wrote:
On Sat, Jun 27, 2026 at 07:49:12AM -0500, Mario Limonciello wrote:
...
So unfortunately I think this does mean a need for a rebuild and some
testing of of gnome-software, plasma-discover, and gnome-firmware to do the
upgrade.
They likely need fixes for building:
https://salsa.debian.org/qt-kde-team/kde/plasma-discover/-/commit/afca7536787af4d0f58d3aa22a9962c2265b58d5
https://salsa.debian.org/gnome-team/gnome-software/-/commit/bdfe5c691a1c3302cf61da0781b290c67f88ba6b
https://salsa.debian.org/gnome-team/gnome-firmware/-/commit/851182b25b8bd4f79d849337fa4b8cf11b47178d
cu
Adrian
Thanks Adrian for finding those.
I've got gnome-firmware building successfully, I'll attach the debdiff.
will follow up with the others later when I get them working.
Oh, I had a completely dim moment and forgot the old symbols file is
removed completely - just skimmed the new one and got confused. Sorry.
Please coordinate with affected maintainers to get things ready, and
ideally affected packages would get a versioned build-dep now which will
make things easier later. I'll get the two other libraries sorted out.
Keep me posted.
Thanks,
OK - I've got gnome-software and plasma-discover building too. Attached
are the debdiffs.
Do you suggest filing a bug with all 3 packages and requesting
maintainers to ack doing an NMU for their packages referencing this bug?diff -Nru gnome-software-43.5/debian/changelog
gnome-software-43.5/debian/changelog
--- gnome-software-43.5/debian/changelog 2023-06-16 05:33:47.000000000
-0500
+++ gnome-software-43.5/debian/changelog 2026-06-27 13:02:08.000000000
-0500
@@ -1,3 +1,11 @@
+gnome-software (43.5-1~deb12u2) bookworm; urgency=medium
+
+ * Add patch for fwupd 2.0 compat.
+ * d/control:
+ - b/d on newer libfwupd
+
+ -- Mario Limonciello <[email protected]> Sat, 27 Jun 2026 13:02:08 -0500
+
gnome-software (43.5-1~deb12u1) bookworm; urgency=medium
* Team upload
diff -Nru gnome-software-43.5/debian/control gnome-software-43.5/debian/control
--- gnome-software-43.5/debian/control 2023-06-16 05:33:47.000000000 -0500
+++ gnome-software-43.5/debian/control 2026-06-27 13:02:08.000000000 -0500
@@ -16,7 +16,7 @@
libadwaita-1-dev (>= 1.0.1),
libappstream-dev (>= 0.14.0),
libflatpak-dev (>= 1.14.0) [amd64 arm64 armel armhf i386 mipsel
mips64el ppc64el s390x hppa powerpc ppc64 riscv64 x32],
- libfwupd-dev (>= 1.5.6) [linux-any],
+ libfwupd-dev (>= 2.0.20) [linux-any],
libglib2.0-dev (>= 2.70.0),
libglib-testing-0-dev,
libgtk-4-dev (>= 4.6),
diff -Nru gnome-software-43.5/debian/control.in
gnome-software-43.5/debian/control.in
--- gnome-software-43.5/debian/control.in 2023-06-16 05:33:47.000000000
-0500
+++ gnome-software-43.5/debian/control.in 2026-06-27 13:02:08.000000000
-0500
@@ -12,7 +12,7 @@
libadwaita-1-dev (>= 1.0.1),
libappstream-dev (>= 0.14.0),
libflatpak-dev (>= 1.14.0) [amd64 arm64 armel armhf i386 mipsel
mips64el ppc64el s390x hppa powerpc ppc64 riscv64 x32],
- libfwupd-dev (>= 1.5.6) [linux-any],
+ libfwupd-dev (>= 2.0.20) [linux-any],
libglib2.0-dev (>= 2.70.0),
libglib-testing-0-dev,
libgtk-4-dev (>= 4.6),
diff -Nru gnome-software-43.5/debian/patches/remove-old-api.patch
gnome-software-43.5/debian/patches/remove-old-api.patch
--- gnome-software-43.5/debian/patches/remove-old-api.patch 1969-12-31
18:00:00.000000000 -0600
+++ gnome-software-43.5/debian/patches/remove-old-api.patch 2026-06-27
13:02:08.000000000 -0500
@@ -0,0 +1,126 @@
+From: Mario Limonciello <[email protected]>
+Date: Jun, 27 2026 18:08:22 -0500
+Subject: [PATCH] Remove old fwupd API
+
+Index: gnome-software-43.5/plugins/fwupd/gs-fwupd-app.c
+===================================================================
+--- gnome-software-43.5.orig/plugins/fwupd/gs-fwupd-app.c
++++ gnome-software-43.5/plugins/fwupd/gs-fwupd-app.c
+@@ -62,11 +62,6 @@ gs_fwupd_app_set_from_device (GsApp *app
+ if (fwupd_device_has_flag (dev, FWUPD_DEVICE_FLAG_UPDATABLE))
+ gs_app_set_state (app, GS_APP_STATE_UPDATABLE_LIVE);
+
+- /* only can be applied in systemd-offline */
+- if (fwupd_device_has_flag (dev, FWUPD_DEVICE_FLAG_ONLY_OFFLINE))
+- gs_app_set_metadata (app, "fwupd::OnlyOffline", "");
+-
+-
+ /* reboot required to apply update */
+ if (fwupd_device_has_flag (dev, FWUPD_DEVICE_FLAG_NEEDS_REBOOT))
+ gs_app_add_quirk (app, GS_APP_QUIRK_NEEDS_REBOOT);
+@@ -106,9 +101,9 @@ gs_fwupd_app_set_from_device (GsApp *app
+ }
+ if (fwupd_device_get_created (dev) != 0)
+ gs_app_set_install_date (app, fwupd_device_get_created (dev));
+- if (fwupd_device_get_description (dev) != NULL) {
++ if (fwupd_device_get_summary (dev) != NULL) {
+ g_autofree gchar *tmp = NULL;
+- tmp = as_markup_convert_simple (fwupd_device_get_description
(dev), NULL);
++ tmp = as_markup_convert_simple (fwupd_device_get_summary (dev),
NULL);
+ if (tmp != NULL)
+ gs_app_set_description (app, GS_APP_QUALITY_NORMAL,
tmp);
+ }
+Index: gnome-software-43.5/plugins/fwupd/gs-plugin-fwupd.c
+===================================================================
+--- gnome-software-43.5.orig/plugins/fwupd/gs-plugin-fwupd.c
++++ gnome-software-43.5/plugins/fwupd/gs-plugin-fwupd.c
+@@ -403,7 +403,7 @@ gs_plugin_fwupd_new_app_from_device_raw
+ gs_app_set_version (app, fwupd_device_get_version (device));
+ gs_app_set_name (app, GS_APP_QUALITY_LOWEST, fwupd_device_get_name
(device));
+ gs_app_set_summary (app, GS_APP_QUALITY_LOWEST,
fwupd_device_get_summary (device));
+- gs_app_set_description (app, GS_APP_QUALITY_LOWEST,
fwupd_device_get_description (device));
++ gs_app_set_description (app, GS_APP_QUALITY_LOWEST,
fwupd_device_get_summary (device));
+ gs_app_set_origin (app, fwupd_device_get_vendor (device));
+ gs_fwupd_app_set_device_id (app, fwupd_device_get_id (device));
+ gs_app_set_management_plugin (app, plugin);
+@@ -790,7 +790,7 @@ get_remotes_cb (GObject *source_obj
+ for (guint i = 0; i < remotes->len; i++) {
+ FwupdRemote *remote = 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_DOWNLOAD)
+ continue;
+@@ -798,7 +798,8 @@ get_remotes_cb (GObject *source_obj
+ continue;
+
+ data->n_operations_pending++;
+- fwupd_client_refresh_remote_async (client, remote, cancellable,
++ fwupd_client_refresh_remote_async (client, remote,
FWUPD_CLIENT_DOWNLOAD_FLAG_NONE,
++ cancellable,
+ refresh_remote_cb,
g_object_ref (task));
+ }
+
+@@ -901,10 +902,6 @@ gs_plugin_fwupd_install (GsPluginFwupd
+ /* set the last object */
+ g_set_object (&self->app_current, app);
+
+- /* only offline supported */
+- if (gs_app_get_metadata_item (app, "fwupd::OnlyOffline") != NULL)
+- install_flags |= FWUPD_INSTALL_FLAG_OFFLINE;
+-
+ gs_app_set_state (app, GS_APP_STATE_INSTALLING);
+ if (!fwupd_client_install (self->client, device_id,
+ filename, install_flags,
+@@ -931,20 +928,21 @@ gs_plugin_fwupd_install (GsPluginFwupd
+ * in a too-new-to-depend-on fwupd version */
+ g_debug ("failed to find device after install: %s",
error_local->message);
+ } else {
+- if (fwupd_device_get_update_message (dev) != NULL) {
++ FwupdRelease *release = fwupd_device_get_release_default (dev);
++ if (release != NULL && fwupd_release_get_update_message
(release) != NULL) {
+ g_autoptr(AsScreenshot) ss = as_screenshot_new ();
+
+ /* image is optional */
+- if (fwupd_device_get_update_image (dev) != NULL) {
++ if (fwupd_release_get_update_image (release) != NULL) {
+ g_autoptr(AsImage) im = as_image_new ();
+ as_image_set_kind (im, AS_IMAGE_KIND_SOURCE);
+- as_image_set_url (im,
fwupd_device_get_update_image (dev));
++ as_image_set_url (im,
fwupd_release_get_update_image (release));
+ as_screenshot_add_image (ss, im);
+ }
+
+ /* caption is required */
+ as_screenshot_set_kind (ss, AS_SCREENSHOT_KIND_DEFAULT);
+- as_screenshot_set_caption (ss,
fwupd_device_get_update_message (dev), NULL);
++ as_screenshot_set_caption (ss,
fwupd_release_get_update_message (release), NULL);
+ gs_app_set_action_screenshot (app, ss);
+
+ /* require the dialog */
+@@ -1224,7 +1222,7 @@ gs_plugin_add_sources (GsPlugin *plugin,
+ app = gs_app_new (id);
+ gs_app_set_kind (app, AS_COMPONENT_KIND_REPOSITORY);
+ gs_app_set_scope (app, AS_COMPONENT_SCOPE_SYSTEM);
+- gs_app_set_state (app, fwupd_remote_get_enabled (remote) ?
++ gs_app_set_state (app, fwupd_remote_has_flag (remote,
FWUPD_REMOTE_FLAG_ENABLED) ?
+ GS_APP_STATE_INSTALLED :
GS_APP_STATE_AVAILABLE);
+ gs_app_add_quirk (app, GS_APP_QUIRK_NOT_LAUNCHABLE);
+ gs_app_set_name (app, GS_APP_QUALITY_LOWEST,
+@@ -1285,11 +1283,13 @@ gs_plugin_fwupd_enable_repository_get_re
+ for (guint i = 0; i < remotes->len; i++) {
+ FwupdRemote *remote = g_ptr_array_index (remotes, i);
+ if (g_strcmp0 (remote_id, fwupd_remote_get_id (remote)) == 0) {
+- if (fwupd_remote_get_enabled (remote) &&
++ if (fwupd_remote_has_flag (remote,
FWUPD_REMOTE_FLAG_ENABLED) &&
+ fwupd_remote_get_kind (remote) !=
FWUPD_REMOTE_KIND_LOCAL &&
+ !remote_cache_is_expired (remote, cache_age)) {
+ GCancellable *cancellable =
g_task_get_cancellable (task);
+- fwupd_client_refresh_remote_async
(self->client, remote, cancellable,
++ fwupd_client_refresh_remote_async
(self->client, remote,
++
FWUPD_CLIENT_DOWNLOAD_FLAG_NONE,
++ cancellable,
+
gs_plugin_fwupd_enable_repository_remote_refresh_ready_cb,
+
g_steal_pointer (&task));
+ return;
diff -Nru gnome-software-43.5/debian/patches/series
gnome-software-43.5/debian/patches/series
--- gnome-software-43.5/debian/patches/series 2023-06-16 05:33:47.000000000
-0500
+++ gnome-software-43.5/debian/patches/series 2026-06-27 13:02:08.000000000
-0500
@@ -1 +1,2 @@
01_details-Use-custom-icon-for-verified-developers.patch
+remove-old-api.patch
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