Add GsPluginJobUpdateApps

This creates a new GsPluginJob subclass for updating apps. It replaces both GS_PLUGIN_ACTION_DOWNLOAD and GS_PLUGIN_ACTION_UPDATE.

It would be really useful if we could get this in this cycle, before the API freeze, because it’s quite a large delta, and it unlocks the possibility of making improvements to how flatpak app updates are done (because now the download and apply stages are controlled in the same function). That will allow us to fix various longstanding bugs (such as #1929 (closed)).

I propose that this is given some API review (basically just look at the new header files and GObject properties and signals) and, if that’s OK, land it ASAP.

The branch contains various FIXME comments which need addressing before this can be shipped in a stable release, covering various plugins where I have not had time to refactor the code to be async yet. The biggest one of these is the PackageKit plugin: this branch is known to freeze the main thread if a download needs to be done to update a PackageKit app. I would be fixing that as my next task if this lands, but the fix wouldn’t make the API freeze release.

This branch has had some light testing, but I have not had every kind of update available to test it against. I would be doing more testing once it’s landed, as we move towards a stable release.

This MR is based on !1615 (merged), just to break up the review a bit. Unfortunately I can’t see an easy way to split it up further.

Signed-off-by: Philip Withnall

Helps: #1472

Edited by Philip Withnall

Merge request reports