Date: Sat, 6 Jul 2013 23:59:27 GMT From: mattbw@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r254265 - in soc2013/mattbw/backend: . actions Message-ID: <201307062359.r66NxROm039636@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: mattbw Date: Sat Jul 6 23:59:27 2013 New Revision: 254265 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=254265 Log: major cleanup and removal of dummy stubs Modified: soc2013/mattbw/backend/Makefile soc2013/mattbw/backend/actions/get-files.c soc2013/mattbw/backend/actions/get-repo-list.c soc2013/mattbw/backend/actions/install-packages.c soc2013/mattbw/backend/pk-backend-pkgng.c soc2013/mattbw/backend/query.c Modified: soc2013/mattbw/backend/Makefile ============================================================================== --- soc2013/mattbw/backend/Makefile Sat Jul 6 22:51:56 2013 (r254264) +++ soc2013/mattbw/backend/Makefile Sat Jul 6 23:59:27 2013 (r254265) @@ -15,6 +15,7 @@ actions/get-details.c \ actions/get-files.c \ actions/get-repo-list.c \ + actions/install-files.c \ actions/install-packages.c LIBDIR= /usr/local/lib/packagekit-backend Modified: soc2013/mattbw/backend/actions/get-files.c ============================================================================== --- soc2013/mattbw/backend/actions/get-files.c Sat Jul 6 22:51:56 2013 (r254264) +++ soc2013/mattbw/backend/actions/get-files.c Sat Jul 6 23:59:27 2013 (r254265) @@ -44,6 +44,7 @@ get_files_thread(PkBackend *backend) { + (void)pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY); return query_match_id_to_emitter(backend, LOAD_FLAGS, emit); } Modified: soc2013/mattbw/backend/actions/get-repo-list.c ============================================================================== --- soc2013/mattbw/backend/actions/get-repo-list.c Sat Jul 6 22:51:56 2013 (r254264) +++ soc2013/mattbw/backend/actions/get-repo-list.c Sat Jul 6 23:59:27 2013 (r254265) @@ -37,11 +37,17 @@ repo = NULL; + (void)pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY); + (void)pk_backend_set_percentage(backend, + PK_BACKEND_PERCENTAGE_INVALID); + for (HASH_FOR(err, pkg_repos, &repo)) pk_backend_repo_detail(backend, pkg_repo_ident(repo), pkg_repo_name(repo), pkg_repo_enabled(repo)); + (void)pk_backend_finished(backend); + return (err == EPKG_END ? TRUE : FALSE); } Modified: soc2013/mattbw/backend/actions/install-packages.c ============================================================================== --- soc2013/mattbw/backend/actions/install-packages.c Sat Jul 6 22:51:56 2013 (r254264) +++ soc2013/mattbw/backend/actions/install-packages.c Sat Jul 6 23:59:27 2013 (r254265) @@ -45,6 +45,7 @@ install_packages_thread(PkBackend *backend) { + pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY); return query_match_id_to_job(backend, PKG_JOBS_INSTALL, job); } Modified: soc2013/mattbw/backend/pk-backend-pkgng.c ============================================================================== --- soc2013/mattbw/backend/pk-backend-pkgng.c Sat Jul 6 22:51:56 2013 (r254264) +++ soc2013/mattbw/backend/pk-backend-pkgng.c Sat Jul 6 23:59:27 2013 (r254265) @@ -23,8 +23,6 @@ #include <glib.h> #include <string.h> #include <stdlib.h> -#include <gio/gio.h> -#include <gio/gunixsocketaddress.h> #include "pk-backend.h" #include "pkg.h" @@ -33,23 +31,6 @@ #include "groups.h" /* available_groups */ #include "actions/actions.h" /* Actions threads */ -/* static bodges */ -static guint _progress_percentage = 0; -static gulong _signal_timeout = 0; -static gchar **_package_ids; -static gchar **_values; -static guint _package_current = 0; -static gboolean _updated_gtkhtml = FALSE; -static gboolean _updated_kernel = FALSE; -static gboolean _updated_powertop = FALSE; -static gboolean _has_signature = FALSE; -static gboolean _use_eula = FALSE; -static gboolean _use_gpg = FALSE; -static gboolean _use_distro_upgrade = FALSE; -static PkBitfield _filters = 0; -static GSocket *_socket = NULL; -static guint _socket_listen_id = 0; - /** * pk_backend_initialize: */ @@ -58,8 +39,6 @@ { int err; - _progress_percentage = 0; - err = EPKG_OK; if (!pkg_initialized()) @@ -81,1190 +60,120 @@ pkg_shutdown(); } -/* - * Return all groups available from this backend. - * - * The business end of this function is in "groups.c". - */ -PkBitfield -pk_backend_get_groups(PkBackend *backend) -{ - - INTENTIONALLY_IGNORE(backend); - return available_groups(); -} - -/** - * pk_backend_get_filters: - */ -PkBitfield -pk_backend_get_filters(PkBackend *backend) +gchar * +pk_backend_get_description(PkBackend *backend) { INTENTIONALLY_IGNORE(backend); - return pk_bitfield_from_enums(PK_FILTER_ENUM_GUI, - PK_FILTER_ENUM_INSTALLED, - PK_FILTER_ENUM_DEVELOPMENT, - -1); + return g_strdup("pkgng"); } -/** - * pk_backend_get_mime_types: - */ gchar * -pk_backend_get_mime_types(PkBackend *backend) +pk_backend_get_author(PkBackend *backend) { INTENTIONALLY_IGNORE(backend); - return g_strdup("application/x-rpm;application/x-deb"); + return g_strdup("Matt Windsor <mattbw@FreeBSD.org>"); } -/* - * To implement: - * - * - pk_backend_cancel - */ - /** - * pk_backend_get_depends: + * ACTION STUBS + * + * In roughly alphabetical order; usually the thread code corresponding to these + * can be found in actions/name_of_action.c. + * + * If an action is missing here and not otherwise mentioned, it is probably + * awaiting implementation. + * + * Not supported due to unavailable pkgng features: + * - pk_backend_get_files on a non-installed package + * - pk_backend_repo_enable + * - pk_backend_repo_set_data */ -void -pk_backend_get_depends(PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive) -{ - INTENTIONALLY_IGNORE(filters); - INTENTIONALLY_IGNORE(recursive); - - pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY); - - if (g_strcmp0(package_ids[0], "scribus;1.3.4-1.fc8;i386;fedora") == 0) { - pk_backend_package(backend, PK_INFO_ENUM_AVAILABLE, - "scribus-clipart;1.3.4-1.fc8;i386;fedora", "Clipart for scribus"); - } else { - pk_backend_package(backend, PK_INFO_ENUM_INSTALLED, - "glib2;2.14.0;i386;fedora", "The GLib library"); - pk_backend_package(backend, PK_INFO_ENUM_AVAILABLE, - "gtk2;gtk2-2.11.6-6.fc8;i386;fedora", "GTK+ Libraries for GIMP"); - } - pk_backend_finished(backend); -} -/* - * Spawns a thread to get the details of the package IDs requested. The - * thread code proper is in "get-details.c". - */ void pk_backend_get_details(PkBackend *backend, gchar **package_ids) { - INTENTIONALLY_IGNORE(package_ids); /* can be retrieved from - * backend */ - - pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY); - pk_backend_set_percentage(backend, PK_BACKEND_PERCENTAGE_INVALID); + INTENTIONALLY_IGNORE(package_ids); /* retrieved from backend */ pk_backend_thread_create(backend, get_details_thread); } -/** - * pk_backend_get_distro_upgrades: - */ -void -pk_backend_get_distro_upgrades(PkBackend *backend) -{ - pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY); - if (!_use_distro_upgrade) - goto out; - pk_backend_distro_upgrade(backend, PK_DISTRO_UPGRADE_ENUM_STABLE, - "fedora-9", "Fedora 9"); - pk_backend_distro_upgrade(backend, PK_DISTRO_UPGRADE_ENUM_UNSTABLE, - "fedora-10-rc1", "Fedora 10 RC1"); -out: - pk_backend_finished(backend); -} - -/** - * pk_backend_get_files: - */ void pk_backend_get_files(PkBackend *backend, gchar **package_ids) { - INTENTIONALLY_IGNORE(package_ids); /* can be retrieved from - * backend */ - - pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY); - pk_backend_set_percentage(backend, PK_BACKEND_PERCENTAGE_INVALID); + INTENTIONALLY_IGNORE(package_ids); /* retrieved from backend */ pk_backend_thread_create(backend, get_files_thread); } -/** - * pk_backend_get_requires: - */ -void -pk_backend_get_requires(PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive) -{ - INTENTIONALLY_IGNORE(filters); - INTENTIONALLY_IGNORE(package_ids); - INTENTIONALLY_IGNORE(recursive); - - pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY); - pk_backend_package(backend, PK_INFO_ENUM_INSTALLED, - "glib2;2.14.0;i386;fedora", "The GLib library"); - pk_backend_package(backend, PK_INFO_ENUM_INSTALLED, - "gtk2;gtk2-2.11.6-6.fc8;i386;fedora", "GTK+ Libraries for GIMP"); - pk_backend_finished(backend); -} - -/** - * pk_backend_get_update_detail_timeout: - **/ -static gboolean -pk_backend_get_update_detail_timeout(gpointer data) -{ - guint i; - guint len; - const gchar *package_id; - PkBackend *backend = (PkBackend *)data; - const gchar *changelog; - - /* dummy */ - changelog = "**Thu Mar 12 2009** Adam Jackson <ajax@redhat.com> 1.6.0-13\n" - "- xselinux-1.6.0-selinux-nlfd.patch: Acquire the netlink socket from selinux,\n" - " check it ourselves rather than having libselinux bang on it all the time.\n" - "\n" - "**Wed Mar 11 2009** Adam Jackson <ajax@redhat.com> 1.6.0-10\n" - "- xserver-1.6.0-selinux-less.patch: Don't init selinux unless the policy\n" - " says to be an object manager.\n" - "\n" - "**Wed Mar 11 2009** Adam Jackson <ajax@redhat.com> 1.6.0-11\n" - "- xserver-1.6.0-less-acpi-brokenness.patch: Don't build the (broken)\n" - " ACPI code.\n" - "\n" - "**Wed Mar 11 2009** Adam Jackson <ajax@redhat.com> 1.6.0-12\n" - "- Requires: pixman >= 0.14.0\n" - "\n" - "**Fri Mar 6 2009** Adam Jackson <ajax@redhat.com> 1.6.0-8\n" - "- xserver-1.6.0-primary.patch: Really, only look at VGA devices. (#488869)\n"; - - /* each one has a different detail for testing */ - pk_backend_set_percentage(backend, 0); - len = g_strv_length(_package_ids); - for (i = 0; i < len; i++) { - package_id = _package_ids[i]; - if (g_strcmp0(package_id, "powertop;1.8-1.fc8;i386;fedora") == 0) { - pk_backend_update_detail(backend, package_id, - "powertop;1.7-1.fc8;i386;installed", "", - "http://www.distro-update.org/page?moo;Bugfix release for powertop", - "http://bgzilla.fd.org/result.php?#12344;Freedesktop Bugzilla #12344", - "", PK_RESTART_ENUM_NONE, "Update to newest upstream source", - changelog, PK_UPDATE_STATE_ENUM_STABLE, "2009-11-17T09:19:00", "2009-11-19T09:19:00"); - } else if (g_strcmp0(package_id, "kernel;2.6.23-0.115.rc3.git1.fc8;i386;installed") == 0) { - pk_backend_update_detail(backend, package_id, - "kernel;2.6.22-0.104.rc3.git6.fc8;i386;installed" - PK_PACKAGE_IDS_DELIM - "kernel;2.6.22-0.105.rc3.git7.fc8;i386;installed", "", - "http://www.distro-update.org/page?moo;Bugfix release for kernel", - "http://bgzilla.fd.org/result.php?#12344;Freedesktop Bugzilla #12344;" - "http://bgzilla.gnome.org/result.php?#9876;GNOME Bugzilla #9876", - "http://nvd.nist.gov/nvd.cfm?cvename=CVE-2007-3381;CVE-2007-3381", - PK_RESTART_ENUM_SYSTEM, - "Update to newest upstream version.\n" - "* This should fix many driver bugs when using nouveau\n" - " * This also introduces the new `frobnicator` driver for *vibrating* rabbit hardware.", - changelog, PK_UPDATE_STATE_ENUM_UNSTABLE, "2008-06-28T09:19:00", NULL); - } else if (g_strcmp0(package_id, "gtkhtml2;2.19.1-4.fc8;i386;fedora") == 0) { - pk_backend_update_detail(backend, package_id, - "gtkhtml2;2.18.1-22.fc8;i386;installed", "", - "http://www.distro-update.org/page?moo;Bugfix release for gtkhtml", - "http://bgzilla.gnome.org/result.php?#9876;GNOME Bugzilla #9876", - NULL, PK_RESTART_ENUM_SESSION, - "Update to latest *whizz* **bang** version\n" - "* support this new thing\n" - "* something else\n" - "- and that new thing", - changelog, PK_UPDATE_STATE_ENUM_UNKNOWN, "2008-07-25T09:19:00", NULL); - - } else if (g_strcmp0(package_id, "vino;2.24.2.fc9;i386;fedora") == 0) { - pk_backend_update_detail(backend, package_id, - "vino;2.24.1.fc9;i386;fedora", "", - "", "", NULL, PK_RESTART_ENUM_NONE, - "Cannot get update as update conflics with vncviewer", - changelog, PK_UPDATE_STATE_ENUM_UNKNOWN, "2008-07-25", NULL); - } else { - /* signal to UI */ - pk_backend_error_code(backend, PK_ERROR_ENUM_INTERNAL_ERROR, "the package update detail was not found for %s", package_id); - } - } - pk_backend_set_percentage(backend, 100); - pk_backend_finished(backend); - _signal_timeout = 0; - return FALSE; -} - -/** - * pk_backend_get_update_detail: - */ -void -pk_backend_get_update_detail(PkBackend *backend, gchar **package_ids) -{ - pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY); - _package_ids = package_ids; - _signal_timeout = g_timeout_add(500, pk_backend_get_update_detail_timeout, backend); -} - -/** - * pk_backend_get_updates_timeout: - **/ -static gboolean -pk_backend_get_updates_timeout(gpointer data) -{ - PkBackend *backend = (PkBackend *)data; - - if (!_updated_powertop) { - pk_backend_package(backend, PK_INFO_ENUM_NORMAL, - "powertop;1.8-1.fc8;i386;fedora", - "Power consumption monitor"); - } - if (!_updated_kernel) { - pk_backend_package(backend, PK_INFO_ENUM_BUGFIX, - "kernel;2.6.23-0.115.rc3.git1.fc8;i386;installed", - "The Linux kernel (the core of the Linux operating system)"); - } - if (!_updated_gtkhtml) { - pk_backend_package(backend, PK_INFO_ENUM_SECURITY, - "gtkhtml2;2.19.1-4.fc8;i386;fedora", - "An HTML widget for GTK+ 2.0"); - } - pk_backend_finished(backend); - _signal_timeout = 0; - return FALSE; -} - -/** - * pk_backend_get_updates: - */ -void -pk_backend_get_updates(PkBackend *backend, PkBitfield filters) -{ - INTENTIONALLY_IGNORE(filters); - - pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY); - pk_backend_set_percentage(backend, PK_BACKEND_PERCENTAGE_INVALID); - /* check network state */ - if (!pk_backend_is_online(backend)) { - pk_backend_error_code(backend, PK_ERROR_ENUM_NO_NETWORK, "Cannot check when offline"); - pk_backend_finished(backend); - return; - } - _signal_timeout = g_timeout_add(1000, pk_backend_get_updates_timeout, backend); -} - -/** - * pk_backend_install_packages: - */ -void -pk_backend_install_packages(PkBackend *backend, gboolean only_trusted, gchar **package_ids) -{ - INTENTIONALLY_IGNORE(only_trusted); - INTENTIONALLY_IGNORE(package_ids); - - pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY); - pk_backend_set_percentage(backend, PK_BACKEND_PERCENTAGE_INVALID); - - pk_backend_thread_create(backend, install_packages_thread); -} - -/** - * pk_backend_install_signature: - */ -void -pk_backend_install_signature(PkBackend *backend, PkSigTypeEnum type, - const gchar *key_id, const gchar *package_id) -{ - pk_backend_set_status(backend, PK_STATUS_ENUM_INSTALL); - if (type == PK_SIGTYPE_ENUM_GPG && - /* egg_strequal (package_id, "vips-doc;7.12.4-2.fc8;noarch;linva") && */ - g_strcmp0(key_id, "BB7576AC") == 0) { - g_debug("installed signature %s for %s", key_id, package_id); - _has_signature = TRUE; - } else { - pk_backend_error_code(backend, PK_ERROR_ENUM_GPG_FAILURE, - "GPG key %s not recognised for package_id %s", - key_id, package_id); - } - pk_backend_finished(backend); -} - -/** - * pk_backend_refresh_cache_timeout: - */ -static gboolean -pk_backend_install_files_timeout(gpointer data) -{ - PkBackend *backend = (PkBackend *)data; - pk_backend_finished(backend); - return FALSE; -} - -/** - * pk_backend_install_files: - */ -void -pk_backend_install_files(PkBackend *backend, gboolean only_trusted, gchar **full_paths) -{ - INTENTIONALLY_IGNORE(only_trusted); - INTENTIONALLY_IGNORE(full_paths); - - pk_backend_set_status(backend, PK_STATUS_ENUM_INSTALL); - pk_backend_set_percentage(backend, 101); - _signal_timeout = g_timeout_add(2000, pk_backend_install_files_timeout, backend); -} - -/** - * pk_backend_refresh_cache_timeout: - */ -static gboolean -pk_backend_refresh_cache_timeout(gpointer data) -{ - PkBackend *backend = (PkBackend *)data; - if (_progress_percentage == 100) { - pk_backend_finished(backend); - return FALSE; - } - if (_progress_percentage == 80) - pk_backend_set_allow_cancel(backend, FALSE); - _progress_percentage += 10; - pk_backend_set_percentage(backend, _progress_percentage); - return TRUE; -} - -/** - * pk_backend_refresh_cache: - */ -void -pk_backend_refresh_cache(PkBackend *backend, gboolean force) -{ - INTENTIONALLY_IGNORE(force); - - _progress_percentage = 0; - - /* reset */ - _updated_gtkhtml = FALSE; - _updated_kernel = FALSE; - _updated_powertop = FALSE; - - pk_backend_set_allow_cancel(backend, TRUE); - pk_backend_set_status(backend, PK_STATUS_ENUM_REFRESH_CACHE); - _signal_timeout = g_timeout_add(500, pk_backend_refresh_cache_timeout, backend); -} - -/** - * pk_backend_resolve_timeout: - */ -static gboolean -pk_backend_resolve_timeout(gpointer data) -{ - PkBackend *backend = (PkBackend *)data; - guint i; - guint len; - gchar **packages = _package_ids; - - pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY); - pk_backend_set_percentage(backend, 0); - - /* each one has a different detail for testing */ - len = g_strv_length(packages); - for (i = 0; i < len; i++) { - if (g_strcmp0(packages[i], "vips-doc") == 0 || g_strcmp0(packages[i], "vips-doc;7.12.4-2.fc8;noarch;linva") == 0) { - if (!pk_bitfield_contain(_filters, PK_FILTER_ENUM_INSTALLED)) { - pk_backend_package(backend, PK_INFO_ENUM_AVAILABLE, - "vips-doc;7.12.4-2.fc8;noarch;linva", "The vips documentation package."); - } - } else if (g_strcmp0(packages[i], "glib2") == 0 || g_strcmp0(packages[i], "glib2;2.14.0;i386;fedora") == 0) { - if (!pk_bitfield_contain(_filters, PK_FILTER_ENUM_NOT_INSTALLED)) { - pk_backend_package(backend, PK_INFO_ENUM_INSTALLED, - "glib2;2.14.0;i386;fedora", "The GLib library"); - } - } else if (g_strcmp0(packages[i], "powertop") == 0 || g_strcmp0(packages[i], "powertop;1.8-1.fc8;i386;fedora") == 0) - pk_backend_package(backend, PK_INFO_ENUM_INSTALLED, - "powertop;1.8-1.fc8;i386;fedora", "Power consumption monitor"); - else if (g_strcmp0(packages[i], "kernel") == 0 || g_strcmp0(packages[i], "kernel;2.6.23-0.115.rc3.git1.fc8;i386;installed") == 0) - pk_backend_package(backend, PK_INFO_ENUM_INSTALLED, - "kernel;2.6.23-0.115.rc3.git1.fc8;i386;installed", "The Linux kernel (the core of the Linux operating system)"); - else if (g_strcmp0(packages[i], "gtkhtml2") == 0 || g_strcmp0(packages[i], "gtkhtml2;2.19.1-4.fc8;i386;fedora") == 0) - pk_backend_package(backend, PK_INFO_ENUM_INSTALLED, - "gtkhtml2;2.19.1-4.fc8;i386;fedora", "An HTML widget for GTK+ 2.0"); - } - pk_backend_set_percentage(backend, 100); - pk_backend_finished(backend); - - /* never repeat */ - return FALSE; -} - -/** - * pk_backend_resolve: - */ -void -pk_backend_resolve(PkBackend *backend, PkBitfield filters, gchar **packages) -{ - _filters = filters; - _package_ids = packages; - _signal_timeout = g_timeout_add(20, pk_backend_resolve_timeout, backend); -} - -/** - * pk_backend_rollback_timeout: - */ -static gboolean -pk_backend_rollback_timeout(gpointer data) -{ - PkBackend *backend = (PkBackend *)data; - if (_progress_percentage == 0) { - _updated_gtkhtml = FALSE; - _updated_kernel = FALSE; - _updated_powertop = FALSE; - pk_backend_set_status(backend, PK_STATUS_ENUM_ROLLBACK); - } - if (_progress_percentage == 20) - pk_backend_set_allow_cancel(backend, FALSE); - if (_progress_percentage == 100) { - pk_backend_finished(backend); - return FALSE; - } - _progress_percentage += 10; - pk_backend_set_percentage(backend, _progress_percentage); - return TRUE; -} - - -/** - * pk_backend_rollback: - */ -void -pk_backend_rollback(PkBackend *backend, const gchar *transaction_id) -{ - /* allow testing error condition */ - if (g_strcmp0(transaction_id, "/397_eeecadad_data") == 0) { - pk_backend_error_code(backend, PK_ERROR_ENUM_TRANSACTION_ERROR, "invalid transaction_id"); - pk_backend_finished(backend); - return; - } - _progress_percentage = 0; - pk_backend_set_percentage(backend, PK_BACKEND_PERCENTAGE_INVALID); - pk_backend_set_allow_cancel(backend, TRUE); - pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY); - _signal_timeout = g_timeout_add(2000, pk_backend_rollback_timeout, backend); -} - -/** - * pk_backend_remove_packages: - */ -void -pk_backend_remove_packages(PkBackend *backend, gchar **package_ids, gboolean allow_deps, gboolean autoremove) -{ - INTENTIONALLY_IGNORE(package_ids); - INTENTIONALLY_IGNORE(allow_deps); - INTENTIONALLY_IGNORE(autoremove); - - pk_backend_set_status(backend, PK_STATUS_ENUM_REMOVE); - pk_backend_error_code(backend, PK_ERROR_ENUM_NO_NETWORK, "No network connection available"); - pk_backend_finished(backend); -} - -/** - * pk_backend_search_details: - */ -void -pk_backend_search_details(PkBackend *backend, PkBitfield filters, gchar **values) -{ - INTENTIONALLY_IGNORE(filters); - INTENTIONALLY_IGNORE(values); - - pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY); - pk_backend_set_allow_cancel(backend, TRUE); - pk_backend_package(backend, PK_INFO_ENUM_AVAILABLE, - "vips-doc;7.12.4-2.fc8;noarch;linva", - "The vips \"documentation\" package."); - pk_backend_finished(backend); -} - -/** - * pk_backend_search_files: - */ -void -pk_backend_search_files(PkBackend *backend, PkBitfield filters, gchar **values) -{ - INTENTIONALLY_IGNORE(values); - - pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY); - pk_backend_set_allow_cancel(backend, TRUE); - if (!pk_bitfield_contain(filters, PK_FILTER_ENUM_INSTALLED)) - pk_backend_package(backend, PK_INFO_ENUM_AVAILABLE, - "vips-doc;7.12.4-2.fc8;noarch;linva", - "The vips documentation package"); - else - pk_backend_package(backend, PK_INFO_ENUM_INSTALLED, - "vips-doc;7.12.4-2.fc8;noarch;linva", - "The vips documentation package"); - pk_backend_finished(backend); -} - -/** - * pk_backend_search_groups: - */ -void -pk_backend_search_groups(PkBackend *backend, PkBitfield filters, gchar **values) -{ - INTENTIONALLY_IGNORE(filters); - INTENTIONALLY_IGNORE(values); - - pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY); - pk_backend_set_allow_cancel(backend, TRUE); - pk_backend_package(backend, PK_INFO_ENUM_AVAILABLE, - "vips-doc;7.12.4-2.fc8;noarch;linva", - "The vips documentation package."); - pk_backend_package(backend, PK_INFO_ENUM_AVAILABLE, - "bǣwulf-utf8;0.1;noarch;hughsie", - "The bǣwulf server test name."); - pk_backend_finished(backend); -} - -/** - * pk_backend_search_name_timeout: - **/ -static gboolean -pk_backend_search_name_timeout(gpointer data) +PkBitfield +pk_backend_get_filters(PkBackend *backend) { - gchar *locale; - PkBackend *backend = (PkBackend *)data; - locale = pk_backend_get_locale(backend); - - g_debug("locale is %s", locale); - if (g_strcmp0(locale, "en_GB.utf8") != 0) { - pk_backend_package(backend, PK_INFO_ENUM_INSTALLED, - "evince;0.9.3-5.fc8;i386;installed", - "PDF Dokument Ƥrŏgrȃɱ"); - } else { - pk_backend_package(backend, PK_INFO_ENUM_INSTALLED, - "evince;0.9.3-5.fc8;i386;installed", - "PDF Document viewer"); - } - pk_backend_package(backend, PK_INFO_ENUM_INSTALLED, - "tetex;3.0-41.fc8;i386;fedora", - "TeTeX is an implementation of TeX for Linux or UNIX systems."); - pk_backend_package(backend, PK_INFO_ENUM_AVAILABLE, - "scribus;1.3.4-1.fc8;i386;fedora", - "Scribus is an desktop open source page layout program"); - pk_backend_package(backend, PK_INFO_ENUM_AVAILABLE, - "vips-doc;7.12.4-2.fc8;noarch;linva", - "The vips documentation package."); - pk_backend_finished(backend); - return FALSE; -} -/** - * pk_backend_search_names: - */ -void -pk_backend_search_names(PkBackend *backend, PkBitfield filters, gchar **values) -{ - INTENTIONALLY_IGNORE(filters); - INTENTIONALLY_IGNORE(values); + INTENTIONALLY_IGNORE(backend); - pk_backend_set_percentage(backend, PK_BACKEND_PERCENTAGE_INVALID); - pk_backend_set_allow_cancel(backend, TRUE); - pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY); - _signal_timeout = g_timeout_add(2000, pk_backend_search_name_timeout, backend); + /* TODO: support more filters */ + return pk_bitfield_from_enums(PK_FILTER_ENUM_INSTALLED, + -1); } -/** - * pk_backend_update_packages_download_timeout: - **/ -static gboolean -pk_backend_update_packages_download_timeout(gpointer data) +PkBitfield +pk_backend_get_groups(PkBackend *backend) { - PkBackend *backend = (PkBackend *)data; - guint sub; - if (_progress_percentage == 100) { - pk_backend_finished(backend); - return FALSE; - } - if (_progress_percentage == 0 && !_updated_powertop) { - pk_backend_package(backend, PK_INFO_ENUM_DOWNLOADING, - "powertop;1.8-1.fc8;i386;fedora", - "Power consumption monitor"); - pk_backend_set_sub_percentage(backend, 0); - } - if (_progress_percentage == 20 && !_updated_kernel) { - pk_backend_set_sub_percentage(backend, 100); - pk_backend_package(backend, PK_INFO_ENUM_DOWNLOADING, - "kernel;2.6.23-0.115.rc3.git1.fc8;i386;installed", - "The Linux kernel (the core of the Linux operating system)"); - pk_backend_set_sub_percentage(backend, 0); - pk_backend_require_restart(backend, PK_RESTART_ENUM_SYSTEM, "kernel;2.6.23-0.115.rc3.git1.fc8;i386;installed"); - } - if (_progress_percentage == 30 && !_updated_gtkhtml) { - pk_backend_message(backend, PK_MESSAGE_ENUM_NEWER_PACKAGE_EXISTS, "A newer package preupgrade is available in fedora-updates-testing"); - pk_backend_message(backend, PK_MESSAGE_ENUM_CONFIG_FILES_CHANGED, "/etc/X11/xorg.conf has been auto-merged, please check before rebooting"); - pk_backend_message(backend, PK_MESSAGE_ENUM_BROKEN_MIRROR, "fedora-updates-testing metadata is invalid"); - pk_backend_message(backend, PK_MESSAGE_ENUM_BROKEN_MIRROR, "fedora-updates-testing-debuginfo metadata is invalid"); - pk_backend_message(backend, PK_MESSAGE_ENUM_BROKEN_MIRROR, "fedora-updates-testing-source metadata is invalid"); - pk_backend_set_sub_percentage(backend, 100); - pk_backend_package(backend, PK_INFO_ENUM_INSTALLING, - "gtkhtml2;2.19.1-4.fc8;i386;fedora", - "An HTML widget for GTK+ 2.0"); - _updated_gtkhtml = TRUE; - pk_backend_set_sub_percentage(backend, 0); - } - if (_progress_percentage == 40 && !_updated_powertop) { - pk_backend_set_status(backend, PK_STATUS_ENUM_UPDATE); - pk_backend_set_allow_cancel(backend, FALSE); - pk_backend_set_sub_percentage(backend, 100); - pk_backend_package(backend, PK_INFO_ENUM_INSTALLING, - "powertop;1.8-1.fc8;i386;fedora", - "Power consumption monitor"); - _updated_powertop = TRUE; - pk_backend_set_sub_percentage(backend, 0); - } - if (_progress_percentage == 60 && !_updated_kernel) { - pk_backend_set_sub_percentage(backend, 100); - pk_backend_package(backend, PK_INFO_ENUM_UPDATING, - "kernel;2.6.23-0.115.rc3.git1.fc8;i386;installed", - "The Linux kernel (the core of the Linux operating system)"); - _updated_kernel = TRUE; - pk_backend_set_sub_percentage(backend, 0); - } - if (_progress_percentage == 80 && !_updated_kernel) { - pk_backend_set_sub_percentage(backend, 100); - pk_backend_package(backend, PK_INFO_ENUM_CLEANUP, - "kernel;2.6.23-0.115.rc3.git1.fc8;i386;installed", - "The Linux kernel (the core of the Linux operating system)"); - pk_backend_set_sub_percentage(backend, 0); - } - _progress_percentage += 1; - pk_backend_set_percentage(backend, _progress_percentage); - sub = (_progress_percentage % 10) * 10; - if (sub != 0) - pk_backend_set_sub_percentage(backend, sub); - return TRUE; -} - -/** - * pk_backend_update_packages: - */ -void -pk_backend_update_packages(PkBackend *backend, gboolean only_trusted, gchar **package_ids) -{ - const gchar *eula_id; - const gchar *license_agreement; - gboolean has_eula; - - /* FIXME: support only_trusted */ - INTENTIONALLY_IGNORE(only_trusted); - - if (_use_gpg && !_has_signature) { - pk_backend_repo_signature_required(backend, package_ids[0], "updates", - "http://example.com/gpgkey", - "Test Key (Fedora) fedora@example.com", - "BB7576AC", - "D8CC 06C2 77EC 9C53 372F C199 B1EE 1799 F24F 1B08", - "2007-10-04", PK_SIGTYPE_ENUM_GPG); - pk_backend_error_code(backend, PK_ERROR_ENUM_GPG_FAILURE, - "GPG signed package could not be verified"); - pk_backend_finished(backend); - return; - } - eula_id = "eula_hughsie_dot_com"; - has_eula = pk_backend_is_eula_valid(backend, eula_id); - if (_use_eula && !has_eula) { - license_agreement = "Narrator: In A.D. 2101, war was beginning.\n" - "Captain: What happen ?\n" - "Mechanic: Somebody set up us the bomb.\n\n" - "Operator: We get signal.\n" - "Captain: What !\n" - "Operator: Main screen turn on.\n" - "Captain: It's you !!\n" - "CATS: How are you gentlemen !!\n" - "CATS: All your base are belong to us.\n" - "CATS: You are on the way to destruction.\n\n" - "Captain: What you say !!\n" - "CATS: You have no chance to survive make your time.\n" - "CATS: Ha Ha Ha Ha ....\n\n" - "Operator: Captain!! *\n" - "Captain: Take off every 'ZIG' !!\n" - "Captain: You know what you doing.\n" - "Captain: Move 'ZIG'.\n" - "Captain: For great justice.\n"; - pk_backend_eula_required(backend, eula_id, package_ids[0], - "CATS Inc.", license_agreement); - pk_backend_error_code(backend, PK_ERROR_ENUM_NO_LICENSE_AGREEMENT, - "licence not installed so cannot install"); - pk_backend_finished(backend); - return; - } - _package_ids = package_ids; - _package_current = 0; - _progress_percentage = 0; - pk_backend_set_allow_cancel(backend, TRUE); - pk_backend_set_percentage(backend, 0); - pk_backend_set_status(backend, PK_STATUS_ENUM_DOWNLOAD); - _signal_timeout = g_timeout_add(200, pk_backend_update_packages_download_timeout, backend); + INTENTIONALLY_IGNORE(backend); + return available_groups(); } -static gboolean -pk_backend_update_system_timeout(gpointer data) +gchar * +pk_backend_get_mime_types(PkBackend *backend) { - PkBackend *backend = (PkBackend *)data; - if (_progress_percentage == 100) { - - /* cleanup socket stuff */ - if (_socket != NULL) - g_object_unref(_socket); - if (_socket_listen_id != 0) - g_source_remove(_socket_listen_id); - - pk_backend_finished(backend); - return FALSE; - } - if (_progress_percentage == 0 && !_updated_powertop) { - pk_backend_package(backend, PK_INFO_ENUM_DOWNLOADING, - "powertop;1.8-1.fc8;i386;fedora", - "Power consumption monitor"); - } - if (_progress_percentage == 20 && !_updated_kernel) { - pk_backend_package(backend, PK_INFO_ENUM_DOWNLOADING, - "kernel;2.6.23-0.115.rc3.git1.fc8;i386;installed", - "The Linux kernel (the core of the Linux operating system)"); - } - if (_progress_percentage == 30 && !_updated_gtkhtml) { - pk_backend_message(backend, PK_MESSAGE_ENUM_NEWER_PACKAGE_EXISTS, "A newer package preupgrade is available in fedora-updates-testing"); - pk_backend_message(backend, PK_MESSAGE_ENUM_CONFIG_FILES_CHANGED, "/etc/X11/xorg.conf has been auto-merged, please check before rebooting"); - pk_backend_message(backend, PK_MESSAGE_ENUM_BROKEN_MIRROR, "fedora-updates-testing metadata is invalid"); - pk_backend_message(backend, PK_MESSAGE_ENUM_BROKEN_MIRROR, "fedora-updates-testing-debuginfo metadata is invalid"); - pk_backend_message(backend, PK_MESSAGE_ENUM_BROKEN_MIRROR, "fedora-updates-testing-source metadata is invalid"); - pk_backend_package(backend, PK_INFO_ENUM_INSTALLING, - "gtkhtml2;2.19.1-4.fc8;i386;fedora", - "An HTML widget for GTK+ 2.0"); - _updated_gtkhtml = TRUE; - } - if (_progress_percentage == 40 && !_updated_powertop) { - pk_backend_set_status(backend, PK_STATUS_ENUM_UPDATE); - pk_backend_set_allow_cancel(backend, FALSE); - pk_backend_package(backend, PK_INFO_ENUM_INSTALLING, - "powertop;1.8-1.fc8;i386;fedora", - "Power consumption monitor"); - _updated_powertop = TRUE; - } - if (_progress_percentage == 60 && !_updated_kernel) { - pk_backend_package(backend, PK_INFO_ENUM_UPDATING, - "kernel;2.6.23-0.115.rc3.git1.fc8;i386;installed", - "The Linux kernel (the core of the Linux operating system)"); - _updated_kernel = TRUE; - } - if (_progress_percentage == 80 && !_updated_kernel) { - pk_backend_package(backend, PK_INFO_ENUM_CLEANUP, - "kernel;2.6.23-0.115.rc3.git1.fc8;i386;installed", - "The Linux kernel (the core of the Linux operating system)"); - } - _progress_percentage += 1; - pk_backend_set_percentage(backend, _progress_percentage); - pk_backend_set_sub_percentage(backend, (_progress_percentage % 10) * 10); - return TRUE; -} + INTENTIONALLY_IGNORE(backend); -/** - * pk_backend_socket_has_data_cb: - **/ -static gboolean -pk_backend_socket_has_data_cb(GSocket * socket, GIOCondition condition, PkBackend *backend) -{ - GError *error = NULL; - gsize len; - gchar buffer [1024]; - gboolean ret = TRUE; - gint wrote = 0; - - /* the helper process exited */ - if ((condition & G_IO_HUP) > 0) { - pk_backend_error_code(backend, PK_ERROR_ENUM_INTERNAL_ERROR, - "socket was disconnected"); - pk_backend_finished(backend); - ret = FALSE; - goto out; - } - /* there is data */ - if ((condition & G_IO_IN) > 0) { - len = g_socket_receive(socket, buffer, 1024, NULL, &error); - if (error != NULL) { - pk_backend_error_code(backend, PK_ERROR_ENUM_INTERNAL_ERROR, - "failed to read: %s", error->message); - pk_backend_finished(backend); - g_error_free(error); - ret = FALSE; - goto out; - } - if (len == 0) - goto out; - buffer[len] = '\0'; - if (g_strcmp0(buffer, "pong\n") == 0) { - /* send a message so we can verify in the self checks */ - pk_backend_message(backend, PK_MESSAGE_ENUM_PARAMETER_INVALID, buffer); - - /* verify we can write into the socket */ - wrote = g_socket_send(_socket, "invalid\n", 8, NULL, &error); - if (error != NULL) { - pk_backend_error_code(backend, PK_ERROR_ENUM_INTERNAL_ERROR, - "failed to write to socket: %s", error->message); - pk_backend_finished(backend); - g_error_free(error); - goto out; - } - if (wrote != 8) { - pk_backend_error_code(backend, PK_ERROR_ENUM_INTERNAL_ERROR, - "failed to write, only %i bytes", wrote); - pk_backend_finished(backend); - goto out; - } - } else if (g_strcmp0(buffer, "you said to me: invalid\n") == 0) { - g_debug("ignoring invalid data (one is good)"); - } else { - pk_backend_error_code(backend, PK_ERROR_ENUM_INTERNAL_ERROR, - "unexpected data: %s", buffer); - g_source_remove(_signal_timeout); - pk_backend_finished(backend); - goto out; - } - } -out: - return ret; + /* (Backformed from pkg.h: pkg_formats) */ + return g_strdup("application/x-gzip;" + "application/x-tar;" + "application/x-bzip2;" + "application/x-xz;"); } -/** - * pk_backend_update_system: - */ -void -pk_backend_update_system(PkBackend *backend, gboolean only_trusted) *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201307062359.r66NxROm039636>