fwupd/plugins
Richard Hughes 0eb123b986 Allow requiring specific versions of libraries for firmware updates
In some cases firmware can only be installed with an up to date GUsb (e.g. with
some STM-DFU hardware) or with a new version of fwupdate (e.g. any UEFI
UpdateCapsule without a capsule header).

We should be able to match against other software versions like we can the
fwupd version, e.g.

    <requires>
      <id compare="ge" version="0.9.2">org.freedesktop.fwupd</id>
      <id compare="ge" version="11">com.redhat.fwupdate</id>
    </requires>

Also, rather than checking each requirement we know about on the component,
check each requirement on the component about things we know. This ensures we
don't allow firmware to be installs that requires for instance fwupdate 22 when
the runtime version is only being added in fwupdate 12 and up.

This means the following is now an error that will fail to allow the firmware
to be installed:

    <requires>
      <firmware>doesnotexist</firmware>
      <some_future_tag>also_unknown</some_future_tag>
    </requires>

Also add a lot of self tests to test the various new failure modes.

Fixes https://github.com/hughsie/fwupd/issues/463
2018-04-20 16:19:05 +01:00
..
altos Disable -Wunused-function on clang builds (Closes #467) 2018-04-17 10:10:43 +01:00
amt Disable -Wunused-function on clang builds (Closes #467) 2018-04-17 10:10:43 +01:00
colorhug trivial: Allow plugins to add metadata to the uploaded reports 2018-01-11 21:28:22 +00:00
csr Disable -Wunused-function on clang builds (Closes #467) 2018-04-17 10:10:43 +01:00
dell Disable -Wunused-function on clang builds (Closes #467) 2018-04-17 10:10:43 +01:00
dfu Bump appstream-glib minimum version to 0.7.4 2018-04-20 09:05:17 -05:00
ebitdo plugins/ebitdo: Stop matching DS4 controller VID/PID 2018-02-05 20:30:18 +00:00
nitrokey Allow devices to use the runtime version when in bootloader mode 2018-02-16 18:23:07 +00:00
steelseries trivial: Create the right kind of device in the steelseries plugin 2017-11-30 21:26:39 +00:00
synapticsmst Disable -Wunused-function on clang builds (Closes #467) 2018-04-17 10:10:43 +01:00
test trivial: Compile upower and test plugins with -O0 (Closes: #472) 2018-04-18 20:11:43 +01:00
thunderbolt Enable CentOS 7 for CI 2018-04-18 10:25:22 -05:00
thunderbolt-power Disable -Wunused-function on clang builds (Closes #467) 2018-04-17 10:10:43 +01:00
udev Store firmware update success and failure to a local database 2018-01-11 09:59:34 +00:00
uefi Allow requiring specific versions of libraries for firmware updates 2018-04-20 16:19:05 +01:00
unifying Disable -Wunused-function on clang builds (Closes #467) 2018-04-17 10:10:43 +01:00
upower trivial: Compile upower and test plugins with -O0 (Closes: #472) 2018-04-18 20:11:43 +01:00
meson.build Remove support for RaspberryPi 2018-03-01 18:45:47 +00:00
README.md trivial: Use the SSL www-less homepage URL everywhere 2018-03-14 18:15:17 +00:00

Adding a new plugin

An extensible architecture allows for providing new plugin types (for reading and writing different firmware) as well as ways quirk their behavior.

You can find more information about the architecture in the developers section of the fwupd website.

If you have a firmware specification and would like to see support in this project, please file an issue and share the spec. Patches are also welcome.

Plugin interaction

Some plugins may be able to influence the behavior of other plugins. This includes things like one plugin turning on a device, or providing missing metadata to another plugin.

The ABI for these interactions is defined in: https://github.com/hughsie/fwupd/blob/master/src/fu-device-metadata.h

All interactions between plugins should have the interface defined in that file.