mirror of
https://git.proxmox.com/git/fwupd
synced 2025-08-03 13:27:59 +00:00
Add release information for locked devices
This commit is contained in:
parent
7ecf0164de
commit
f307775675
14
data/tests/metadata.xml
Normal file
14
data/tests/metadata.xml
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<components version="0.9" origin="fwupd">
|
||||
<component type="firmware">
|
||||
<id>org.fwupd.8330a096d9f1af8567c7374cb8403e1ce9cf3163.device</id>
|
||||
<provides>
|
||||
<firmware type="flashed">2d47f29b-83a2-4f31-a2e8-63474f4d4c2e</firmware>
|
||||
</provides>
|
||||
<releases>
|
||||
<release version="1" timestamp="1456743843">
|
||||
<description><p>Applying will enable UEFI firmware reporting</p></description>
|
||||
</release>
|
||||
</releases>
|
||||
</component>
|
||||
</components>
|
@ -61,6 +61,7 @@ FuDevice *fu_device_new (void);
|
||||
#define fu_device_remove_flag(d,v) fwupd_device_remove_flag(FWUPD_DEVICE(d),v)
|
||||
#define fu_device_has_flag(d,v) fwupd_device_has_flag(FWUPD_DEVICE(d),v)
|
||||
#define fu_device_add_checksum(d,v) fwupd_device_add_checksum(FWUPD_DEVICE(d),v)
|
||||
#define fu_device_add_release(d,v) fwupd_device_add_release(FWUPD_DEVICE(d),v)
|
||||
#define fu_device_add_icon(d,v) fwupd_device_add_icon(FWUPD_DEVICE(d),v)
|
||||
#define fu_device_set_created(d,v) fwupd_device_set_created(FWUPD_DEVICE(d),v)
|
||||
#define fu_device_set_description(d,v) fwupd_device_set_description(FWUPD_DEVICE(d),v)
|
||||
@ -85,6 +86,7 @@ FuDevice *fu_device_new (void);
|
||||
#define fu_device_get_guid_default(d) fwupd_device_get_guid_default(FWUPD_DEVICE(d))
|
||||
#define fu_device_get_icons(d) fwupd_device_get_icons(FWUPD_DEVICE(d))
|
||||
#define fu_device_get_name(d) fwupd_device_get_name(FWUPD_DEVICE(d))
|
||||
#define fu_device_get_summary(d) fwupd_device_get_summary(FWUPD_DEVICE(d))
|
||||
#define fu_device_get_id(d) fwupd_device_get_id(FWUPD_DEVICE(d))
|
||||
#define fu_device_get_plugin(d) fwupd_device_get_plugin(FWUPD_DEVICE(d))
|
||||
#define fu_device_get_update_error(d) fwupd_device_get_update_error(FWUPD_DEVICE(d))
|
||||
|
@ -1641,7 +1641,7 @@ fu_engine_add_component_to_store (FuEngine *self, AsApp *app)
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gboolean
|
||||
fu_engine_load_metadata_from_file (FuEngine *self,
|
||||
const gchar *path,
|
||||
const gchar *remote_id,
|
||||
@ -2896,6 +2896,19 @@ fu_engine_add_device (FuEngine *self, FuDevice *device)
|
||||
}
|
||||
}
|
||||
|
||||
/* if this device is locked get some metadata from AppStream */
|
||||
if (fu_device_has_flag (device, FWUPD_DEVICE_FLAG_LOCKED)) {
|
||||
AsApp *app = fu_engine_store_get_app_by_guids (self->store, device);
|
||||
if (app != NULL) {
|
||||
AsRelease *release = as_app_get_release_default (app);
|
||||
if (release != NULL) {
|
||||
g_autoptr(FwupdRelease) rel = fwupd_release_new ();
|
||||
fu_engine_set_release_from_appstream (self, rel, app, release);
|
||||
fu_device_add_release (device, rel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* adopt any required children, which may or may not already exist */
|
||||
fu_engine_adopt_children (self, device);
|
||||
|
||||
|
@ -126,6 +126,10 @@ gboolean fu_engine_check_requirements (FuEngine *self,
|
||||
FuInstallTask *task,
|
||||
FwupdInstallFlags flags,
|
||||
GError **error);
|
||||
gboolean fu_engine_load_metadata_from_file (FuEngine *self,
|
||||
const gchar *path,
|
||||
const gchar *remote_id,
|
||||
GError **error);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@ -285,6 +285,37 @@ fu_engine_partial_hash_func (void)
|
||||
g_assert (ret);
|
||||
}
|
||||
|
||||
static void
|
||||
fu_engine_device_unlock_func (void)
|
||||
{
|
||||
gboolean ret;
|
||||
g_autofree gchar *filename = NULL;
|
||||
g_autoptr(FuDevice) device = fu_device_new ();
|
||||
g_autoptr(FuEngine) engine = fu_engine_new (FU_APP_FLAGS_NONE);
|
||||
g_autoptr(GError) error = NULL;
|
||||
|
||||
/* load engine to get FuConfig set up */
|
||||
ret = fu_engine_load (engine, &error);
|
||||
g_assert_no_error (error);
|
||||
g_assert (ret);
|
||||
|
||||
/* add the hardcoded 'fwupd' metadata */
|
||||
filename = fu_test_get_filename (TESTDATADIR, "metadata.xml");
|
||||
g_assert (filename != NULL);
|
||||
ret = fu_engine_load_metadata_from_file (engine, filename, NULL, &error);
|
||||
g_assert_no_error (error);
|
||||
g_assert_true (ret);
|
||||
|
||||
/* add a dummy device */
|
||||
fu_device_set_id (device, "UEFI-dummy-dev0");
|
||||
fu_device_add_guid (device, "2d47f29b-83a2-4f31-a2e8-63474f4d4c2e");
|
||||
fu_device_add_flag (device, FWUPD_DEVICE_FLAG_LOCKED);
|
||||
fu_engine_add_device (engine, device);
|
||||
|
||||
/* ensure the metainfo was matched */
|
||||
g_assert_nonnull (fwupd_device_get_release_default (FWUPD_DEVICE (device)));
|
||||
}
|
||||
|
||||
static void
|
||||
fu_engine_require_hwid_func (void)
|
||||
{
|
||||
@ -2212,6 +2243,7 @@ main (int argc, char **argv)
|
||||
g_setenv ("G_MESSAGES_DEBUG", "all", TRUE);
|
||||
g_setenv ("FWUPD_DATADIR", TESTDATADIR_SRC, TRUE);
|
||||
g_setenv ("FWUPD_PLUGINDIR", TESTDATADIR_SRC, TRUE);
|
||||
g_setenv ("FWUPD_SYSCONFDIR", TESTDATADIR_SRC, TRUE);
|
||||
g_setenv ("FWUPD_SYSFSFWDIR", TESTDATADIR_SRC, TRUE);
|
||||
g_setenv ("FWUPD_LOCALSTATEDIR", "/tmp/fwupd-self-test/var", TRUE);
|
||||
|
||||
@ -2228,6 +2260,7 @@ main (int argc, char **argv)
|
||||
g_test_add_func ("/fwupd/device-list", fu_device_list_func);
|
||||
g_test_add_func ("/fwupd/device-list{delay}", fu_device_list_delay_func);
|
||||
g_test_add_func ("/fwupd/device-list{compatible}", fu_device_list_compatible_func);
|
||||
g_test_add_func ("/fwupd/engine{device-unlock}", fu_engine_device_unlock_func);
|
||||
g_test_add_func ("/fwupd/engine{history-success}", fu_engine_history_func);
|
||||
g_test_add_func ("/fwupd/engine{history-error}", fu_engine_history_error_func);
|
||||
g_test_add_func ("/fwupd/engine{require-hwid}", fu_engine_require_hwid_func);
|
||||
|
Loading…
Reference in New Issue
Block a user