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 theGCancellable
for theGS_PLUGIN_ACTION_UPGRADE_DOWNLOAD
job ings-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 theGCancellable
doesn’t persist throughout the lifetime of the download. Should this be fixed by changing how theGCancellable
s work, or by making theGS_PLUGIN_ACTION_UPGRADE_DOWNLOAD
job block until the download is actually complete? -
gs-upgrade-banner.c
emits a critical for apps in theUNKNOWN
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 theGsUpgradeBanner
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 thegs_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