diff options
author | Richard Hughes <richard@hughsie.com> | 2015-08-10 13:54:49 +0100 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2015-08-10 18:04:19 +0100 |
commit | 93f1a4b5ab2e6d80d66027cd80edef4dabe45b24 (patch) | |
tree | 3bcd724792e600fb629fc605ed166b0f9eb08e74 /libappstream-builder/plugins/asb-plugin-appdata.c | |
parent | 4695568085f77599355804fa79dfb9ae7e12a182 (diff) | |
download | appstream-glib-93f1a4b5ab2e6d80d66027cd80edef4dabe45b24.tar.gz |
Add support for the flashed firmware provide kind
This allows us to have an ID that isn't tied to the GUID, and also allows us to
have one component that targets more than one ESRT GUID. This requires changing
the matching logic better, but should match what makes it into AppStream 0.9
Diffstat (limited to 'libappstream-builder/plugins/asb-plugin-appdata.c')
-rw-r--r-- | libappstream-builder/plugins/asb-plugin-appdata.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/libappstream-builder/plugins/asb-plugin-appdata.c b/libappstream-builder/plugins/asb-plugin-appdata.c index cfe57b9..15a6974 100644 --- a/libappstream-builder/plugins/asb-plugin-appdata.c +++ b/libappstream-builder/plugins/asb-plugin-appdata.c @@ -126,6 +126,28 @@ asb_plugin_process_filename (AsbPlugin *plugin, as_app_get_id (AS_APP (app))); } + /* overwrite the app ID with the metadata one for firmware */ + if (as_app_get_id_kind (appdata) == AS_ID_KIND_FIRMWARE) { + old = as_app_get_id (AS_APP (app)); + if (old != NULL) { + asb_package_log (asb_app_get_package (app), + ASB_PACKAGE_LOG_LEVEL_DEBUG, + "renaming ID %s -> %s", + old, as_app_get_id (AS_APP (appdata))); + } + as_app_set_id (AS_APP (app), as_app_get_id (AS_APP (appdata))); + } + + /* add provide if missing */ + if (as_app_get_id_kind (appdata) == AS_ID_KIND_FIRMWARE && + as_utils_guid_is_valid (tmp)) { + _cleanup_object_unref_ AsProvide *provide = NULL; + provide = as_provide_new (); + as_provide_set_kind (provide, AS_PROVIDE_KIND_FIRMWARE_FLASHED); + as_provide_set_value (provide, tmp); + as_app_add_provide (AS_APP (app), provide); + } + /* check license */ tmp = as_app_get_metadata_license (appdata); if (tmp == NULL) { @@ -252,6 +274,11 @@ asb_plugin_process_filename (AsbPlugin *plugin, as_app_add_metadata (AS_APP (app), key, tmp); } + /* add developer name */ + tmp = as_app_get_developer_name (AS_APP (appdata), NULL); + if (tmp != NULL) + as_app_set_developer_name (AS_APP (app), NULL, tmp); + /* add releases */ array = as_app_get_releases (appdata); for (i = 0; i < array->len; i++) { @@ -259,6 +286,13 @@ asb_plugin_process_filename (AsbPlugin *plugin, as_app_add_release (AS_APP (app), rel); } + /* add provides */ + array = as_app_get_provides (appdata); + for (i = 0; i < array->len; i++) { + AsProvide *pr = g_ptr_array_index (array, i); + as_app_add_provide (AS_APP (app), pr); + } + /* log updateinfo */ tmp = as_app_get_update_contact (AS_APP (appdata)); if (tmp != NULL) { |