Skip to content

eos-updater: Implement a plugin to integrate with the eos-updater daemon

This plugin is to be used on Endless OS only, to integrate gnome-software with the eos-updater daemon. eos-updater implements OS updates using OSTree, and is controlled using a D-Bus interface.

This is tested (and includes tests) and ready to go, modulo a few small issues which need discussion (and which are marked in the code with TODO comments):

  • Cancellation of the upgrade download doesn’t work, because the GCancellable in the UI is chained to the GCancellable for the GS_PLUGIN_ACTION_UPGRADE_DOWNLOAD job in gs-updates-page.c — but the way the eos-updater plugin works is to trigger an asynchronous download for that job, then return while the download completes in the background. Hence the GCancellable doesn’t persist throughout the lifetime of the download. Should this be fixed by changing how the GCancellables work, or by making the GS_PLUGIN_ACTION_UPGRADE_DOWNLOAD job block until the download is actually complete?
  • gs-upgrade-banner.c emits a critical for apps in the UNKNOWN state. What would be the best way of handling this? Hide it in that case?
  • There’s a multi-minute delay between calling gs_plugin_updates_changed() when an update is detected, and the GsUpgradeBanner being added to the updates page and shown. I haven’t figured out exactly what’s going on, but it seems like a refresh is getting squashed somewhere if a refresh is already in progress, but the gs_plugin_updates_changed() call happened after updates were handled in the ongoing refresh. Or something like that. So the banner is only added the next time the updates page does a periodic refresh. What’s the best fix for this?
Edited by Philip Withnall

Merge request reports