diff --git a/.fwupd.metadata b/.fwupd.metadata new file mode 100644 index 0000000..ed8c355 --- /dev/null +++ b/.fwupd.metadata @@ -0,0 +1 @@ +9777016b6b861676e3e88153f7b310e4d985871a SOURCES/fwupd-1.1.4.tar.xz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7aab32e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/fwupd-1.1.4.tar.xz diff --git a/SOURCES/0001-Disable-wacomhid-by-default-as-probing-the-device-st.patch b/SOURCES/0001-Disable-wacomhid-by-default-as-probing-the-device-st.patch new file mode 100644 index 0000000..34e23d5 --- /dev/null +++ b/SOURCES/0001-Disable-wacomhid-by-default-as-probing-the-device-st.patch @@ -0,0 +1,28 @@ +From d4a65700c5ed9544b6445213bd5f8a0dbc2cd1e5 Mon Sep 17 00:00:00 2001 +From: Richard Hughes +Date: Fri, 29 Nov 2019 14:00:39 +0000 +Subject: [PATCH] Disable wacomhid by default as probing the device stops the + tablet working + +This is fixed properly in fwupd >= 1.2.2 but add this workaround here for +stable distros that cannot rebase to a newer branch. +--- + data/daemon.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/daemon.conf b/data/daemon.conf +index 51ab19f4..03965d88 100644 +--- a/data/daemon.conf ++++ b/data/daemon.conf +@@ -6,7 +6,7 @@ BlacklistDevices= + + # Allow blacklisting specific plugins + # Uses semicolons as delimiter +-BlacklistPlugins=test ++BlacklistPlugins=test;wacomhid + + # Maximum archive size that can be loaded in Mb, with 0 for the default + ArchiveSizeMax=0 +-- +2.23.0 + diff --git a/SOURCES/0001-Relax-the-certificate-time-checks-in-the-self-tests-.patch b/SOURCES/0001-Relax-the-certificate-time-checks-in-the-self-tests-.patch new file mode 100644 index 0000000..b6be5f2 --- /dev/null +++ b/SOURCES/0001-Relax-the-certificate-time-checks-in-the-self-tests-.patch @@ -0,0 +1,220 @@ +commit 58f79c3d235290c4cecccc1d55cbcc2da8e988a6 +Author: Richard Hughes +Date: Thu Aug 1 09:45:25 2019 +0100 + + Relax the certificate time checks in the self tests for the legacy certificate + + One test verifies a firmware with a signature from the old LVFS which was + hosted on secure-lvfs.rhcloud.com and used the original PKCS-7 key. This key + had a two year validity (expiring today, ohh the naivety...) rather than the + newer fwupd.org key which expires in the year 2058. + + For this specific test only, disable the certificate time checks to fix CI. + + Fixes https://github.com/hughsie/fwupd/issues/1264 + +diff --git a/src/fu-engine.c b/src/fu-engine.c +index ac102cfa..1a57b0af 100644 +--- a/src/fu-engine.c ++++ b/src/fu-engine.c +@@ -1908,7 +1908,8 @@ fu_engine_get_existing_keyring_result (FuEngine *self, + blob_sig = fu_common_get_contents_bytes (fwupd_remote_get_filename_cache_sig (remote), error); + if (blob_sig == NULL) + return NULL; +- return fu_keyring_verify_data (kr, blob, blob_sig, error); ++ return fu_keyring_verify_data (kr, blob, blob_sig, ++ FU_KEYRING_VERIFY_FLAG_NONE, error); + } + + /** +@@ -1991,7 +1992,9 @@ fu_engine_update_metadata (FuEngine *self, const gchar *remote_id, + pki_dir = g_build_filename (sysconfdir, "pki", "fwupd-metadata", NULL); + if (!fu_keyring_add_public_keys (kr, pki_dir, error)) + return FALSE; +- kr_result = fu_keyring_verify_data (kr, bytes_raw, bytes_sig, error); ++ kr_result = fu_keyring_verify_data (kr, bytes_raw, bytes_sig, ++ FU_KEYRING_VERIFY_FLAG_NONE, ++ error); + if (kr_result == NULL) + return FALSE; + +diff --git a/src/fu-keyring-gpg.c b/src/fu-keyring-gpg.c +index af0bfbe0..a51ab7a4 100644 +--- a/src/fu-keyring-gpg.c ++++ b/src/fu-keyring-gpg.c +@@ -231,6 +231,7 @@ static FuKeyringResult * + fu_keyring_gpg_verify_data (FuKeyring *keyring, + GBytes *blob, + GBytes *blob_signature, ++ FuKeyringVerifyFlags flags, + GError **error) + { + FuKeyringGpg *self = FU_KEYRING_GPG (keyring); +diff --git a/src/fu-keyring-pkcs7.c b/src/fu-keyring-pkcs7.c +index d48dc5d0..dc310d37 100644 +--- a/src/fu-keyring-pkcs7.c ++++ b/src/fu-keyring-pkcs7.c +@@ -182,6 +182,7 @@ static FuKeyringResult * + fu_keyring_pkcs7_verify_data (FuKeyring *keyring, + GBytes *blob, + GBytes *blob_signature, ++ FuKeyringVerifyFlags flags, + GError **error) + { + FuKeyringPkcs7 *self = FU_KEYRING_PKCS7 (keyring); +@@ -231,6 +232,14 @@ fu_keyring_pkcs7_verify_data (FuKeyring *keyring, + for (gint i = 0; i < count; i++) { + gnutls_pkcs7_signature_info_st info; + gint64 signing_time = 0; ++ gnutls_certificate_verify_flags verify_flags = 0; ++ ++ /* use with care */ ++ if (flags & FU_KEYRING_VERIFY_FLAG_DISABLE_TIME_CHECKS) { ++ g_debug ("WARNING: disabling time checks"); ++ verify_flags |= GNUTLS_VERIFY_DISABLE_TIME_CHECKS; ++ verify_flags |= GNUTLS_VERIFY_DISABLE_TRUSTED_TIME_CHECKS; ++ } + + /* verify the data against the detached signature */ + rc = gnutls_pkcs7_verify (pkcs7, self->tl, +@@ -238,7 +247,7 @@ fu_keyring_pkcs7_verify_data (FuKeyring *keyring, + 0, /* vdata_size */ + i, /* index */ + &datum, /* data */ +- 0); /* flags */ ++ verify_flags); + if (rc < 0) { + g_set_error (error, + FWUPD_ERROR, +diff --git a/src/fu-keyring-utils.c b/src/fu-keyring-utils.c +index 0c5a7f04..465b4a02 100644 +--- a/src/fu-keyring-utils.c ++++ b/src/fu-keyring-utils.c +@@ -167,7 +167,9 @@ fu_keyring_get_release_trust_flags (AsRelease *release, + fu_keyring_get_name (kr)); + return FALSE; + } +- kr_result = fu_keyring_verify_data (kr, blob_payload, blob_signature, &error_local); ++ kr_result = fu_keyring_verify_data (kr, blob_payload, blob_signature, ++ FU_KEYRING_VERIFY_FLAG_NONE, ++ &error_local); + if (kr_result == NULL) { + g_warning ("untrusted as failed to verify from %s keyring: %s", + fu_keyring_get_name (kr), +diff --git a/src/fu-keyring.c b/src/fu-keyring.c +index d8a88e8c..9b582563 100644 +--- a/src/fu-keyring.c ++++ b/src/fu-keyring.c +@@ -40,13 +40,14 @@ FuKeyringResult * + fu_keyring_verify_data (FuKeyring *keyring, + GBytes *blob, + GBytes *blob_signature, ++ FuKeyringVerifyFlags flags, + GError **error) + { + FuKeyringClass *klass = FU_KEYRING_GET_CLASS (keyring); + g_return_val_if_fail (FU_IS_KEYRING (keyring), NULL); + g_return_val_if_fail (blob != NULL, NULL); + g_return_val_if_fail (blob_signature != NULL, NULL); +- return klass->verify_data (keyring, blob, blob_signature, error); ++ return klass->verify_data (keyring, blob, blob_signature, flags, error); + } + + const gchar * +diff --git a/src/fu-keyring.h b/src/fu-keyring.h +index 6e03694c..f097305d 100644 +--- a/src/fu-keyring.h ++++ b/src/fu-keyring.h +@@ -17,6 +17,20 @@ G_BEGIN_DECLS + #define FU_TYPE_KEYRING (fu_keyring_get_type ()) + G_DECLARE_DERIVABLE_TYPE (FuKeyring, fu_keyring, FU, KEYRING, GObject) + ++/** ++ * FuKeyringVerifyFlags: ++ * @FU_KEYRING_VERIFY_FLAG_NONE: No flags set ++ * @FU_KEYRING_VERIFY_FLAG_DISABLE_TIME_CHECKS: Disable checking of validity periods ++ * ++ * The flags to use when interacting with a keyring ++ **/ ++typedef enum { ++ FU_KEYRING_VERIFY_FLAG_NONE = 0, ++ FU_KEYRING_VERIFY_FLAG_DISABLE_TIME_CHECKS = 1 << 2, ++ /*< private >*/ ++ FU_KEYRING_VERIFY_FLAG_LAST ++} FuKeyringVerifyFlags; ++ + struct _FuKeyringClass + { + GObjectClass parent_class; +@@ -28,6 +42,7 @@ struct _FuKeyringClass + FuKeyringResult *(*verify_data) (FuKeyring *keyring, + GBytes *payload, + GBytes *payload_signature, ++ FuKeyringVerifyFlags flags, + GError **error); + }; + +@@ -39,6 +54,7 @@ gboolean fu_keyring_add_public_keys (FuKeyring *keyring, + FuKeyringResult *fu_keyring_verify_data (FuKeyring *keyring, + GBytes *blob, + GBytes *blob_signature, ++ FuKeyringVerifyFlags flags, + GError **error); + const gchar *fu_keyring_get_name (FuKeyring *self); + void fu_keyring_set_name (FuKeyring *self, +diff --git a/src/fu-self-test.c b/src/fu-self-test.c +index 4f359614..98fac714 100644 +--- a/src/fu-self-test.c ++++ b/src/fu-self-test.c +@@ -1947,7 +1947,9 @@ fu_keyring_gpg_func (void) + g_assert_no_error (error); + g_assert_nonnull (blob_pass); + blob_sig = g_bytes_new_static (sig_gpgme, strlen (sig_gpgme)); +- result_pass = fu_keyring_verify_data (keyring, blob_pass, blob_sig, &error); ++ result_pass = fu_keyring_verify_data (keyring, blob_pass, blob_sig, ++ FU_KEYRING_VERIFY_FLAG_NONE, ++ &error); + g_assert_no_error (error); + g_assert_nonnull (result_pass); + g_assert_cmpint (fu_keyring_result_get_timestamp (result_pass), == , 1438072952); +@@ -1960,7 +1962,8 @@ fu_keyring_gpg_func (void) + blob_fail = fu_common_get_contents_bytes (fw_fail, &error); + g_assert_no_error (error); + g_assert_nonnull (blob_fail); +- result_fail = fu_keyring_verify_data (keyring, blob_fail, blob_sig, &error); ++ result_fail = fu_keyring_verify_data (keyring, blob_fail, blob_sig, ++ FU_KEYRING_VERIFY_FLAG_NONE, &error); + g_assert_error (error, FWUPD_ERROR, FWUPD_ERROR_SIGNATURE_INVALID); + g_assert_null (result_fail); + g_clear_error (&error); +@@ -2010,7 +2013,9 @@ fu_keyring_pkcs7_func (void) + blob_sig = fu_common_get_contents_bytes (sig_fn, &error); + g_assert_no_error (error); + g_assert_nonnull (blob_sig); +- result_pass = fu_keyring_verify_data (keyring, blob_pass, blob_sig, &error); ++ result_pass = fu_keyring_verify_data (keyring, blob_pass, blob_sig, ++ FU_KEYRING_VERIFY_FLAG_DISABLE_TIME_CHECKS, ++ &error); + g_assert_no_error (error); + g_assert_nonnull (result_pass); + g_assert_cmpint (fu_keyring_result_get_timestamp (result_pass), >= , 1502871248); +@@ -2022,7 +2027,8 @@ fu_keyring_pkcs7_func (void) + blob_sig2 = fu_common_get_contents_bytes (sig_fn2, &error); + g_assert_no_error (error); + g_assert_nonnull (blob_sig2); +- result_fail = fu_keyring_verify_data (keyring, blob_pass, blob_sig2, &error); ++ result_fail = fu_keyring_verify_data (keyring, blob_pass, blob_sig2, ++ FU_KEYRING_VERIFY_FLAG_NONE, &error); + g_assert_error (error, FWUPD_ERROR, FWUPD_ERROR_SIGNATURE_INVALID); + g_assert_null (result_fail); + g_clear_error (&error); +@@ -2033,7 +2039,8 @@ fu_keyring_pkcs7_func (void) + blob_fail = fu_common_get_contents_bytes (fw_fail, &error); + g_assert_no_error (error); + g_assert_nonnull (blob_fail); +- result_fail = fu_keyring_verify_data (keyring, blob_fail, blob_sig, &error); ++ result_fail = fu_keyring_verify_data (keyring, blob_fail, blob_sig, ++ FU_KEYRING_VERIFY_FLAG_NONE, &error); + g_assert_error (error, FWUPD_ERROR, FWUPD_ERROR_SIGNATURE_INVALID); + g_assert_null (result_fail); + g_clear_error (&error); diff --git a/SOURCES/0001-trivial-Relax-the-timing-requirements-on-the-FuDevic.patch b/SOURCES/0001-trivial-Relax-the-timing-requirements-on-the-FuDevic.patch new file mode 100644 index 0000000..2aff6ff --- /dev/null +++ b/SOURCES/0001-trivial-Relax-the-timing-requirements-on-the-FuDevic.patch @@ -0,0 +1,29 @@ +From 48cea11bd5d3d8c7f7423ad9807b1e537bc051c8 Mon Sep 17 00:00:00 2001 +From: Richard Hughes +Date: Thu, 8 Nov 2018 20:05:12 +0000 +Subject: [PATCH] trivial: Relax the timing requirements on the FuDevice poll + test + +If the poll source is scheduled just at the right time, we might only get 8x +'10ms ticks' in a 100ms window. This fixes an occasional build failure on +slower hardware and in CI. +--- + src/fu-self-test.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/fu-self-test.c b/src/fu-self-test.c +index 3c774b55..edc0088d 100644 +--- a/src/fu-self-test.c ++++ b/src/fu-self-test.c +@@ -2806,7 +2806,7 @@ fu_device_poll_func (void) + fu_test_loop_run_with_timeout (100); + fu_test_loop_quit (); + cnt = fu_device_get_metadata_integer (device, "cnt"); +- g_assert_cmpint (cnt, >=, 9); ++ g_assert_cmpint (cnt, >=, 8); + + /* disable the poll */ + fu_device_set_poll_interval (device, 0); +-- +2.19.1 + diff --git a/SOURCES/0001-uefi-add-a-new-option-to-specify-the-os-name.patch b/SOURCES/0001-uefi-add-a-new-option-to-specify-the-os-name.patch new file mode 100644 index 0000000..f9f4e43 --- /dev/null +++ b/SOURCES/0001-uefi-add-a-new-option-to-specify-the-os-name.patch @@ -0,0 +1,74 @@ +From 3cd6171c44ef217acef059c871efc726eb9df062 Mon Sep 17 00:00:00 2001 +From: Gary Lin +Date: Thu, 28 Mar 2019 16:20:22 +0800 +Subject: [PATCH] uefi: add a new option to specify the os name + +fu_uefi_get_esp_path_for_os() generates the path to the OS directory +based on "ID" in /etc/os-release, and it may not work for some distros. + +Take openSUSE as an example, the "ID" for openSUSE Leap is +"opensuse-leap" and that for openSUSE Tumbleweed is "opensuse-tumbleweed". +However, both of them use the same OS directory in the ESP, i.e. +"/EFI/opensuse". + +This commit adds a new build option, efi_os_dir, to allow the packager to +specify the name of OS directory at build time instead of the runtime +detection. + +Signed-off-by: Gary Lin +--- + meson_options.txt | 1 + + plugins/uefi/fu-uefi-common.c | 4 ++++ + plugins/uefi/meson.build | 5 +++++ + 3 files changed, 10 insertions(+) + +diff --git a/meson_options.txt b/meson_options.txt +index 23ef8cdb..c1767205 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -24,3 +24,4 @@ option('efi-ld', type : 'string', value : 'ld', description : 'the linker to use + option('efi-libdir', type : 'string', description : 'path to the EFI lib directory') + option('efi-ldsdir', type : 'string', description : 'path to the EFI lds directory') + option('efi-includedir', type : 'string', value : '/usr/include/efi', description : 'path to the EFI header directory') ++option('efi_os_dir', type: 'string', description : 'the name of OS directory in ESP') +diff --git a/plugins/uefi/fu-uefi-common.c b/plugins/uefi/fu-uefi-common.c +index 2e3268aa..4d9d03d7 100644 +--- a/plugins/uefi/fu-uefi-common.c ++++ b/plugins/uefi/fu-uefi-common.c +@@ -246,6 +246,7 @@ gchar * + fu_uefi_get_esp_path_for_os (const gchar *esp_path) + { + const gchar *os_release_id = NULL; ++#ifndef EFI_OS_DIR + g_autoptr(GError) error_local = NULL; + g_autoptr(GHashTable) os_release = fwupd_get_os_release (&error_local); + if (os_release != NULL) { +@@ -255,6 +256,9 @@ fu_uefi_get_esp_path_for_os (const gchar *esp_path) + } + if (os_release_id == NULL) + os_release_id = "unknown"; ++#else ++ os_release_id = EFI_OS_DIR; ++#endif + return g_build_filename (esp_path, "EFI", os_release_id, NULL); + } + +diff --git a/plugins/uefi/meson.build b/plugins/uefi/meson.build +index 140418a8..21d4b6c8 100644 +--- a/plugins/uefi/meson.build ++++ b/plugins/uefi/meson.build +@@ -3,6 +3,11 @@ subdir('efi') + cargs = ['-DG_LOG_DOMAIN="FuPluginUefi"'] + cargs += '-DEFI_APP_LOCATION_BUILD="' + app.full_path() + '"' + ++efi_os_dir = get_option('efi_os_dir') ++if efi_os_dir != '' ++ cargs += '-DEFI_OS_DIR="' + efi_os_dir + '"' ++endif ++ + shared_module('fu_plugin_uefi', + sources : [ + 'fu-plugin-uefi.c', +-- +2.24.1 + diff --git a/SOURCES/secureboot.cer b/SOURCES/secureboot.cer new file mode 100644 index 0000000..4ff8b79 Binary files /dev/null and b/SOURCES/secureboot.cer differ diff --git a/SOURCES/securebootca.cer b/SOURCES/securebootca.cer new file mode 100644 index 0000000..b235400 Binary files /dev/null and b/SOURCES/securebootca.cer differ diff --git a/SPECS/fwupd.spec b/SPECS/fwupd.spec new file mode 100644 index 0000000..abb2f26 --- /dev/null +++ b/SPECS/fwupd.spec @@ -0,0 +1,846 @@ +%global glib2_version 2.45.8 +%global libappstream_version 0.7.4 +%global libgusb_version 0.2.11 +%global libsoup_version 2.51.92 +%global systemd_version 231 +%global json_glib_version 1.1.1 + +%global enable_tests 1 +%global enable_dummy 1 + +# fwupd.efi is only available on these arches +%ifarch x86_64 aarch64 +%global have_uefi 1 +%endif + +# redfish is only available on this arch +%ifarch x86_64 +%global have_redfish 1 +%endif + +# libsmbios is only available on x86 +%ifarch x86_64 +%global have_dell 1 +%endif + +Summary: Firmware update daemon +Name: fwupd +Version: 1.1.4 +Release: 6%{?dist} +License: LGPLv2+ +URL: https://github.com/hughsie/fwupd +Source0: http://people.freedesktop.org/~hughsient/releases/%{name}-%{version}.tar.xz +Source1: securebootca.cer +Source2: secureboot.cer + +# backport from upstream +Patch0: 0001-trivial-Relax-the-timing-requirements-on-the-FuDevic.patch +Patch1: 0001-Relax-the-certificate-time-checks-in-the-self-tests-.patch +Patch2: 0001-Disable-wacomhid-by-default-as-probing-the-device-st.patch +Patch3: 0001-uefi-add-a-new-option-to-specify-the-os-name.patch + +BuildRequires: gettext +BuildRequires: glib2-devel >= %{glib2_version} +BuildRequires: libappstream-glib-devel >= %{libappstream_version} +BuildRequires: libgcab1-devel +BuildRequires: libgudev1-devel +BuildRequires: libgusb-devel >= %{libgusb_version} +BuildRequires: libsoup-devel >= %{libsoup_version} +BuildRequires: polkit-devel >= 0.103 +BuildRequires: sqlite-devel +BuildRequires: gpgme-devel +BuildRequires: systemd >= %{systemd_version} +BuildRequires: libarchive-devel +BuildRequires: gobject-introspection-devel +BuildRequires: gcab +%ifarch %{valgrind_arches} +BuildRequires: valgrind +BuildRequires: valgrind-devel +%endif +BuildRequires: elfutils-libelf-devel +BuildRequires: gtk-doc +BuildRequires: libuuid-devel +BuildRequires: gnutls-devel +BuildRequires: gnutls-utils +BuildRequires: meson +BuildRequires: help2man +BuildRequires: json-glib-devel >= %{json_glib_version} +BuildRequires: vala +BuildRequires: python3-devel +BuildRequires: bash-completion + +# until rh-signing-tools is fixed +BuildRequires: nss-tools + +%if 0%{?have_redfish} +BuildRequires: efivar-devel >= 33 +%endif + +%if 0%{?have_uefi} +BuildRequires: efivar-devel >= 33 +BuildRequires: python3 python3-cairo python3-gobject python3-pillow +BuildRequires: pango-devel +BuildRequires: cairo-devel cairo-gobject-devel +BuildRequires: freetype +BuildRequires: fontconfig +BuildRequires: google-noto-sans-cjk-ttc-fonts +BuildRequires: gnu-efi-devel +BuildRequires: pesign +%endif + +%if 0%{?have_dell} +BuildRequires: efivar-devel >= 33 +BuildRequires: libsmbios-devel >= 2.3.0 +%endif + +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd + +Requires: glib2%{?_isa} >= %{glib2_version} +Requires: libappstream-glib%{?_isa} >= %{libappstream_version} +Requires: libgusb%{?_isa} >= %{libgusb_version} +Requires: libsoup%{?_isa} >= %{libsoup_version} +Requires: bubblewrap + +Obsoletes: fwupd-sign < 0.1.6 +Obsoletes: libebitdo < 0.7.5-3 +Obsoletes: libdfu < 1.0.0 +Obsoletes: fwupd-labels < 1.1.0-1 + +%description +fwupd is a daemon to allow session software to update device firmware. + +%package devel +Summary: Development package for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Obsoletes: libebitdo-devel < 0.7.5-3 +Obsoletes: libdfu-devel < 1.0.0 + +%description devel +Files for development with %{name}. + +%package tests +Summary: Data files for installed tests +BuildArch: noarch +Recommends: python3 + +%description tests +Data files for installed tests. + +%prep +%autosetup -p1 + +sed -ri '1s=^#!/usr/bin/(env )?python3=#!%{__python3}=' \ + libfwupd/generate-version-script.py \ + data/installed-tests/hardware.py \ + po/test-deps \ + po/make-images \ + contrib/ci/generate_debian.py \ + contrib/ci/generate_docker.py \ + contrib/firmware-packager/firmware-packager \ + plugins/dfu/contrib/parse-avrdude-conf.py + +%build + +# allow rh-signing-tools package for RHEL-8 +export RHEL_ALLOW_PYTHON2_FOR_BUILD=1 + +%meson \ + -Dgtkdoc=true \ + -Defi_os_dir=redhat \ +%if 0%{?enable_tests} + -Dtests=true \ +%else + -Dtests=false \ +%endif +%if 0%{?enable_dummy} + -Dplugin_dummy=true \ +%else + -Dplugin_dummy=false \ +%endif + -Dplugin_thunderbolt=true \ +%if 0%{?have_redfish} + -Dplugin_redfish=true \ +%else + -Dplugin_redfish=false \ +%endif +%if 0%{?have_uefi} + -Dplugin_uefi=true \ + -Dplugin_nvme=true \ +%else + -Dplugin_uefi=false \ + -Dplugin_nvme=false \ +%endif +%if 0%{?have_dell} + -Dplugin_dell=true \ + -Dplugin_synaptics=true \ +%else + -Dplugin_dell=false \ + -Dplugin_synaptics=false \ +%endif + -Dman=true + +%meson_build + +%if 0%{?enable_tests} +%check +%meson_test +%endif + +%install +%meson_install + +# sign fwupd.efi loader +%if 0%{?have_uefi} +%ifarch x86_64 +%global efiarch x64 +%endif +%ifarch aarch64 +%global efiarch aa64 +%endif +%global fwup_efi_fn $RPM_BUILD_ROOT%{_libexecdir}/fwupd/efi/fwupd%{efiarch}.efi +%pesign -s -i %{fwup_efi_fn} -o %{fwup_efi_fn}.signed -a %{SOURCE1} -c %{SOURCE2} -n redhatsecureboot301 +%endif + +mkdir -p --mode=0700 $RPM_BUILD_ROOT%{_localstatedir}/lib/fwupd/gnupg + +%find_lang %{name} + +%post +/sbin/ldconfig +%systemd_post fwupd.service + +%preun +%systemd_preun fwupd.service + +%postun +/sbin/ldconfig +%systemd_postun_with_restart fwupd.service +%systemd_postun_with_restart pesign.service + +%files -f %{name}.lang +%doc README.md AUTHORS NEWS +%license COPYING +%config(noreplace)%{_sysconfdir}/fwupd/daemon.conf +%if 0%{?have_uefi} +%config(noreplace)%{_sysconfdir}/fwupd/uefi.conf +%endif +%if 0%{?have_redfish} +%config(noreplace)%{_sysconfdir}/fwupd/redfish.conf +%endif +%dir %{_libexecdir}/fwupd +%{_libexecdir}/fwupd/fwupd +%{_libexecdir}/fwupd/fwupdtool +%if 0%{?have_uefi} +%{_libexecdir}/fwupd/efi/*.efi +%{_libexecdir}/fwupd/efi/*.efi.signed +%{_libexecdir}/fwupd/fwupdate +%endif +%{_bindir}/dfu-tool +%{_bindir}/fwupdmgr +%dir %{_sysconfdir}/fwupd +%dir %{_sysconfdir}/fwupd/remotes.d +%config(noreplace)%{_sysconfdir}/fwupd/remotes.d/fwupd.conf +%config(noreplace)%{_sysconfdir}/fwupd/remotes.d/lvfs.conf +%config(noreplace)%{_sysconfdir}/fwupd/remotes.d/lvfs-testing.conf +%config(noreplace)%{_sysconfdir}/fwupd/remotes.d/vendor.conf +%config(noreplace)%{_sysconfdir}/pki/fwupd +%{_sysconfdir}/pki/fwupd-metadata +%{_sysconfdir}/dbus-1/system.d/org.freedesktop.fwupd.conf +%{_datadir}/bash-completion/completions/fwupdmgr +%{_datadir}/bash-completion/completions/fwupdtool +%{_datadir}/fwupd/metainfo/org.freedesktop.fwupd*.metainfo.xml +%{_datadir}/fwupd/remotes.d/fwupd/metadata.xml +%{_datadir}/fwupd/remotes.d/vendor/firmware/README.md +%{_datadir}/dbus-1/interfaces/org.freedesktop.fwupd.xml +%{_datadir}/polkit-1/actions/org.freedesktop.fwupd.policy +%{_datadir}/polkit-1/rules.d/org.freedesktop.fwupd.rules +%{_datadir}/dbus-1/system-services/org.freedesktop.fwupd.service +%{_datadir}/man/man1/dfu-tool.1.gz +%{_datadir}/man/man1/fwupdmgr.1.gz +%{_datadir}/metainfo/org.freedesktop.fwupd.metainfo.xml +%{_datadir}/fwupd/firmware-packager +%{_unitdir}/fwupd-offline-update.service +%{_unitdir}/fwupd.service +%{_unitdir}/system-update.target.wants/ +%dir %{_localstatedir}/lib/fwupd +%dir %{_datadir}/fwupd/quirks.d +%{_datadir}/fwupd/quirks.d/*.quirk +%{_localstatedir}/lib/fwupd/builder/README.md +%{_libdir}/libfwupd*.so.* +%{_libdir}/girepository-1.0/Fwupd-2.0.typelib +/usr/lib/udev/rules.d/*.rules +%dir %{_libdir}/fwupd-plugins-3 +%{_libdir}/fwupd-plugins-3/libfu_plugin_altos.so +%{_libdir}/fwupd-plugins-3/libfu_plugin_amt.so +%{_libdir}/fwupd-plugins-3/libfu_plugin_colorhug.so +%{_libdir}/fwupd-plugins-3/libfu_plugin_csr.so +%if 0%{?have_dell} +%{_libdir}/fwupd-plugins-3/libfu_plugin_dell.so +%{_libdir}/fwupd-plugins-3/libfu_plugin_dell_esrt.so +%endif +%{_libdir}/fwupd-plugins-3/libfu_plugin_dell_dock.so +%{_libdir}/fwupd-plugins-3/libfu_plugin_dfu.so +%{_libdir}/fwupd-plugins-3/libfu_plugin_ebitdo.so +%{_libdir}/fwupd-plugins-3/libfu_plugin_flashrom.so +%{_libdir}/fwupd-plugins-3/libfu_plugin_nitrokey.so +%if 0%{?have_uefi} +%{_libdir}/fwupd-plugins-3/libfu_plugin_nvme.so +%endif +%if 0%{?have_redfish} +%{_libdir}/fwupd-plugins-3/libfu_plugin_redfish.so +%endif +%{_libdir}/fwupd-plugins-3/libfu_plugin_rts54hid.so +%{_libdir}/fwupd-plugins-3/libfu_plugin_rts54hub.so +%{_libdir}/fwupd-plugins-3/libfu_plugin_steelseries.so +%{_libdir}/fwupd-plugins-3/libfu_plugin_superio.so +%if 0%{?have_dell} +%{_libdir}/fwupd-plugins-3/libfu_plugin_synapticsmst.so +%endif +%if 0%{?enable_dummy} +%{_libdir}/fwupd-plugins-3/libfu_plugin_test.so +%endif +%{_libdir}/fwupd-plugins-3/libfu_plugin_thunderbolt.so +%{_libdir}/fwupd-plugins-3/libfu_plugin_thunderbolt_power.so +%{_libdir}/fwupd-plugins-3/libfu_plugin_udev.so +%if 0%{?have_uefi} +%{_libdir}/fwupd-plugins-3/libfu_plugin_uefi.so +%endif +%{_libdir}/fwupd-plugins-3/libfu_plugin_unifying.so +%{_libdir}/fwupd-plugins-3/libfu_plugin_upower.so +%{_libdir}/fwupd-plugins-3/libfu_plugin_wacomhid.so +%ghost %{_localstatedir}/lib/fwupd/gnupg +%if 0%{?have_uefi} +%{_datadir}/locale/*/LC_IMAGES/fwupd* +%endif + +%files devel +%{_datadir}/gir-1.0/Fwupd-2.0.gir +%{_datadir}/gtk-doc/html/libfwupd +%{_datadir}/vala/vapi +%{_includedir}/fwupd-1 +%{_libdir}/libfwupd*.so +%{_libdir}/pkgconfig/fwupd.pc + +%files tests +%dir %{_datadir}/installed-tests/fwupd +%{_datadir}/installed-tests/fwupd/firmware-example.xml.gz +%{_datadir}/installed-tests/fwupd/firmware-example.xml.gz.asc +%{_datadir}/installed-tests/fwupd/*.test +%{_datadir}/installed-tests/fwupd/*.cab +%{_datadir}/installed-tests/fwupd/*.sh +%{_datadir}/installed-tests/fwupd/*.py* + +%changelog +* Wed Feb 19 2020 Richard Hughes 1.1.4-6 +- Rebuild to get the EFI executable signed with the Red Hat key +- Resolves: #1713033 + +* Thu Feb 13 2020 Richard Hughes 1.1.4-5 +- Backport a patch to specify the EFI os name +- Resolves: #1713033 + +* Fri Nov 29 2019 Richard Hughes 1.1.4-4 +- Rebuild to get the EFI executable signed with the Red Hat key +- Resolves: #1680154 + +* Fri Nov 29 2019 Richard Hughes 1.1.4-3 +- Disable wacomhid by default as probing the device stops the tablet working +- Resolves: #1680154 + +* Mon Nov 25 2019 Richard Hughes 1.1.4-2 +- Do not require python3 in the base package +- Resolves: #1724593 + +* Wed Nov 07 2018 Richard Hughes 1.1.4-1 +- New upstream release +- Use HTTPS_PROXY if set +- Make the dell-dock plugin more robust in several ways +- Adjust EVB board handling +- Resolves: #1647557 + +* Fri Oct 12 2018 Richard Hughes 1.1.3-1 +- New upstream release +- Adds support for an upcoming Dell USB-C dock +- Don't use an obsolete font when building the UEFI images +- Resolves: #1607842 + +* Wed Oct 10 2018 Richard Hughes 1.1.1-11 +- Rebuild to get the EFI executable signed with the Red Hat key +- Related: #1614424 + +* Fri Sep 28 2018 Brendan Reilly 1.1.1-10 +- Rebuild +- Related: #1614424 + +* Thu Sep 20 2018 Brendan Reilly 1.1.1-9 +- Rebuild +- Related: #1614424 + +* Tue Sep 18 2018 Tomas Mlcoch 1.1.1-8 +- Rebuild +- Related: #1614424 + +* Tue Sep 04 2018 Richard Hughes 1.1.1-7 +- Rebuild to get the EFI executable signed with the Red Hat key +- Related: #1614424 + +* Fri Aug 31 2018 Richard Hughes 1.1.1-6 +- Include the certificates for secure boot signing + +* Wed Aug 29 2018 Richard Hughes 1.1.1-5 +- Include the certificates for secure boot signing + +* Tue Aug 23 2018 Richard Hughes 1.1.1-4 +- Rebuild to get the EFI executable signed with the Red Hat key + +* Thu Aug 23 2018 Richard Hughes 1.1.1-3 +- Rebuild to get the EFI executable signed with the Red Hat key + +* Mon Aug 20 2018 Richard Hughes 1.1.1-2 +- Rebuild to get the EFI executable signed with the Red Hat key + +* Mon Aug 13 2018 Richard Hughes 1.1.1-1 +- New upstream release +- Add support for the Synaptics Panamera hardware +- Add validation for Alpine and Titan Ridge +- Allow flashing unifying devices in recovery mode +- Allow running synapticsmst on non-Dell hardware +- Check the ESP for sanity at at startup +- Do not hold hidraw devices open forever +- Fix a potential segfault in smbios data parsing +- Fix encoding the GUID into the capsule EFI variable +- Fix various bugs when reading the thunderbolt version number +- Improve the Redfish plugin to actually work with real hardware +- Reboot synapticsmst devices at the end of flash cycle +- Show the correct title when updating devices + +* Fri Aug 3 2018 Florian Weimer - 1.1.0-3 +- Honor %%{valgrind_arches} + +* Thu Jul 12 2018 Richard Hughes 1.1.0-2 +- Rebuild to get the EFI executable signed with the Red Hat key + +* Wed Jul 11 2018 Richard Hughes 1.1.0-1 +- New upstream release +- Add a initial Redfish support +- Allow devices to assign a plugin from the quirk subsystem +- Detect the EFI system partition location at runtime +- Do not use 8bitdo bootloader commands after a successful flash +- Fix a potential buffer overflow when applying a DFU patch +- Fix downgrading older releases to devices +- Fix flashing devices that require a manual replug +- Fix unifying failure to detach when using a slow host controller +- Merge fwupdate functionality into fwupd +- Support more Wacom tablets + +* Wed Jun 20 2018 Tomas Orsava - 1.0.6-2 +- Switch hardcoded python3 shebangs into the %%{__python3} macro +- Add missing BuildRequires on python3-devel so that %%{__python3} macro is + defined + +* Mon Mar 12 2018 Richard Hughes 1.0.6-1 +- New upstream release +- Add bash completion for fwupdmgr +- Add support for newest Thunderbolt chips +- Allow devices to use the runtime version when in bootloader mode +- Allow overriding ESP mount point via conf file +- Correct handling of unknown Thunderbolt devices +- Correctly detect new remotes that are manually copied +- Delete any old fwupdate capsules and efivars when launching fwupd +- Fix a crash related to when passing device to downgrade in CLI +- Fix Unifying signature writing and parsing for Texas bootloader +- Generate Vala bindings + +* Fri Feb 23 2018 Richard Hughes 1.0.5-2 +- Use the new CDN for metadata. + +* Wed Feb 14 2018 Richard Hughes 1.0.5-1 +- New upstream release +- Be more careful deleting and modifying device history +- Fix crasher with MST flashing +- Fix DFU detach with newer releases of libusb +- Offer to reboot when processing an offline update +- Show the user a URL when they report a known problem +- Stop matching 8bitdo DS4 controller VID/PID +- Support split cabinet archives as produced by Windows Update + +* Wed Feb 07 2018 Fedora Release Engineering - 1.0.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Jan 25 2018 Richard Hughes 1.0.4-1 +- New upstream release +- Add a device name for locked UEFI devices +- Add D-Bus methods to get and modify the history information +- Allow the user to share firmware update success or failure +- Ask the user to refresh metadata when it is very old +- Never add two devices to the daemon with the same ID +- Rescan supported flags when refreshing metadata +- Store firmware update success and failure to a local database + +* Fri Jan 12 2018 Richard Hughes 1.0.3-2 +- Backport a patch that fixes applying firmware updates using gnome-software. + +* Tue Jan 09 2018 Richard Hughes 1.0.3-1 +- New upstream release +- Add a new plugin to add support for CSR "Driverless DFU" +- Add initial SF30/SN30 Pro support +- Block owned Dell TPM updates +- Choose the correct component from provides matches using requirements +- Do not try to parse huge compressed archive files +- Handle Thunderbolt "native" mode +- Use the new functionality in libgcab >= 1.0 to avoid writing temp files + +* Tue Nov 28 2017 Richard Hughes 1.0.2-1 +- New upstream release +- Add a plugin for the Nitrokey Storage device +- Add quirk for AT32UC3B1256 as used in the RubberDucky +- Add support for the original AVR DFU protocol +- Allow different plugins to claim the same device +- Disable the dell plugin if libsmbios fails +- Fix critical warning when more than one remote fails to load +- Ignore useless Thunderbolt device types +- Set environment variables to allow easy per-plugin debugging +- Show a nicer error message if the requirement fails +- Sort the output of GetUpgrades correctly +- Use a SHA1 hash for the internal DeviceID + +* Thu Nov 09 2017 Kalev Lember 1.0.1-3 +- Rebuild against libappstream-glib 0.7.4 + +* Thu Nov 09 2017 Kalev Lember 1.0.1-2 +- Fix libdfu obsoletes versions + +* Thu Nov 09 2017 Richard Hughes 1.0.1-1 +- New upstream release +- Add support for HWID requirements +- Add support for programming various AVR32 and XMEGA parts using DFU +- Add the various DFU quirks for the Jabra Speak devices +- Catch invalid Dell dock component requests +- Correctly output Intel HEX files with > 16bit offset addresses +- Do not try to verify the element write if upload is unsupported +- Fix a double-unref when updating any 8Bitdo device +- Fix uploading large firmware files over DFU +- Format the BCD USB revision numbers correctly +- Guess the DFU transfer size if it is not specified +- Include the reset timeout as wValue to fix some DFU bootloaders +- Move the database of supported devices out into runtime loaded files +- Support devices with truncated DFU interface data +- Use the correct wDetachTimeOut when writing DFU firmware +- Verify devices with legacy VIDs are actually 8Bitdo controllers + +* Mon Oct 09 2017 Richard Hughes 1.0.0-1 +- New upstream release +- This release breaks API and ABI to remove deprecated symbols +- libdfu is now not installed as a shared library +- Add FuDeviceLocker to simplify device open/close lifecycles +- Add functionality to blacklist Dell HW with problems +- Disable the fallback USB plugin +- Do not fail to load the daemon if cached metadata is invalid +- Do not use system-specific infomation for UEFI PCI devices +- Fix various printing issues with the progressbar +- Never fallback to an offline update from client code +- Only set the Dell coldplug delay when we know we need it +- Parse the SMBIOS v2 and v3 DMI tables directly +- Support uploading the UEFI firmware splash image +- Use the intel-wmi-thunderbolt kernel module to force power + +* Fri Sep 01 2017 Richard Hughes 0.9.7-1 +- New upstream release +- Add a FirmwareBaseURI parameter to the remote config +- Add a firmware builder that uses bubblewrap +- Add a python script to create fwupd compatible cab files from .exe files +- Add a thunderbolt plugin for new kernel interface +- Fix an incomplete cipher when using XTEA on data not in 4 byte chunks +- Show a bouncing progress bar if the percentage remains at zero +- Use the new bootloader PIDs for Unifying pico receivers + +* Fri Sep 01 2017 Kalev Lember 0.9.6-2 +- Disable i686 UEFI support now that fwupdate is no longer available there +- Enable aarch64 UEFI support now that all the deps are available there + +* Thu Aug 03 2017 Richard Hughes 0.9.6-1 +- New upstream release +- Add --version option to fwupdmgr +- Display all errors recorded by efi_error tracing +- Don't log a warning when an unknown unifying report is parsed +- Fix a hang on 32 bit machines +- Make sure the unifying percentage completion goes from 0% to 100% +- Support embedded devices with local firmware metadata +- Use new GUsb functionality to fix flashing Unifying devices + +* Wed Aug 02 2017 Fedora Release Engineering - 0.9.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 0.9.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Tue Jul 04 2017 Richard Hughes 0.9.5-1 +- New upstream release +- Add a plugin to get the version of the AMT ME interface +- Allow flashing Unifying devices in bootloader modes +- Filter by Unifying SwId when making HID++2.0 requests +- Fix downgrades when version_lowest is set +- Fix the self tests when running on PPC64 big endian +- Use the UFY DeviceID prefix for Unifying devices + +* Thu Jun 15 2017 Richard Hughes 0.9.4-1 +- New upstream release +- Add installed tests that use the daemon +- Add the ability to restrict firmware to specific vendors +- Compile with newer versions of meson +- Fix a common crash when refreshing metadata +- Generate a images for status messages during system firmware update +- Show progress download when refreshing metadata +- Use the correct type signature in the D-Bus introspection file + +* Wed Jun 07 2017 Richard Hughes 0.9.3-1 +- New upstream release +- Add a 'downgrade' command to fwupdmgr +- Add a 'get-releases' command to fwupdmgr +- Add support for Microsoft HardwareIDs +- Allow downloading metadata from more than just the LVFS +- Allow multiple checksums on devices and releases +- Correctly open Unifying devices with original factory firmware +- Do not expect a Unifying reply when issuing a REBOOT command +- Do not re-download firmware that exists in the cache +- Fix a problem when testing for a Dell system +- Fix flashing new firmware to 8bitdo controllers + +* Tue May 23 2017 Richard Hughes 0.9.2-2 +- Backport several fixes for updating Unifying devices + +* Mon May 22 2017 Richard Hughes 0.9.2-1 +- New upstream release +- Add support for Unifying DFU features +- Do not spew a critial warning when parsing an invalid URI +- Ensure steelseries device is closed if it returns an invalid packet +- Ignore spaces in the Unifying version prefix + +* Thu Apr 20 2017 Richard Hughes 0.8.2-1 +- New upstream release +- Add a config option to allow runtime disabling plugins by name +- Add DFU quirk for OpenPICC and SIMtrace +- Create directories in /var/cache as required +- Fix the Requires lines in the dfu pkg-config file +- Only try to mkdir the localstatedir if we have the right permissions +- Support proxy servers in fwupdmgr + +* Thu Mar 23 2017 Bastien Nocera - 0.8.1-2 ++ fwupd-0.8.1-2 +- Release claimed devices on error, fixes unusable input devices + +* Mon Feb 27 2017 Richard Hughes 0.8.1-1 +- New upstream release +- Adjust systemd confinement restrictions +- Don't initialize libsmbios on unsupported systems +- Fix a crash when enumerating devices + +* Wed Feb 08 2017 Richard Hughes 0.8.0-1 +- New upstream release +- Add support for Intel Thunderbolt devices +- Add support for Logitech Unifying devices +- Add support for Synaptics MST cascades hubs +- Add support for the Altus-Metrum ChaosKey device +- Always close USB devices before error returns +- Return the pending UEFI update when not on AC power +- Use a heuristic for the start address if the firmware has no DfuSe footer +- Use more restrictive settings when running under systemd + +* Sat Dec 10 2016 Igor Gnatenko - 0.7.5-2 +- Rebuild for gpgme 1.18 + +* Wed Oct 19 2016 Richard Hughes 0.7.5-1 +- New upstream release +- Add quirks for HydraBus as it does not have a DFU runtime +- Don't create the UEFI dummy device if the unlock will happen on next boot +- Fix an assert when unlocking the dummy ESRT device +- Fix writing firmware to devices using the ST reference bootloader +- Match the Dell TB16 device + +* Mon Sep 19 2016 Richard Hughes 0.7.4-1 +- New upstream release +- Add a fallback for older appstream-glib releases +- Allow the argument to 'dfu-tool set-release' be major.minor +- Fix a possible crash when uploading firmware files using libdfu +- Fix libfwupd self tests when a host-provided fwupd is not available +- Load the Altos USB descriptor from ELF files +- Show the human-readable version in the 'dfu-tool dump' output +- Support writing the IHEX symbol table +- Write the ELF files with the correct section type + +* Mon Aug 29 2016 Kalev Lember 0.7.3-2 +- Fix an unexpanded macro in the spec file +- Tighten libebitdo-devel requires with the _isa macro +- Add ldconfig scripts for libdfu and libebitdo subpackages + +* Mon Aug 29 2016 Richard Hughes 0.7.3-1 +- New upstream release +- Add Dell TPM and TB15/WD15 support via new Dell provider +- Add initial ELF reading and writing support to libdfu +- Add support for installing multiple devices from a CAB file +- Allow providers to export percentage completion +- Don't fail while checking versions or locked state +- Show a progress notification when installing firmware +- Show the vendor flashing instructions when installing +- Use a private gnupg key store +- Use the correct firmware when installing a composite device + +* Fri Aug 19 2016 Peter Jones - 0.7.2-6 +- Rebuild to get libfwup.so.1 as our fwupdate dep. This should make this the + last time we need to rebuild for this. + +* Wed Aug 17 2016 Peter Jones - 0.7.2-5 +- rebuild against new efivar and fwupdate + +* Fri Aug 12 2016 Adam Williamson - 0.7.2-4 +- rebuild against new efivar and fwupdate + +* Thu Aug 11 2016 Richard Hughes 0.7.2-3 +- Use the new CDN for firmware metadata + +* Thu Jul 14 2016 Kalev Lember - 0.7.2-2 +- Tighten subpackage dependencies + +* Mon Jun 13 2016 Richard Hughes 0.7.2-1 +- New upstream release +- Allow devices to have multiple assigned GUIDs +- Allow metainfo files to match only specific revisions of devices +- Only claim the DFU interface when required +- Only return updatable devices from GetDevices() +- Show the DFU protocol version in 'dfu-tool list' + +* Fri May 13 2016 Richard Hughes 0.7.1-1 +- New upstream release +- Add device-added, device-removed and device-changed signals +- Add for a new device field "Flashes Left" +- Fix a critical warning when restarting the daemon +- Fix BE issues when reading and writing DFU files +- Make the device display name nicer +- Match the AppStream metadata after a device has been added +- Return all update descriptions newer than the installed version +- Set the device description when parsing local firmware files + +* Fri Apr 01 2016 Richard Hughes 0.7.0-1 +- New upstream release +- Add Alienware to the version quirk table +- Add a version plugin for SteelSeries hardware +- Do not return updates that require AC when on battery +- Return the device flags when getting firmware details + +* Mon Mar 14 2016 Richard Hughes 0.6.3-1 +- New upstream release +- Add an unlock method for devices +- Add ESRT enable method into UEFI provider +- Correct the BCD version number for DFU 1.1 +- Ignore the DFU runtime on the DW1820A +- Only read PCI OptionROM firmware when devices are manually unlocked +- Require AC power before scheduling some types of firmware update + +* Fri Feb 12 2016 Richard Hughes 0.6.2-1 +- New upstream release +- Add 'Created' and 'Modified' properties on managed devices +- Fix get-results for UEFI provider +- Support vendor-specific UEFI version encodings + +* Wed Feb 03 2016 Fedora Release Engineering - 0.6.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Jan 19 2016 Richard Hughes 0.6.1-1 +- New upstream release +- Do not misdetect different ColorHug devices +- Only dump the profiling data when run with --verbose + +* Mon Dec 07 2015 Richard Hughes 0.6.0-1 +- New upstream release +- Add support for automatically updating USB DFU-capable devices +- Emit the changed signal after doing an update +- Export the AppStream ID when returning device results +- Use the same device identification string format as Microsoft + +* Wed Nov 18 2015 Richard Hughes 0.5.4-1 +- New upstream release +- Use API available in fwupdate 0.5 to avoid writing temp files +- Fix compile error against fwupdate 0.5 due to API bump + +* Thu Nov 05 2015 Richard Hughes 0.5.3-1 +- New upstream release +- Avoid seeking when reading the file magic during refresh +- Do not assume that the compressed XML data will be NUL terminated +- Use the correct user agent string for fwupdmgr + +* Wed Oct 28 2015 Richard Hughes 0.5.2-1 +- New upstream release +- Add the update description to the GetDetails results +- Clear the in-memory firmware store only after parsing a valid XML file +- Ensure D-Bus remote errors are registered at fwupdmgr startup +- Fix verify-update to produce components with the correct provide values +- Show the dotted-decimal representation of the UEFI version number +- Support cabinet archives files with more than one firmware + +* Mon Sep 21 2015 Richard Hughes 0.5.1-1 +- Update to 0.5.1 to fix a bug in the offline updater + +* Tue Sep 15 2015 Richard Hughes 0.5.0-1 +- New upstream release +- Do not reboot if racing with the PackageKit offline update mechanism + +* Thu Sep 10 2015 Richard Hughes 0.1.6-3 +- Do not merge the existing firmware metadata with the submitted files + +* Thu Sep 10 2015 Kalev Lember 0.1.6-2 +- Own system-update.target.wants directory +- Make fwupd-sign obsoletes versioned + +* Thu Sep 10 2015 Richard Hughes 0.1.6-1 +- New upstream release +- Add application metadata when getting the updates list +- Remove fwsignd, we have the LVFS now + +* Fri Aug 21 2015 Kalev Lember 0.1.5-3 +- Disable fwupd offline update service + +* Wed Aug 19 2015 Richard Hughes 0.1.5-2 +- Use the non-beta download URL prefix + +* Wed Aug 12 2015 Richard Hughes 0.1.5-1 +- New upstream release +- Add a Raspberry Pi firmware provider +- Fix validation of written firmware +- Make parsing the option ROM runtime optional +- Use the AppStream 0.9 firmware specification by default + +* Sat Jul 25 2015 Richard Hughes 0.1.4-1 +- New upstream release +- Actually parse the complete PCI option ROM +- Add a 'fwupdmgr update' command to update all devices to latest versions +- Add a simple signing server that operates on .cab files +- Add a 'verify' command that verifies the cryptographic hash of device firmware + +* Wed Jun 17 2015 Fedora Release Engineering - 0.1.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed Jun 03 2015 Richard Hughes 0.1.3-2 +- Compile with libfwupdate for UEFI firmware support. + +* Thu May 28 2015 Richard Hughes 0.1.3-1 +- New upstream release +- Coldplug the devices before acquiring the well known name +- Run the offline actions using systemd when required +- Support OpenHardware devices using the fwupd vendor extensions + +* Wed Apr 22 2015 Richard Hughes 0.1.2-1 +- New upstream release +- Only allow signed firmware to be upgraded without a password + +* Mon Mar 23 2015 Richard Hughes 0.1.1-1 +- New upstream release +- Add a 'get-updates' command to fwupdmgr +- Add and document the offline-update lifecycle +- Create a libfwupd shared library +- Create runtime directories if they do not exist +- Do not crash when there are no devices to return + +* Mon Mar 16 2015 Richard Hughes 0.1.0-1 +- First release