386 lines
9.3 KiB
C
386 lines
9.3 KiB
C
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
|
|
*
|
|
* Copyright (C) 2007 Ali Sabil <ali.sabil@gmail.com>
|
|
* Copyright (C) 2007 Tom Parker <palfrey@tevp.net>
|
|
*
|
|
* Licensed under the GNU General Public License Version 2
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
*/
|
|
|
|
#include "config.h"
|
|
|
|
#include <pk-backend.h>
|
|
#include <pk-backend-dbus.h>
|
|
|
|
static PkBackendDbus *dbus;
|
|
|
|
#define PK_DBUS_BACKEND_SERVICE_APT "org.freedesktop.PackageKitAptBackend"
|
|
|
|
/**
|
|
* backend_initialize:
|
|
* This should only be run once per backend load, i.e. not every transaction
|
|
*/
|
|
static void
|
|
backend_initialize (PkBackend *backend)
|
|
{
|
|
egg_debug ("backend: initialize");
|
|
dbus = pk_backend_dbus_new ();
|
|
pk_backend_dbus_set_name (dbus, PK_DBUS_BACKEND_SERVICE_APT);
|
|
}
|
|
|
|
/**
|
|
* backend_destroy:
|
|
* This should only be run once per backend load, i.e. not every transaction
|
|
*/
|
|
static void
|
|
backend_destroy (PkBackend *backend)
|
|
{
|
|
egg_debug ("backend: destroy");
|
|
pk_backend_dbus_kill (dbus);
|
|
g_object_unref (dbus);
|
|
}
|
|
|
|
/**
|
|
* backend_get_groups:
|
|
*/
|
|
static PkBitfield
|
|
backend_get_groups (PkBackend *backend)
|
|
{
|
|
return pk_bitfield_from_enums (
|
|
PK_GROUP_ENUM_ACCESSORIES,
|
|
PK_GROUP_ENUM_ADMIN_TOOLS,
|
|
PK_GROUP_ENUM_COMMUNICATION,
|
|
PK_GROUP_ENUM_DOCUMENTATION,
|
|
PK_GROUP_ENUM_DESKTOP_GNOME,
|
|
PK_GROUP_ENUM_DESKTOP_KDE,
|
|
PK_GROUP_ENUM_DESKTOP_OTHER,
|
|
PK_GROUP_ENUM_ELECTRONICS,
|
|
PK_GROUP_ENUM_GAMES,
|
|
PK_GROUP_ENUM_GRAPHICS,
|
|
PK_GROUP_ENUM_INTERNET,
|
|
PK_GROUP_ENUM_LEGACY,
|
|
PK_GROUP_ENUM_LOCALIZATION,
|
|
PK_GROUP_ENUM_MULTIMEDIA,
|
|
PK_GROUP_ENUM_NETWORK,
|
|
PK_GROUP_ENUM_OTHER,
|
|
PK_GROUP_ENUM_PROGRAMMING,
|
|
PK_GROUP_ENUM_PUBLISHING,
|
|
PK_GROUP_ENUM_SCIENCE,
|
|
PK_GROUP_ENUM_SYSTEM,
|
|
PK_GROUP_ENUM_UNKNOWN,
|
|
PK_GROUP_ENUM_COLLECTIONS,
|
|
-1);
|
|
}
|
|
|
|
/**
|
|
* backend_get_filters:
|
|
*/
|
|
static PkBitfield
|
|
backend_get_filters (PkBackend *backend)
|
|
{
|
|
return pk_bitfield_from_enums (
|
|
PK_FILTER_ENUM_GUI,
|
|
PK_FILTER_ENUM_INSTALLED,
|
|
PK_FILTER_ENUM_DEVELOPMENT,
|
|
PK_FILTER_ENUM_SUPPORTED,
|
|
PK_FILTER_ENUM_FREE,
|
|
PK_FILTER_ENUM_COLLECTIONS,
|
|
-1);
|
|
}
|
|
|
|
/**
|
|
* backend_get_updates:
|
|
*/
|
|
static void
|
|
backend_get_updates (PkBackend *backend, PkBitfield filters)
|
|
{
|
|
pk_backend_dbus_get_updates (dbus, filters);
|
|
}
|
|
|
|
/**
|
|
* backend_refresh_cache:
|
|
* */
|
|
static void
|
|
backend_refresh_cache (PkBackend *backend, gboolean force)
|
|
{
|
|
// check network state
|
|
if (!pk_backend_is_online (backend)) {
|
|
pk_backend_error_code (backend, PK_ERROR_ENUM_NO_NETWORK, "Cannot refresh cache whilst offline");
|
|
pk_backend_finished (backend);
|
|
return;
|
|
}
|
|
|
|
pk_backend_dbus_refresh_cache(dbus, force);
|
|
}
|
|
|
|
/**
|
|
* pk_backend_update_system:
|
|
* */
|
|
static void
|
|
backend_update_system (PkBackend *backend)
|
|
{
|
|
pk_backend_dbus_update_system (dbus);
|
|
}
|
|
|
|
/**
|
|
* backend_update_packages
|
|
* */
|
|
static void
|
|
backend_update_packages (PkBackend *backend, gchar **package_ids)
|
|
{
|
|
pk_backend_dbus_update_packages (dbus, package_ids);
|
|
}
|
|
|
|
/**
|
|
* backend_install_packages
|
|
* */
|
|
static void
|
|
backend_install_packages (PkBackend *backend, gchar **package_ids)
|
|
{
|
|
pk_backend_dbus_install_packages (dbus, package_ids);
|
|
}
|
|
|
|
/**
|
|
* * backend_install_files:
|
|
* */
|
|
static void
|
|
backend_install_files (PkBackend *backend, gboolean trusted, gchar **full_paths)
|
|
{
|
|
pk_backend_dbus_install_files (dbus, trusted, full_paths);
|
|
}
|
|
|
|
|
|
/**
|
|
* backend_remove_packages
|
|
* */
|
|
static void
|
|
backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow_deps, gboolean autoremove)
|
|
{
|
|
pk_backend_dbus_remove_packages (dbus, package_ids, allow_deps, autoremove);
|
|
}
|
|
|
|
/**
|
|
* backend_get_files:
|
|
* */
|
|
static void
|
|
backend_get_files (PkBackend *backend, gchar **package_ids)
|
|
{
|
|
pk_backend_dbus_get_files (dbus, package_ids);
|
|
}
|
|
|
|
#ifdef HAVE_PYTHON_META_RELEASE
|
|
/**
|
|
* backend_get_distro_upgrades:
|
|
* */
|
|
static void
|
|
backend_get_distro_upgrades (PkBackend *backend)
|
|
{
|
|
pk_backend_dbus_get_distro_upgrades (dbus);
|
|
}
|
|
#endif /* HAVE_PYTHON_META_RELEASE */
|
|
|
|
|
|
/**
|
|
* backend_get_details:
|
|
* */
|
|
static void
|
|
backend_get_details (PkBackend *backend, gchar **package_ids)
|
|
{
|
|
pk_backend_dbus_get_details (dbus, package_ids);
|
|
}
|
|
|
|
/**
|
|
* backend_get_update_detail:
|
|
* */
|
|
static void
|
|
backend_get_update_detail (PkBackend *backend, gchar **package_ids)
|
|
{
|
|
pk_backend_dbus_get_update_detail (dbus, package_ids);
|
|
}
|
|
|
|
/**
|
|
* * pk_backend_search_details:
|
|
* */
|
|
static void
|
|
backend_search_details (PkBackend *backend, PkBitfield filters, const gchar *search)
|
|
{
|
|
pk_backend_dbus_search_details (dbus, filters, search);
|
|
}
|
|
|
|
/**
|
|
* * pk_backend_search_name:
|
|
* */
|
|
static void
|
|
backend_search_name (PkBackend *backend, PkBitfield filters, const gchar *search)
|
|
{
|
|
pk_backend_dbus_search_name (dbus, filters, search);
|
|
}
|
|
|
|
/**
|
|
* * pk_backend_search_file:
|
|
* */
|
|
static void
|
|
backend_search_file (PkBackend *backend, PkBitfield filters, const gchar *search)
|
|
{
|
|
pk_backend_dbus_search_file (dbus, filters, search);
|
|
}
|
|
|
|
/**
|
|
* * pk_backend_search_group:
|
|
* */
|
|
static void
|
|
backend_search_group (PkBackend *backend, PkBitfield filters, const gchar *group)
|
|
{
|
|
pk_backend_dbus_search_group (dbus, filters, group);
|
|
}
|
|
|
|
|
|
/**
|
|
* * pk_backend_cancel:
|
|
* */
|
|
static void
|
|
backend_cancel (PkBackend *backend)
|
|
{
|
|
pk_backend_dbus_cancel (dbus);
|
|
}
|
|
|
|
/**
|
|
* * pk_backend_resolve:
|
|
* */
|
|
static void
|
|
backend_resolve (PkBackend *backend, PkBitfield filters, gchar **package_ids)
|
|
{
|
|
pk_backend_dbus_resolve (dbus, filters, package_ids);
|
|
}
|
|
|
|
/**
|
|
* * pk_backend_get_packages:
|
|
* */
|
|
static void
|
|
backend_get_packages (PkBackend *backend, PkBitfield filters)
|
|
{
|
|
pk_backend_dbus_get_packages (dbus, filters);
|
|
}
|
|
|
|
#ifdef HAVE_PYTHON_SOFTWARE_PROPERTIES
|
|
/**
|
|
* * pk_backend_get_repo_list:
|
|
* */
|
|
static void
|
|
backend_get_repo_list (PkBackend *backend, PkBitfield filters)
|
|
{
|
|
pk_backend_dbus_get_repo_list (dbus, filters);
|
|
}
|
|
|
|
/**
|
|
* * pk_backend_repo_enable
|
|
* */
|
|
static void
|
|
backend_repo_enable (PkBackend *backend, const gchar *repo_id, gboolean enable )
|
|
{
|
|
pk_backend_dbus_repo_enable (dbus, repo_id, enable);
|
|
}
|
|
#endif /* HAVE_PYTHON_SOFTWARE_PROPERTIES */
|
|
|
|
|
|
/**
|
|
* * pk_backend_get_requires:
|
|
* */
|
|
static void
|
|
backend_get_requires (PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
|
|
{
|
|
pk_backend_dbus_get_requires (dbus, filters, package_ids, recursive);
|
|
}
|
|
|
|
/**
|
|
* * pk_backend_get_depends:
|
|
* */
|
|
static void
|
|
backend_get_depends (PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
|
|
{
|
|
pk_backend_dbus_get_depends (dbus, filters, package_ids, recursive);
|
|
}
|
|
|
|
/**
|
|
* * pk_backend_download_packages
|
|
* */
|
|
static void
|
|
backend_download_packages (PkBackend *backend, gchar **package_ids, const gchar *directory)
|
|
{
|
|
pk_backend_dbus_download_packages (dbus, package_ids, directory);
|
|
}
|
|
|
|
/**
|
|
* * pk_backend_what_provides
|
|
* */
|
|
static void
|
|
backend_what_provides (PkBackend *backend, PkBitfield filters, PkProvidesEnum provides, const gchar *search)
|
|
{
|
|
pk_backend_dbus_what_provides (dbus, filters, provides, search);
|
|
}
|
|
|
|
|
|
|
|
PK_BACKEND_OPTIONS (
|
|
"Apt", /* description */
|
|
"Ali Sabil <ali.sabil@gmail.com>; Tom Parker <palfrey@tevp.net>; Sebastian Heinlein <glatzor@ubuntu.com>", /* author */
|
|
backend_initialize, /* initalize */
|
|
backend_destroy, /* destroy */
|
|
backend_get_groups, /* get_groups */
|
|
backend_get_filters, /* get_filters */
|
|
NULL, /* get_mime_types */
|
|
backend_cancel, /* cancel */
|
|
backend_download_packages, /* download_packages */
|
|
backend_get_depends, /* get_depends */
|
|
backend_get_details, /* get_details */
|
|
#ifdef HAVE_PYTHON_META_RELEASE
|
|
backend_get_distro_upgrades, /* get_distro_upgrades */
|
|
#else
|
|
NULL, /* get_distro_upgrades */
|
|
#endif /* HAVE_PYTHON_META_RELEASE */
|
|
backend_get_files, /* get_files */
|
|
backend_get_packages, /* get_packages */
|
|
#ifdef HAVE_PYTHON_SOFTWARE_PROPERTIES
|
|
backend_get_repo_list, /* get_repo_list */
|
|
#else
|
|
NULL, /* get_repo_list */
|
|
#endif /* HAVE_PYTHON_SOFTWARE_PROPERTIES */
|
|
backend_get_requires, /* get_requires */
|
|
backend_get_update_detail, /* get_update_detail */
|
|
backend_get_updates, /* get_updates */
|
|
backend_install_files, /* install_files */
|
|
backend_install_packages, /* install_packages */
|
|
NULL, /* install_signature */
|
|
backend_refresh_cache, /* refresh_cache */
|
|
backend_remove_packages, /* remove_packages */
|
|
#ifdef HAVE_PYTHON_SOFTWARE_PROPERTIES
|
|
backend_repo_enable, /* repo_enable */
|
|
#else
|
|
NULL, /* repo_enable */
|
|
#endif /* HAVE_PYTHON_SOFTWARE_PROPERTIES */
|
|
NULL, /* repo_set_data */
|
|
backend_resolve, /* resolve */
|
|
NULL, /* rollback */
|
|
backend_search_details, /* search_details */
|
|
backend_search_file, /* search_file */
|
|
backend_search_group, /* search_group */
|
|
backend_search_name, /* search_name */
|
|
NULL, /* service_pack */
|
|
backend_update_packages, /* update_packages */
|
|
backend_update_system, /* update_system */
|
|
backend_what_provides /* what_provides */
|
|
);
|