mirror of
https://git.proxmox.com/git/fwupd
synced 2025-08-05 08:28:20 +00:00
trivial: Move the history database writing to fu_engine_install()
This commit is contained in:
parent
c6c312f267
commit
afca203839
100
src/fu-engine.c
100
src/fu-engine.c
@ -1331,6 +1331,7 @@ fu_engine_install (FuEngine *self,
|
||||
{
|
||||
XbNode *component = fu_install_task_get_component (task);
|
||||
FuDevice *device = fu_install_task_get_device (task);
|
||||
FuPlugin *plugin;
|
||||
GBytes *blob_fw;
|
||||
const gchar *tmp = NULL;
|
||||
g_autofree gchar *release_key = NULL;
|
||||
@ -1407,8 +1408,62 @@ fu_engine_install (FuEngine *self,
|
||||
blob_fw2 = g_bytes_ref (blob_fw);
|
||||
}
|
||||
|
||||
/* install firmware blob */
|
||||
/* get the plugin */
|
||||
plugin = fu_plugin_list_find_by_name (self->plugin_list,
|
||||
fu_device_get_plugin (device),
|
||||
error);
|
||||
if (plugin == NULL)
|
||||
return FALSE;
|
||||
|
||||
/* add device to database */
|
||||
version_rel = fu_engine_get_release_version (self, component, rel);
|
||||
if ((flags & FWUPD_INSTALL_FLAG_NO_HISTORY) == 0) {
|
||||
g_autoptr(FwupdRelease) release_history = fwupd_release_new ();
|
||||
g_autoptr(GHashTable) metadata_hash = NULL;
|
||||
g_autoptr(GHashTable) os_release = NULL;
|
||||
|
||||
/* add release data from os-release */
|
||||
os_release = fwupd_get_os_release (error);
|
||||
if (os_release == NULL)
|
||||
return FALSE;
|
||||
|
||||
/* build the version metadata */
|
||||
metadata_hash = fu_engine_get_report_metadata (self);
|
||||
fwupd_release_add_metadata (release_history, metadata_hash);
|
||||
fwupd_release_add_metadata (release_history,
|
||||
fu_plugin_get_report_metadata (plugin));
|
||||
tmp = xb_node_query_text (component,
|
||||
"releases/release/checksum[@target='container']",
|
||||
NULL);
|
||||
if (tmp != NULL) {
|
||||
fwupd_release_add_metadata_item (release_history,
|
||||
"DistroId", tmp);
|
||||
}
|
||||
fwupd_release_add_checksum (release_history, tmp);
|
||||
fwupd_release_set_version (release_history, version_rel);
|
||||
fu_device_set_update_state (device, FWUPD_UPDATE_STATE_FAILED);
|
||||
|
||||
/* add details from os-release as metadata */
|
||||
tmp = g_hash_table_lookup (os_release, "ID");
|
||||
if (tmp != NULL) {
|
||||
fwupd_release_add_metadata_item (release_history,
|
||||
"DistroId", tmp);
|
||||
}
|
||||
tmp = g_hash_table_lookup (os_release, "VERSION_ID");
|
||||
if (tmp != NULL) {
|
||||
fwupd_release_add_metadata_item (release_history,
|
||||
"DistroVersion", tmp);
|
||||
}
|
||||
tmp = g_hash_table_lookup (os_release, "VARIANT_ID");
|
||||
if (tmp != NULL) {
|
||||
fwupd_release_add_metadata_item (release_history,
|
||||
"DistroVariant", tmp);
|
||||
}
|
||||
if (!fu_history_add_device (self->history, device, release_history, error))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* install firmware blob */
|
||||
return fu_engine_install_blob (self, device, blob_cab, blob_fw2,
|
||||
version_rel, flags, error);
|
||||
}
|
||||
@ -1476,17 +1531,9 @@ fu_engine_install_blob (FuEngine *self,
|
||||
g_autofree gchar *device_id_orig = NULL;
|
||||
g_autofree gchar *version_orig = NULL;
|
||||
g_autoptr(FuDevice) device = g_object_ref (device_orig);
|
||||
g_autoptr(FwupdRelease) release_history = fwupd_release_new ();
|
||||
g_autoptr(GError) error_local = NULL;
|
||||
g_autoptr(GHashTable) metadata_hash = NULL;
|
||||
g_autoptr(GHashTable) os_release = NULL;
|
||||
g_autoptr(GTimer) timer = g_timer_new ();
|
||||
|
||||
/* add release data from os-release */
|
||||
os_release = fwupd_get_os_release (error);
|
||||
if (os_release == NULL)
|
||||
return FALSE;
|
||||
|
||||
/* test the firmware is not an empty blob */
|
||||
if (g_bytes_get_size (blob_fw2) == 0) {
|
||||
g_set_error (error,
|
||||
@ -1535,41 +1582,6 @@ fu_engine_install_blob (FuEngine *self,
|
||||
/* mark this as modified even if we actually fail to do the update */
|
||||
fu_device_set_modified (device, (guint64) g_get_real_time () / G_USEC_PER_SEC);
|
||||
|
||||
/* build the version metadata */
|
||||
metadata_hash = fu_engine_get_report_metadata (self);
|
||||
fwupd_release_add_metadata (release_history, metadata_hash);
|
||||
fwupd_release_add_metadata (release_history,
|
||||
fu_plugin_get_report_metadata (plugin));
|
||||
|
||||
/* add device to database */
|
||||
if ((flags & FWUPD_INSTALL_FLAG_NO_HISTORY) == 0) {
|
||||
const gchar *tmp;
|
||||
g_autofree gchar *checksum = NULL;
|
||||
checksum = g_compute_checksum_for_bytes (G_CHECKSUM_SHA1, blob_cab);
|
||||
fwupd_release_set_version (release_history, version);
|
||||
fwupd_release_add_checksum (release_history, checksum);
|
||||
fu_device_set_update_state (device, FWUPD_UPDATE_STATE_FAILED);
|
||||
|
||||
/* add details from os-release as metadata */
|
||||
tmp = g_hash_table_lookup (os_release, "ID");
|
||||
if (tmp != NULL) {
|
||||
fwupd_release_add_metadata_item (release_history,
|
||||
"DistroId", tmp);
|
||||
}
|
||||
tmp = g_hash_table_lookup (os_release, "VERSION_ID");
|
||||
if (tmp != NULL) {
|
||||
fwupd_release_add_metadata_item (release_history,
|
||||
"DistroVersion", tmp);
|
||||
}
|
||||
tmp = g_hash_table_lookup (os_release, "VARIANT_ID");
|
||||
if (tmp != NULL) {
|
||||
fwupd_release_add_metadata_item (release_history,
|
||||
"DistroVariant", tmp);
|
||||
}
|
||||
if (!fu_history_add_device (self->history, device, release_history, error))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* do the update */
|
||||
if (!fu_plugin_runner_update_detach (plugin, device, &error_local)) {
|
||||
fu_device_set_update_state (device, FWUPD_UPDATE_STATE_FAILED);
|
||||
|
Loading…
Reference in New Issue
Block a user