Commit Graph

133 Commits

Author SHA1 Message Date
Richard Hughes
1f162e2f16 Implement the GetDetails->GetDetailsLocal fallback client side
This allows us to get rid of some more complex daemon code.
2017-06-19 09:56:43 +01:00
Richard Hughes
0a87f6fb03 Store the metadata files rather than merging to one store
Now we have multiple remotes that can be enabled or changed at runtime we need
to do several things better:

* Only load components from remotes that are enabled

* Only load a component if a higher priority remote has not already added it

Rather than just appending all recieved metadata into one big XML file, save
the original metadata .xml.gz files in /var/lib/fwupd/remotes.d and only load
them in the correct priority order if the remote is known and enabled.

Remove the old /var/cache/app-info/xmls/fwupd.xml file, also noting it wasn't
really a cache file at all but actually something quite important.
2017-06-16 16:43:13 +01:00
Richard Hughes
4c36970445 Move the remotes parsing from the client to the server
This allows us to load the metadata stores in a more sensible way in the future.
2017-06-16 15:31:40 +01:00
Richard Hughes
a71e0a71f6 Allow ordering the metadata remotes
This allows us to load one metadata source file before or after another.
2017-06-16 12:40:24 +01:00
Richard Hughes
402a438bae trivial: Show a better message when failing to connect to the system D-Bus 2017-06-14 15:15:41 +01:00
Richard Hughes
f04923ae2f trivial: Don't fail to refresh if a remotes.d does not exist
Resolves: https://github.com/hughsie/fwupd/issues/137
2017-06-13 10:16:36 +01:00
Richard Hughes
812d1b708d trivial: Spit out non-enum functionality into a common file 2017-06-06 16:27:47 +01:00
Richard Hughes
81c7649dd8 libfwupd: Add fwupd_client_get_devices_simple() to return us an array of devices, not results 2017-06-06 11:10:57 +01:00
Richard Hughes
45c1545b0a Add a 'downgrade' command to fwupdmgr
This allows the user to downgrade the firmware on a device.
2017-06-06 09:44:47 +01:00
Richard Hughes
e4a100cfee Add a GetReleases() D-Bus call to return all releases for a device
This allows us to downgrade firmware in the future.
2017-06-05 17:42:57 +01:00
Richard Hughes
4db6c4a4b0 libfwupd: Split up FwupdResult into FwupdDevice and FwupdRelease
This retains the old API to avoid breaking ABI.
2017-06-05 17:34:36 +01:00
Richard Hughes
1b50d960f2 Send the daemon the remote ID when sending updated firmware metadata
This allows us to 'tag' the components with the correct remote ID value, which
then means we can tell where the firmware information has come from when saving
a composite store. It also allows us use the correct username and password in
the future when downloading the firmware blob itself.

Keep the old D-Bus method around to preserve API for existing clients.
2017-06-02 13:19:05 +01:00
Richard Hughes
dfed515573 Allow downloading metadata from more than just the LVFS
Add the concept of 'remotes' that can dropped into /etc and used as firmware
metadata sources. This may be desirable when firmware is only accessable with
a valid support contract or from behind a VPN.
2017-06-02 13:19:05 +01:00
Richard Hughes
29c220db9f Add VerifyUpdate to update the device checksums server-side 2016-12-15 17:09:37 +00:00
Richard Hughes
102ddb8fda trivial: Remove some code that cannot be reached
Found using Coverity.
2016-11-09 20:14:15 +00:00
Richard Hughes
dd7713d27d trivial: Fix a tiny resource leak if the signature file cannot be opened
Found using Coverity.
2016-11-09 19:28:38 +00:00
Richard Hughes
7d78347549 Fix libfwupd self tests when a host-provided fwupd is not available
Resolves: https://github.com/hughsie/fwupd/issues/64
2016-08-31 11:41:46 +01:00
Richard Hughes
abf42df355 Add fwupd_client_get_status() 2016-08-17 17:46:15 +01:00
Richard Hughes
876c007b1a Allow providers to export percentage completion 2016-08-17 17:46:15 +01:00
Richard Hughes
c2651fb687 trivial: Do not timeout of very long firmware operations 2016-08-16 18:13:50 +01:00
Richard Hughes
ce38d94d5e trivial: Get rid of useless internal-only gtk-doc markup 2016-06-29 11:25:25 +01:00
Richard Hughes
7289a6b5f0 Add a GetDetailsLocal() method to eventually replace GetDetails()
This allows us to return multiple results from one file, for instance where the
firmware.cab file contains multiple metainfo.xml files.

This allows us to show all the entries in the firmware file, rather than
searching for the installed device that matches and falling back to just the
first listed item.
2016-05-29 09:57:24 +01:00
Mario Limonciello
71a5b98d30 Add support for a --force flag to override provider warnings
Under some circumstances a provider may want to prevent a user from
performing a flash without additional user interaction.

Providers can opt into this behavior by checking for
FWUPD_INSTALL_FLAG_FORCE in the update routine.
2016-05-10 15:41:16 -05:00
Richard Hughes
8ca33784ec Add device-added, device-removed and device-changed signals
This allows us to watch a specific device from client code without
re-requesting the device list on every Changed() signal.
2016-04-28 16:56:23 +01:00
Richard Hughes
1773e83060 Add fwupd_client_connect()
This exposes the client connection functionality so we can watch for signals
without being forced to perform an action beforehand.
2016-04-28 16:56:23 +01:00
Richard Hughes
5ac25f32e0 Generate gtk-doc documentation for libfwupd 2016-04-01 11:22:31 +01:00
Richard Hughes
12de5d8f23 Return errors of the correct type when using libfwupd
This also allows us to skip errors when doing 'make check' in a VM with no
hardware devices.
2016-03-31 11:04:49 +01:00
Richard Hughes
f3c1b56e73 trivial: Fix a potential crash spotted with clang 2016-03-18 12:33:47 +00:00
Richard Hughes
bdea096742 trivial: Add asserts for valid cancellables and errors in FwupdClient 2016-03-18 12:33:47 +00:00
Richard Hughes
9d8126ec63 libfwup: Fix up some NULL/FALSE confusion 2016-03-18 12:33:47 +00:00
Richard Hughes
2d6e186800 Rename some of the new libfwupd API to align with the D-Bus names 2016-03-18 09:20:40 +00:00
Richard Hughes
ac97288ddb Emit a FwupdClient::changed when the daemon emits this signal 2016-03-17 13:10:16 +00:00
Richard Hughes
0f41340740 Add FwupdClient to libfwupd
This is a client-side object which can get results from the daemon.
2016-03-17 10:04:19 +00:00