[PackageKit-commit] packagekit: Branch 'master' - 18 commits
Richard Hughes
hughsient at kemper.freedesktop.org
Sat May 16 12:17:22 PDT 2009
AUTHORS | 3
backends/Makefile.am | 4
backends/portage/.gitignore | 10
backends/portage/Makefile.am | 16 +
backends/portage/pk-backend-portage.c | 375 +++++++++++++++++++++++++++++++
backends/yum/yumBackend.py | 2
configure.ac | 25 +-
lib/packagekit-glib/.gitignore | 1
lib/packagekit-glib/Makefile.am | 3
lib/packagekit-glib/packagekit.h | 1
lib/packagekit-glib/pk-client.c | 4
lib/packagekit-glib/pk-control.c | 8
lib/packagekit-glib/pk-version.h.in | 44 +++
po/LINGUAS | 6
po/th.po | 411 ++++++++++++++++++++++++++++++++++
po/update-linguas.sh | 1
src/Makefile.am | 2
src/org.freedesktop.PackageKit.xml | 29 ++
src/pk-cache.c | 24 +
src/pk-engine.c | 348 +++++++++++++++++++++++++---
src/pk-main.c | 19 +
src/pk-notify.c | 19 -
src/pk-notify.h | 1
src/pk-transaction-db.c | 2
src/pk-transaction.c | 68 -----
src/pk-update-detail-list.c | 201 ----------------
src/pk-update-detail-list.h | 62 -----
27 files changed, 1286 insertions(+), 403 deletions(-)
New commits:
commit 1487b5dcf0ffc7eb8b010569a042da76cb01bcf0
Author: Richard Hughes <richard at hughsie.com>
Date: Sat May 16 19:54:09 2009 +0100
Don't try to clear the cancel timeout if it fires again on PkClient finalise
diff --git a/lib/packagekit-glib/pk-client.c b/lib/packagekit-glib/pk-client.c
index 9ef7d1d..c9200e9 100644
--- a/lib/packagekit-glib/pk-client.c
+++ b/lib/packagekit-glib/pk-client.c
@@ -1297,6 +1297,10 @@ pk_client_transaction_timeout_cb (PkClient *client)
/* emit signal */
egg_debug ("emit error-code %i, %s", PK_ERROR_ENUM_TRANSACTION_CANCELLED, details);
g_signal_emit (client , signals [PK_CLIENT_ERROR_CODE], 0, PK_ERROR_ENUM_TRANSACTION_CANCELLED, details);
+
+ /* set used */
+ client->priv->timeout_id = 0;
+
return FALSE;
}
commit 9a10630a1c27a7c260ebc49a1842532b7a29a6fb
Author: Richard Hughes <richard at hughsie.com>
Date: Sat May 16 19:36:05 2009 +0100
Don't even ref the update cache if it's not being used
diff --git a/src/pk-cache.c b/src/pk-cache.c
index ccf9f35..1c7aadb 100644
--- a/src/pk-cache.c
+++ b/src/pk-cache.c
@@ -31,11 +31,14 @@
#include "egg-debug.h"
#include "pk-cache.h"
+#include "pk-conf.h"
#define PK_CACHE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PK_TYPE_CACHE, PkCachePrivate))
struct PkCachePrivate
{
+ PkConf *conf;
+ gboolean use_update_cache;
PkPackageList *updates_cache;
};
@@ -49,6 +52,13 @@ PkPackageList *
pk_cache_get_updates (PkCache *cache)
{
g_return_val_if_fail (PK_IS_CACHE (cache), NULL);
+
+ /* do not use */
+ if (!cache->priv->use_update_cache) {
+ egg_debug ("not using cache");
+ return NULL;
+ }
+
return cache->priv->updates_cache;
}
@@ -61,12 +71,17 @@ pk_cache_set_updates (PkCache *cache, PkPackageList *list)
g_return_val_if_fail (PK_IS_CACHE (cache), FALSE);
g_return_val_if_fail (list != NULL, FALSE);
+ /* do not use */
+ if (!cache->priv->use_update_cache) {
+ egg_debug ("not using cache");
+ return FALSE;
+ }
+
/* do this in case we have old data */
pk_cache_invalidate (cache);
- cache->priv->updates_cache = list;
egg_debug ("reffing updates cache");
- g_object_ref (cache->priv->updates_cache);
+ cache->priv->updates_cache = g_object_ref (list);
g_object_add_weak_pointer (G_OBJECT (cache->priv->updates_cache), (gpointer) &cache->priv->updates_cache);
return TRUE;
}
@@ -97,9 +112,8 @@ pk_cache_finalize (GObject *object)
g_return_if_fail (PK_IS_CACHE (object));
cache = PK_CACHE (object);
- if (cache->priv->updates_cache != NULL) {
+ if (cache->priv->updates_cache != NULL)
g_object_unref (cache->priv->updates_cache);
- }
G_OBJECT_CLASS (pk_cache_parent_class)->finalize (object);
}
@@ -127,6 +141,8 @@ pk_cache_init (PkCache *cache)
{
cache->priv = PK_CACHE_GET_PRIVATE (cache);
cache->priv->updates_cache = NULL;
+ cache->priv->conf = pk_conf_new ();
+ cache->priv->use_update_cache = pk_conf_get_bool (cache->priv->conf, "UseUpdateCache");
}
/**
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index b6e7b0c..0026169 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -2472,8 +2472,7 @@ pk_transaction_get_updates (PkTransaction *transaction, const gchar *filter, DBu
/* try and reuse cache */
updates_cache = pk_cache_get_updates (transaction->priv->cache);
- ret = pk_conf_get_bool (transaction->priv->conf, "UseUpdateCache");
- if (ret && updates_cache != NULL) {
+ if (updates_cache != NULL) {
const PkPackageObj *obj;
const gchar *info_text;
guint i;
commit 3db4c116f80e3fff43c91c71748101687f338b13
Author: Richard Hughes <richard at hughsie.com>
Date: Sat May 16 19:17:50 2009 +0100
Don't cache the update detail, returning half results from the cache and half from backend causes odd bugs
diff --git a/src/Makefile.am b/src/Makefile.am
index df696f6..4806f56 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -81,8 +81,6 @@ shared_SOURCES = \
pk-spawn.h \
pk-sysdep.h \
pk-sysdep.c \
- pk-update-detail-list.c \
- pk-update-detail-list.h \
pk-file-monitor.h \
pk-engine.h \
pk-engine.c \
diff --git a/src/pk-engine.c b/src/pk-engine.c
index 63f1145..4a62fa7 100644
--- a/src/pk-engine.c
+++ b/src/pk-engine.c
@@ -45,7 +45,6 @@
#include "pk-network.h"
#include "pk-cache.h"
#include "pk-shared.h"
-#include "pk-update-detail-list.h"
#include "pk-backend.h"
#include "pk-backend-internal.h"
#include "pk-engine.h"
@@ -93,7 +92,6 @@ struct PkEnginePrivate
PkTransactionList *transaction_list;
PkTransactionDb *transaction_db;
PkCache *cache;
- PkUpdateDetailList *update_detail_cache;
PkBackend *backend;
PkInhibit *inhibit;
PkNetwork *network;
@@ -842,7 +840,6 @@ pk_engine_init (PkEngine *engine)
/* we save a cache of the latest update lists sowe can do cached responses */
engine->priv->cache = pk_cache_new ();
- engine->priv->update_detail_cache = pk_update_detail_list_new ();
/* we need to be able to clear this */
engine->priv->signal_state_priority_timeout = 0;
@@ -937,7 +934,6 @@ pk_engine_finalize (GObject *object)
g_object_unref (engine->priv->notify);
g_object_unref (engine->priv->backend);
g_object_unref (engine->priv->cache);
- g_object_unref (engine->priv->update_detail_cache);
g_object_unref (engine->priv->conf);
g_free (engine->priv->mime_types);
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 25bf3e1..b6e7b0c 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -53,7 +53,6 @@
#include "pk-backend.h"
#include "pk-backend-internal.h"
#include "pk-inhibit.h"
-#include "pk-update-detail-list.h"
#include "pk-conf.h"
#include "pk-shared.h"
#include "pk-cache.h"
@@ -93,7 +92,6 @@ struct PkTransactionPrivate
PkInhibit *inhibit;
PkCache *cache;
PkConf *conf;
- PkUpdateDetailList *update_detail_list;
PkNotify *notify;
PkSecurity *security;
PkSecurityCaller *caller;
@@ -983,9 +981,6 @@ pk_transaction_update_detail_cb (PkBackend *backend, const PkUpdateDetailObj *de
g_return_if_fail (PK_IS_TRANSACTION (transaction));
g_return_if_fail (transaction->priv->tid != NULL);
- /* add, if not already added? */
- pk_update_detail_list_add_obj (transaction->priv->update_detail_list, detail);
-
restart_text = pk_restart_enum_to_text (detail->restart);
package_id = pk_package_id_to_string (detail->id);
state_text = pk_update_state_enum_to_text (detail->state);
@@ -2375,13 +2370,6 @@ pk_transaction_get_update_detail (PkTransaction *transaction, gchar **package_id
gboolean ret;
GError *error;
gchar *package_ids_temp;
- gchar *package_id;
- gchar **package_ids_new;
- const PkUpdateDetailObj *detail;
- PkPackageId *id;
- GPtrArray *array;
- guint i;
- guint len;
g_return_if_fail (PK_IS_TRANSACTION (transaction));
g_return_if_fail (transaction->priv->tid != NULL);
@@ -2390,9 +2378,6 @@ pk_transaction_get_update_detail (PkTransaction *transaction, gchar **package_id
egg_debug ("GetUpdateDetail method called: %s", package_ids_temp);
g_free (package_ids_temp);
- /* need to split the package_ids into new and cached */
- array = g_ptr_array_new ();
-
/* not implemented yet */
if (transaction->priv->backend->desc->get_update_detail == NULL) {
error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_NOT_SUPPORTED,
@@ -2426,51 +2411,6 @@ pk_transaction_get_update_detail (PkTransaction *transaction, gchar **package_id
transaction->priv->cached_package_ids = g_strdupv (package_ids);
pk_transaction_set_role (transaction, PK_ROLE_ENUM_GET_UPDATE_DETAIL);
- /* try and reuse cache */
- len = g_strv_length (package_ids);
- for (i=0; i<len; i++) {
- id = pk_package_id_new_from_string (package_ids[i]);
- detail = pk_update_detail_list_get_obj (transaction->priv->update_detail_list, id);
- pk_package_id_free (id);
- if (detail != NULL) {
- gchar *issued;
- gchar *updated;
- const gchar *state_text;
- package_id = pk_package_id_to_string (detail->id);
- issued = pk_iso8601_from_date (detail->issued);
- updated = pk_iso8601_from_date (detail->updated);
- state_text = pk_update_state_enum_to_text (detail->state);
-
- /* emulate the backend */
- g_signal_emit (transaction, signals [PK_TRANSACTION_UPDATE_DETAIL], 0,
- package_id, detail->updates, detail->obsoletes,
- detail->vendor_url, detail->bugzilla_url, detail->cve_url,
- pk_restart_enum_to_text (detail->restart), detail->update_text,
- detail->changelog, state_text, issued, updated);
- g_free (issued);
- g_free (updated);
- g_free (package_id);
- } else {
- egg_debug ("not got %s", package_ids[i]);
- g_ptr_array_add (array, g_strdup (package_ids[i]));
- }
- }
-
- /* if we have nothing to do, i.e. everything was in the cache */
- if (array->len == 0) {
- /* we are done */
- g_idle_add ((GSourceFunc) pk_transaction_finished_idle_cb, transaction);
- goto out;
- }
-
- /* get the new list */
- egg_debug ("%i more to process", array->len);
- package_ids_new = pk_ptr_array_to_strv (array);
-
- /* alter list */
- g_strfreev (transaction->priv->cached_package_ids);
- transaction->priv->cached_package_ids = package_ids_new;
-
/* try to commit this */
ret = pk_transaction_commit (transaction);
if (!ret) {
@@ -2481,9 +2421,6 @@ pk_transaction_get_update_detail (PkTransaction *transaction, gchar **package_id
return;
}
-out:
- g_ptr_array_foreach (array, (GFunc) g_free, NULL);
- g_ptr_array_free (array, TRUE);
/* return from async with success */
pk_transaction_dbus_return (context);
}
@@ -3948,7 +3885,6 @@ pk_transaction_init (PkTransaction *transaction)
transaction->priv->security = pk_security_new ();
transaction->priv->cache = pk_cache_new ();
transaction->priv->conf = pk_conf_new ();
- transaction->priv->update_detail_list = pk_update_detail_list_new ();
transaction->priv->notify = pk_notify_new ();
transaction->priv->inhibit = pk_inhibit_new ();
transaction->priv->package_list = pk_package_list_new ();
@@ -4020,7 +3956,6 @@ pk_transaction_finalize (GObject *object)
g_object_unref (transaction->priv->conf);
g_object_unref (transaction->priv->cache);
- g_object_unref (transaction->priv->update_detail_list);
g_object_unref (transaction->priv->inhibit);
g_object_unref (transaction->priv->backend);
g_object_unref (transaction->priv->monitor);
diff --git a/src/pk-update-detail-list.c b/src/pk-update-detail-list.c
deleted file mode 100644
index f46e2f7..0000000
--- a/src/pk-update-detail-list.c
+++ /dev/null
@@ -1,201 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2008 Richard Hughes <richard at hughsie.com>
- *
- * 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.
- */
-
-#ifdef CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/time.h>
-#include <sys/types.h>
-
-#include <glib/gi18n.h>
-#include <glib.h>
-
-#include "egg-debug.h"
-
-#include "pk-update-detail-list.h"
-
-#define PK_UPDATE_DETAIL_LIST_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PK_TYPE_UPDATE_DETAIL_LIST, PkUpdateDetailListPrivate))
-
-struct PkUpdateDetailListPrivate
-{
- GPtrArray *array;
-};
-
-G_DEFINE_TYPE (PkUpdateDetailList, pk_update_detail_list, G_TYPE_OBJECT)
-static gpointer pk_update_detail_list_object = NULL;
-
-/**
- * pk_update_detail_list_clear:
- * @list: a valid #PkUpdateDetailList instance
- *
- * Clears the package list
- **/
-gboolean
-pk_update_detail_list_clear (PkUpdateDetailList *list)
-{
- g_return_val_if_fail (PK_IS_UPDATE_DETAIL_LIST (list), FALSE);
- return TRUE;
-}
-
-/**
- * pk_update_detail_list_add_obj:
- * @list: a valid #PkUpdateDetailList instance
- * @obj: a valid #PkUpdateDetailObj object
- *
- * Adds a copy of the object to the list
- **/
-gboolean
-pk_update_detail_list_add_obj (PkUpdateDetailList *list, const PkUpdateDetailObj *obj)
-{
- PkUpdateDetailObj *obj_new;
- const PkUpdateDetailObj *obj_found;
- g_return_val_if_fail (PK_IS_UPDATE_DETAIL_LIST (list), FALSE);
- g_return_val_if_fail (obj != NULL, FALSE);
-
- /* are we already in the cache? */
- obj_found = pk_update_detail_list_get_obj (list, obj->id);
- if (obj_found != NULL) {
- egg_debug ("already in list: %s", obj->id->name);
- return FALSE;
- }
-
- obj_new = pk_update_detail_obj_copy (obj);
- g_ptr_array_add (list->priv->array, obj_new);
- return TRUE;
-}
-
-/**
- * pk_update_detail_list_get_obj:
- * @list: a valid #PkUpdateDetailList instance
- * @id: A #PkPackageId of the item to match
- *
- * Gets an object from the list
- **/
-const PkUpdateDetailObj *
-pk_update_detail_list_get_obj (PkUpdateDetailList *list, const PkPackageId *id)
-{
- guint i;
- guint len;
- PkUpdateDetailObj *obj;
-
- g_return_val_if_fail (PK_IS_UPDATE_DETAIL_LIST (list), NULL);
- g_return_val_if_fail (id != NULL, NULL);
-
- len = list->priv->array->len;
- for (i=0; i<len; i++) {
- obj = (PkUpdateDetailObj *) g_ptr_array_index (list->priv->array, i);
- if (pk_package_id_equal (id, obj->id)) {
- return obj;
- }
- }
- /* bahh, found nothing */
- return NULL;
-}
-
-/**
- * pk_update_detail_list_finalize:
- * @object: a valid #PkUpdateDetailList instance
- **/
-static void
-pk_update_detail_list_finalize (GObject *object)
-{
- PkUpdateDetailList *list;
- g_return_if_fail (PK_IS_UPDATE_DETAIL_LIST (object));
- list = PK_UPDATE_DETAIL_LIST (object);
-
- /* free the list */
- g_ptr_array_foreach (list->priv->array, (GFunc) pk_update_detail_obj_free, NULL);
- g_ptr_array_free (list->priv->array, TRUE);
-
- G_OBJECT_CLASS (pk_update_detail_list_parent_class)->finalize (object);
-}
-
-/**
- * pk_update_detail_list_class_init:
- * @klass: a valid #PkUpdateDetailListClass instance
- **/
-static void
-pk_update_detail_list_class_init (PkUpdateDetailListClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
- object_class->finalize = pk_update_detail_list_finalize;
- g_type_class_add_private (klass, sizeof (PkUpdateDetailListPrivate));
-}
-
-/**
- * pk_update_detail_list_init:
- * @list: a valid #PkUpdateDetailList instance
- *
- * Initializes the update_detail_list class.
- **/
-static void
-pk_update_detail_list_init (PkUpdateDetailList *list)
-{
- list->priv = PK_UPDATE_DETAIL_LIST_GET_PRIVATE (list);
- list->priv->array = g_ptr_array_new ();
-}
-
-/**
- * pk_update_detail_list_new:
- *
- * Return value: A new list class instance.
- **/
-PkUpdateDetailList *
-pk_update_detail_list_new (void)
-{
- if (pk_update_detail_list_object != NULL) {
- g_object_ref (pk_update_detail_list_object);
- } else {
- pk_update_detail_list_object = g_object_new (PK_TYPE_UPDATE_DETAIL_LIST, NULL);
- g_object_add_weak_pointer (pk_update_detail_list_object, &pk_update_detail_list_object);
- }
- return PK_UPDATE_DETAIL_LIST (pk_update_detail_list_object);
-}
-
-/***************************************************************************
- *** MAKE CHECK TESTS ***
- ***************************************************************************/
-#ifdef EGG_TEST
-#include "egg-test.h"
-
-void
-pk_update_detail_test_list (EggTest *test)
-{
- PkUpdateDetailList *list;
-
- if (!egg_test_start (test, "PkUpdateDetailList"))
- return;
-
- /************************************************************/
- egg_test_title (test, "get an instance");
- list = pk_update_detail_list_new ();
- egg_test_assert (test, list != NULL);
-
- g_object_unref (list);
-
- egg_test_end (test);
-}
-#endif
-
diff --git a/src/pk-update-detail-list.h b/src/pk-update-detail-list.h
deleted file mode 100644
index cb2b93b..0000000
--- a/src/pk-update-detail-list.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2008 Richard Hughes <richard at hughsie.com>
- *
- * 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.
- */
-
-#ifndef __PK_UPDATE_DETAIL_LIST_H
-#define __PK_UPDATE_DETAIL_LIST_H
-
-#include <glib-object.h>
-#include <packagekit-glib/packagekit.h>
-
-G_BEGIN_DECLS
-
-#define PK_TYPE_UPDATE_DETAIL_LIST (pk_update_detail_list_get_type ())
-#define PK_UPDATE_DETAIL_LIST(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PK_TYPE_UPDATE_DETAIL_LIST, PkUpdateDetailList))
-#define PK_UPDATE_DETAIL_LIST_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), PK_TYPE_UPDATE_DETAIL_LIST, PkUpdateDetailListClass))
-#define PK_IS_UPDATE_DETAIL_LIST(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PK_TYPE_UPDATE_DETAIL_LIST))
-#define PK_IS_UPDATE_DETAIL_LIST_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), PK_TYPE_UPDATE_DETAIL_LIST))
-#define PK_UPDATE_DETAIL_LIST_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), PK_TYPE_UPDATE_DETAIL_LIST, PkUpdateDetailListClass))
-
-typedef struct PkUpdateDetailListPrivate PkUpdateDetailListPrivate;
-
-typedef struct
-{
- GObject parent;
- PkUpdateDetailListPrivate *priv;
-} PkUpdateDetailList;
-
-typedef struct
-{
- GObjectClass parent_class;
-} PkUpdateDetailListClass;
-
-GType pk_update_detail_list_get_type (void);
-PkUpdateDetailList *pk_update_detail_list_new (void);
-
-gboolean pk_update_detail_list_clear (PkUpdateDetailList *list);
-gboolean pk_update_detail_list_add_obj (PkUpdateDetailList *list,
- const PkUpdateDetailObj *obj);
-const PkUpdateDetailObj *pk_update_detail_list_get_obj (PkUpdateDetailList *list,
- const PkPackageId *id);
-
-
-G_END_DECLS
-
-#endif /* __PK_UPDATE_DETAIL_LIST_H */
commit 9cdb276dc28c0446cea2f1bd52876969cfb162b1
Merge: d8fa28c... 254b365...
Author: Richard Hughes <richard at hughsie.com>
Date: Fri May 15 18:01:17 2009 +0100
Merge branch 'master' of git+ssh://hughsie@git.packagekit.org/srv/git/PackageKit
commit d8fa28c92669a8fb3c832c353896f3c08c29cb16
Author: Richard Hughes <richard at hughsie.com>
Date: Fri May 15 09:09:19 2009 +0100
yum: Disable the rpm-warm-cache yum plugin, it's so broken, and nobody is going to fix it
diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index de9f532..1197491 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -2813,7 +2813,7 @@ class PackageKitYumBase(yum.YumBase):
# disable the PackageKit plugin when running under PackageKit
try:
pc = self.preconf
- pc.disabled_plugins = ['refresh-packagekit']
+ pc.disabled_plugins = ['refresh-packagekit', 'rpm-warm-cache']
except yum.Errors.ConfigError, e:
raise PkError(ERROR_REPO_CONFIGURATION_ERROR, _to_unicode(e))
except ValueError, e:
commit 254b365f79d2830ef9e52a3042b5f4ff52470a39
Merge: da3c9e9... 06ab35f...
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date: Thu May 14 21:52:48 2009 +0200
Merge branch 'portage-backend'
commit 06ab35fa6b7e512dd9ab90e1c6d96ad75466d4c1
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date: Thu May 14 21:48:40 2009 +0200
portage backend: configure + dummy backend
diff --git a/AUTHORS b/AUTHORS
index c0431a8..b4ba1b9 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -18,6 +18,9 @@ Backend: pisi
Backend: poldek
Marcin Banasiak <megabajt at pld-linux.org>
+Backend: portage
+ Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
+
Backend: zypp
Boyd Timothy <btimothy at gmail.com>
Scott Reeves <sreeves at novell.com>
diff --git a/backends/Makefile.am b/backends/Makefile.am
index 400765b..53413e8 100644
--- a/backends/Makefile.am
+++ b/backends/Makefile.am
@@ -56,6 +56,10 @@ if BACKEND_TYPE_POLDEK
SUBDIRS += poldek
endif
+if BACKEND_TYPE_PORTAGE
+SUBDIRS += portage
+endif
+
clean-local :
rm -f *~
diff --git a/backends/portage/.gitignore b/backends/portage/.gitignore
new file mode 100644
index 0000000..c851833
--- /dev/null
+++ b/backends/portage/.gitignore
@@ -0,0 +1,10 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.la
+*.lo
+*.loT
+*.o
+*~
+
diff --git a/backends/portage/Makefile.am b/backends/portage/Makefile.am
new file mode 100644
index 0000000..94c7480
--- /dev/null
+++ b/backends/portage/Makefile.am
@@ -0,0 +1,16 @@
+helperdir = $(datadir)/PackageKit/helpers/portage
+dist_helper_DATA = # to fill
+
+plugindir = $(PK_PLUGIN_DIR)
+plugin_LTLIBRARIES = libpk_backend_portage.la
+libpk_backend_portage_la_SOURCES = pk-backend-portage.c
+libpk_backend_portage_la_LIBADD = $(PK_PLUGIN_LIBS)
+libpk_backend_portage_la_LDFLAGS = -module -avoid-version
+libpk_backend_portage_la_CFLAGS = $(PK_PLUGIN_CFLAGS) $(WARNINGFLAGS_C)
+
+install-data-hook:
+ chmod a+rx $(DESTDIR)$(helperdir)/*.py
+
+clean-local :
+ rm -f *~
+ rm -f *.pyc
diff --git a/backends/portage/pk-backend-portage.c b/backends/portage/pk-backend-portage.c
new file mode 100644
index 0000000..3bf998f
--- /dev/null
+++ b/backends/portage/pk-backend-portage.c
@@ -0,0 +1,375 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2009 Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
+ *
+ * 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 <stdio.h>
+#include <pk-backend.h>
+
+/**
+ * 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");
+}
+
+/**
+ * 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");
+}
+
+/**
+ * backend_get_groups:
+ */
+static PkBitfield
+backend_get_groups (PkBackend *backend)
+{
+ /*
+ * TODO: set group list
+ */
+ egg_debug ("backend: get_groups");
+
+ return pk_bitfield_from_enums (PK_GROUP_ENUM_ACCESSIBILITY,
+ PK_GROUP_ENUM_GAMES,
+ PK_GROUP_ENUM_SYSTEM,
+ -1);
+}
+
+/**
+ * backend_get_filters:
+ */
+static PkBitfield
+backend_get_filters (PkBackend *backend)
+{
+ /*
+ * TODO: set filter list
+ */
+ egg_debug ("backend: get_filters");
+
+ return pk_bitfield_from_enums (PK_FILTER_ENUM_GUI,
+ PK_FILTER_ENUM_INSTALLED,
+ PK_FILTER_ENUM_DEVELOPMENT,
+ -1);
+}
+
+/**
+ * backend_get_mime_types:
+ */
+static gchar *
+backend_get_mime_types (PkBackend *backend)
+{
+ /*
+ * TODO: what needs to be done for ebuilds here ?
+ */
+ egg_debug ("backend: get_mime_types");
+
+ return g_strdup ("application/x-rpm;application/x-deb");
+}
+
+/**
+ * backend_cancel:
+ */
+static void
+backend_cancel (PkBackend *backend)
+{
+ /* this feels bad... */
+ egg_debug ("backend: cancel");
+}
+
+/**
+ * backend_get_depends:
+ */
+static void
+backend_get_depends (PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
+{
+ egg_debug ("backend: depends");
+}
+
+/**
+ * backend_get_details:
+ */
+static void
+backend_get_details (PkBackend *backend, gchar **package_ids)
+{
+ egg_debug ("backend: details");
+}
+
+/**
+ * backend_get_distro_upgrades:
+ */
+static void
+backend_get_distro_upgrades (PkBackend *backend)
+{
+ egg_debug ("backend: distro upgrade");
+}
+
+/**
+ * backend_get_files:
+ */
+static void
+backend_get_files (PkBackend *backend, gchar **package_ids)
+{
+ egg_debug ("backend: get_files");
+}
+
+/**
+ * backend_get_requires:
+ */
+static void
+backend_get_requires (PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
+{
+ egg_debug ("backend: requires");
+}
+
+/**
+ * backend_get_updates:
+ */
+static void
+backend_get_updates (PkBackend *backend, PkBitfield filters)
+{
+ egg_debug ("backend: updates");
+}
+
+/**
+ * backend_get_update_detail:
+ */
+static void
+backend_get_update_detail (PkBackend *backend, gchar **package_ids)
+{
+ egg_debug ("backend: update_detail");
+}
+
+/**
+ * backend_install_packages:
+ */
+static void
+backend_install_packages (PkBackend *backend, gchar **package_ids)
+{
+ egg_debug ("backend: install");
+}
+
+/**
+ * backend_install_signature:
+ */
+static void
+backend_install_signature (PkBackend *backend, PkSigTypeEnum type,
+ const gchar *key_id, const gchar *package_id)
+{
+ egg_debug ("backend: install signature");
+}
+
+/**
+ * backend_install_files:
+ */
+static void
+backend_install_files (PkBackend *backend, gboolean trusted, gchar **full_paths)
+{
+ egg_debug ("backend: install files");
+}
+
+/**
+ * backend_refresh_cache:
+ */
+static void
+backend_refresh_cache (PkBackend *backend, gboolean force)
+{
+ egg_debug ("backend: refresh cache");
+}
+
+/**
+ * backend_resolve:
+ */
+static void
+backend_resolve (PkBackend *backend, PkBitfield filters, gchar **packages)
+{
+ egg_debug ("backend: resolve");
+}
+
+/**
+ * backend_rollback:
+ */
+static void
+backend_rollback (PkBackend *backend, const gchar *transaction_id)
+{
+ egg_debug ("backend: rollback");
+}
+
+/**
+ * backend_remove_packages:
+ */
+static void
+backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow_deps, gboolean autoremove)
+{
+ egg_debug ("backend: remove packages");
+}
+
+/**
+ * backend_search_details:
+ */
+static void
+backend_search_details (PkBackend *backend, PkBitfield filters, const gchar *search)
+{
+ egg_debug ("backend: search details");
+}
+
+/**
+ * backend_search_file:
+ */
+static void
+backend_search_file (PkBackend *backend, PkBitfield filters, const gchar *search)
+{
+ egg_debug ("backend: search file");
+}
+
+/**
+ * backend_search_group:
+ */
+static void
+backend_search_group (PkBackend *backend, PkBitfield filters, const gchar *search)
+{
+ egg_debug ("backend: search group");
+}
+
+/**
+ * backend_search_name:
+ */
+static void
+backend_search_name (PkBackend *backend, PkBitfield filters, const gchar *search)
+{
+ egg_debug ("backend: search name");
+}
+
+/**
+ * backend_update_packages:
+ */
+static void
+backend_update_packages (PkBackend *backend, gchar **package_ids)
+{
+ egg_debug ("backend: update packages");
+}
+
+/**
+ * backend_update_system:
+ */
+static void
+backend_update_system (PkBackend *backend)
+{
+ egg_debug ("backend: update system");
+}
+
+/**
+ * backend_get_repo_list:
+ */
+static void
+backend_get_repo_list (PkBackend *backend, PkBitfield filters)
+{
+ egg_debug ("backend: get repo list");
+}
+
+/**
+ * backend_repo_enable:
+ */
+static void
+backend_repo_enable (PkBackend *backend, const gchar *rid, gboolean enabled)
+{
+ egg_debug ("backend: repo enable");
+}
+
+/**
+ * backend_repo_set_data:
+ */
+static void
+backend_repo_set_data (PkBackend *backend, const gchar *rid, const gchar *parameter, const gchar *value)
+{
+ egg_debug ("backend: repo set data");
+}
+
+/**
+ * backend_what_provides:
+ */
+static void
+backend_what_provides (PkBackend *backend, PkBitfield filters, PkProvidesEnum provides, const gchar *search)
+{
+ egg_debug ("backend: what provides");
+}
+
+/**
+ * backend_get_packages:
+ */
+static void
+backend_get_packages (PkBackend *backend, PkBitfield filters)
+{
+ egg_debug ("backend: get packages");
+}
+
+/**
+ * backend_download_packages:
+ */
+static void
+backend_download_packages (PkBackend *backend, gchar **package_ids, const gchar *directory)
+{
+ egg_debug ("backend: download packages");
+}
+
+PK_BACKEND_OPTIONS (
+ "Portage", /* description */
+ "Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>", /* author */
+ backend_initialize, /* initalize */
+ backend_destroy, /* destroy */
+ backend_get_groups, /* get_groups */
+ backend_get_filters, /* get_filters */
+ backend_get_mime_types, /* get_mime_types */
+ backend_cancel, /* cancel */
+ backend_download_packages, /* download_packages */
+ NULL, /* get_categories */
+ backend_get_depends, /* get_depends */
+ backend_get_details, /* get_details */
+ backend_get_distro_upgrades, /* get_distro_upgrades */
+ backend_get_files, /* get_files */
+ backend_get_packages, /* get_packages */
+ backend_get_repo_list, /* get_repo_list */
+ 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 */
+ backend_install_signature, /* install_signature */
+ backend_refresh_cache, /* refresh_cache */
+ backend_remove_packages, /* remove_packages */
+ backend_repo_enable, /* repo_enable */
+ backend_repo_set_data, /* repo_set_data */
+ backend_resolve, /* resolve */
+ backend_rollback, /* rollback */
+ backend_search_details, /* search_details */
+ backend_search_file, /* search_file */
+ backend_search_group, /* search_group */
+ backend_search_name, /* search_name */
+ backend_update_packages, /* update_packages */
+ backend_update_system, /* update_system */
+ backend_what_provides /* what_provides */
+);
+
diff --git a/configure.ac b/configure.ac
index 39433a4..62661a1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -464,6 +464,7 @@ AC_ARG_ENABLE(dummy, AS_HELP_STRING([--enable-dummy],[use the dummy backend]),en
AC_ARG_ENABLE(opkg, AS_HELP_STRING([--enable-opkg],[use the OPKG backend]),enable_opkg=$enableval,enable_opkg=no)
AC_ARG_ENABLE(pisi, AS_HELP_STRING([--enable-pisi],[use the PiSi backend]),enable_pisi=$enableval,enable_pisi=no)
AC_ARG_ENABLE(poldek, AS_HELP_STRING([--enable-poldek],[use the poldek backend]),enable_poldek=$enableval,enable_poldek=no)
+AC_ARG_ENABLE(portage, AS_HELP_STRING([--enable-portage],[use the portage backend]),enable_portage=$enableval,enable_portage=no)
AC_ARG_ENABLE(razor, AS_HELP_STRING([--enable-razor],[use the razor backend]),enable_razor=$enableval,enable_razor=no)
AC_ARG_ENABLE(smart, AS_HELP_STRING([--enable-smart],[use the SMART backend]),enable_smart=$enableval,enable_smart=no)
AC_ARG_ENABLE(urpmi, AS_HELP_STRING([--enable-urpmi],[use the URPMI backend]),enable_urpmi=$enableval,enable_urpmi=no)
@@ -480,6 +481,7 @@ AM_CONDITIONAL(BACKEND_TYPE_DUMMY, [test x$enable_dummy = xyes])
AM_CONDITIONAL(BACKEND_TYPE_OPKG, [test x$enable_opkg = xyes])
AM_CONDITIONAL(BACKEND_TYPE_PISI, [test x$enable_pisi = xyes])
AM_CONDITIONAL(BACKEND_TYPE_POLDEK, [test x$enable_poldek = xyes])
+AM_CONDITIONAL(BACKEND_TYPE_PORTAGE, [test x$enable_portage = xyes])
AM_CONDITIONAL(BACKEND_TYPE_RAZOR, [test x$enable_razor = xyes])
AM_CONDITIONAL(BACKEND_TYPE_SMART, [test x$enable_smart = xyes])
AM_CONDITIONAL(BACKEND_TYPE_URPMI, [test x$enable_urpmi = xyes])
@@ -630,6 +632,8 @@ if test x$with_default_backend = x; then
with_default_backend=urpmi
elif test -f /usr/bin/zypper ; then
with_default_backend=zypp
+ elif test -f /usr/bin/emerge ; then
+ with_default_backend=portage
else
with_default_backend=dummy
fi
@@ -765,6 +769,7 @@ backends/razor/Makefile
backends/yum/Makefile
backends/pisi/Makefile
backends/poldek/Makefile
+backends/portage/Makefile
backends/zypp/Makefile
data/Makefile
data/org.freedesktop.PackageKit.conf
@@ -826,6 +831,7 @@ echo "
Razor backend: ${enable_razor}
PiSi backend: ${enable_pisi}
poldek backend: ${enable_poldek}
+ Portage backend: ${enable_portage}
SMART backend: ${enable_smart}
URPMI backend: ${enable_urpmi}
YUM backend: ${enable_yum}
commit da3c9e9e5ca200a7517bc7356fbbc6e968a018bf
Author: Richard Hughes <richard at hughsie.com>
Date: Thu May 14 19:18:37 2009 +0100
Add three properties on the main interface with the runtime daemon versions
diff --git a/lib/packagekit-glib/pk-version.h.in b/lib/packagekit-glib/pk-version.h.in
index 46a92bf..8153d1e 100644
--- a/lib/packagekit-glib/pk-version.h.in
+++ b/lib/packagekit-glib/pk-version.h.in
@@ -28,9 +28,9 @@
/* compile time version
*/
-#define PK_MAJOR_VERSION (@PK_MAJOR_VERSION@)
-#define PK_MINOR_VERSION (@PK_MINOR_VERSION@)
-#define PK_MICRO_VERSION (@PK_MICRO_VERSION@)
+#define PK_MAJOR_VERSION (@PK_MAJOR_VERSION@)
+#define PK_MINOR_VERSION (@PK_MINOR_VERSION@)
+#define PK_MICRO_VERSION (@PK_MICRO_VERSION@)
/* check whether a PackageKit version equal to or greater than
* major.minor.micro.
diff --git a/src/org.freedesktop.PackageKit.xml b/src/org.freedesktop.PackageKit.xml
index 33e4499..ae6518f 100644
--- a/src/org.freedesktop.PackageKit.xml
+++ b/src/org.freedesktop.PackageKit.xml
@@ -14,6 +14,35 @@
</doc:doc>
<!--*****************************************************************************************-->
+ <property name="version-major" type="u" access="read">
+ <doc:doc>
+ <doc:description>
+ <doc:para>
+ The major version number.
+ </doc:para>
+ </doc:description>
+ </doc:doc>
+ </property>
+ <property name="version-minor" type="u" access="read">
+ <doc:doc>
+ <doc:description>
+ <doc:para>
+ The minor version number.
+ </doc:para>
+ </doc:description>
+ </doc:doc>
+ </property>
+ <property name="version-micro" type="u" access="read">
+ <doc:doc>
+ <doc:description>
+ <doc:para>
+ The micro version number.
+ </doc:para>
+ </doc:description>
+ </doc:doc>
+ </property>
+
+ <!--*****************************************************************************************-->
<method name="GetActions">
<doc:doc>
<doc:description>
diff --git a/src/pk-engine.c b/src/pk-engine.c
index 5ac329d..63f1145 100644
--- a/src/pk-engine.c
+++ b/src/pk-engine.c
@@ -121,6 +121,14 @@ enum {
PK_ENGINE_LAST_SIGNAL
};
+enum {
+ PROP_0,
+ PROP_VERSION_MAJOR,
+ PROP_VERSION_MINOR,
+ PROP_VERSION_MICRO,
+ PROP_LAST,
+};
+
static guint signals [PK_ENGINE_LAST_SIGNAL] = { 0 };
G_DEFINE_TYPE (PkEngine, pk_engine, G_TYPE_OBJECT)
@@ -631,17 +639,79 @@ out:
}
/**
+ * pk_engine_get_property:
+ **/
+static void
+pk_engine_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+ switch (prop_id) {
+ case PROP_VERSION_MAJOR:
+ g_value_set_uint (value, PK_MAJOR_VERSION);
+ break;
+ case PROP_VERSION_MINOR:
+ g_value_set_uint (value, PK_MINOR_VERSION);
+ break;
+ case PROP_VERSION_MICRO:
+ g_value_set_uint (value, PK_MICRO_VERSION);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+/**
+ * pk_engine_set_property:
+ **/
+static void
+pk_engine_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+ switch (prop_id) {
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+/**
* pk_engine_class_init:
* @klass: The PkEngineClass
**/
static void
pk_engine_class_init (PkEngineClass *klass)
{
+ GParamSpec *pspec;
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = pk_engine_finalize;
-
- /* set up signal that emits 'au' */
+ object_class->get_property = pk_engine_get_property;
+ object_class->set_property = pk_engine_set_property;
+
+ /**
+ * PkEngine:version-major:
+ */
+ pspec = g_param_spec_uint ("version-major", NULL, NULL,
+ 0, G_MAXUINT, 0,
+ G_PARAM_READWRITE);
+ g_object_class_install_property (object_class, PROP_VERSION_MAJOR, pspec);
+
+ /**
+ * PkEngine:version-minor:
+ */
+ pspec = g_param_spec_uint ("version-minor", NULL, NULL,
+ 0, G_MAXUINT, 0,
+ G_PARAM_READWRITE);
+ g_object_class_install_property (object_class, PROP_VERSION_MINOR, pspec);
+
+ /**
+ * PkEngine:version-micro:
+ */
+ pspec = g_param_spec_uint ("version-micro", NULL, NULL,
+ 0, G_MAXUINT, 0,
+ G_PARAM_READWRITE);
+ g_object_class_install_property (object_class, PROP_VERSION_MICRO, pspec);
+
+ /* signals */
signals [PK_ENGINE_LOCKED] =
g_signal_new ("locked",
G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
commit 22c9b907106c1d43e82e1fcaf577ccfd858f5718
Author: Richard Hughes <richard at hughsie.com>
Date: Thu May 14 14:57:52 2009 +0100
Add a PK_CHECK_VERSION macro
diff --git a/configure.ac b/configure.ac
index 89a351d..a381076 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,11 +1,27 @@
+# Copyright (C) 2007-2009 Richard Hughes <richard at hughsie.com>
AC_PREREQ(2.52)
-AC_INIT(PackageKit, 0.4.8)
+m4_define([pk_major_version], [0])
+m4_define([pk_minor_version], [4])
+m4_define([pk_micro_version], [8])
+m4_define([pk_version],
+ [pk_major_version.pk_minor_version.pk_micro_version])
+
+AC_INIT(PackageKit, [pk_version])
AC_CONFIG_SRCDIR(src)
AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
AM_CONFIG_HEADER(config.h)
AC_CONFIG_MACRO_DIR([m4])
+PK_MAJOR_VERSION=pk_major_version
+PK_MINOR_VERSION=pk_minor_version
+PK_MICRO_VERSION=pk_micro_version
+PK_VERSION=pk_version
+AC_SUBST(PK_MAJOR_VERSION)
+AC_SUBST(PK_MINOR_VERSION)
+AC_SUBST(PK_MICRO_VERSION)
+AC_SUBST(PK_VERSION)
+
# Should we enable extra stuff automatically?
# set no for release builds, yes for development builds
DEVELOPMENT_RELEASE=yes
@@ -769,6 +785,7 @@ data/Makefile
data/org.freedesktop.PackageKit.conf
data/tests/Makefile
lib/Makefile
+lib/packagekit-glib/pk-version.h
lib/packagekit-glib/Makefile
lib/packagekit-glib/packagekit-glib.pc
lib/packagekit-qt/Makefile
diff --git a/lib/packagekit-glib/.gitignore b/lib/packagekit-glib/.gitignore
index c9d3c55..5d3c4af 100644
--- a/lib/packagekit-glib/.gitignore
+++ b/lib/packagekit-glib/.gitignore
@@ -13,4 +13,5 @@ pk-self-test
*.txt
*.out
*.db
+pk-version.h
diff --git a/lib/packagekit-glib/Makefile.am b/lib/packagekit-glib/Makefile.am
index d32b1cc..07e3d67 100644
--- a/lib/packagekit-glib/Makefile.am
+++ b/lib/packagekit-glib/Makefile.am
@@ -33,6 +33,7 @@ libpackagekit_glib_includedir = $(includedir)/PackageKit/packagekit-glib
libpackagekit_glib_include_HEADERS = \
packagekit.h \
+ pk-version.h \
pk-desktop.h \
pk-connection.h \
pk-package-id.h \
@@ -61,6 +62,7 @@ libpackagekit_glib_la_SOURCES = \
egg-debug.h \
egg-string.c \
egg-string.h \
+ pk-version.h \
pk-marshal.c \
pk-marshal.h \
pk-desktop.c \
@@ -151,6 +153,7 @@ endif
EXTRA_DIST = \
packagekit-glib.pc.in \
+ pk-version.h.in \
pk-marshal.list
BUILT_SOURCES = \
diff --git a/lib/packagekit-glib/packagekit.h b/lib/packagekit-glib/packagekit.h
index 1818b86..a89e506 100644
--- a/lib/packagekit-glib/packagekit.h
+++ b/lib/packagekit-glib/packagekit.h
@@ -24,6 +24,7 @@
#define __PACKAGEKIT_H_INSIDE__
+#include <packagekit-glib/pk-version.h>
#include <packagekit-glib/pk-bitfield.h>
#include <packagekit-glib/pk-catalog.h>
#include <packagekit-glib/pk-category-obj.h>
diff --git a/lib/packagekit-glib/pk-version.h.in b/lib/packagekit-glib/pk-version.h.in
new file mode 100644
index 0000000..46a92bf
--- /dev/null
+++ b/lib/packagekit-glib/pk-version.h.in
@@ -0,0 +1,44 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2009 Richard Hughes <richard at hughsie.com>
+ *
+ * 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.
+ */
+
+#if !defined (__PACKAGEKIT_H_INSIDE__) && !defined (PK_COMPILATION)
+#error "Only <packagekit.h> can be included directly."
+#endif
+
+#ifndef __PK_VERSION_H
+#define __PK_VERSION_H
+
+/* compile time version
+ */
+#define PK_MAJOR_VERSION (@PK_MAJOR_VERSION@)
+#define PK_MINOR_VERSION (@PK_MINOR_VERSION@)
+#define PK_MICRO_VERSION (@PK_MICRO_VERSION@)
+
+/* check whether a PackageKit version equal to or greater than
+ * major.minor.micro.
+ */
+#define PK_CHECK_VERSION(major,minor,micro) \
+ (PK_MAJOR_VERSION > (major) || \
+ (PK_MAJOR_VERSION == (major) && PK_MINOR_VERSION > (minor)) || \
+ (PK_MAJOR_VERSION == (major) && PK_MINOR_VERSION == (minor) && \
+ PK_MICRO_VERSION >= (micro)))
+
+#endif /* __PK_VERSION_H */
commit 76903972eefba8c8df28c93522f7201d88b205d5
Author: Richard Hughes <richard at hughsie.com>
Date: Thu May 14 10:36:28 2009 +0100
Add some self tests to PkEngine to ensure that the signals are being sent correctly
diff --git a/src/pk-engine.c b/src/pk-engine.c
index 3bb4963..5ac329d 100644
--- a/src/pk-engine.c
+++ b/src/pk-engine.c
@@ -893,14 +893,93 @@ pk_engine_new (void)
#ifdef EGG_TEST
#include "egg-test.h"
+static PkNotify *notify = NULL;
+static gboolean _quit = FALSE;
+static gboolean _locked = FALSE;
+static gboolean _restart_schedule = FALSE;
+
+/**
+ * pk_test_quit_cb:
+ **/
+static void
+pk_test_quit_cb (PkEngine *engine, EggTest *test)
+{
+ _quit = TRUE;
+}
+
+/**
+ * pk_test_locked_cb:
+ **/
+static void
+pk_test_locked_cb (PkEngine *engine, gboolean is_locked, EggTest *test)
+{
+ _locked = is_locked;
+}
+
+/**
+ * pk_test_updates_changed_cb:
+ **/
+static void
+pk_test_updates_changed_cb (PkEngine *engine, EggTest *test)
+{
+ egg_test_loop_quit (test);
+}
+
+/**
+ * pk_test_repo_list_changed_cb:
+ **/
+static void
+pk_test_repo_list_changed_cb (PkEngine *engine, EggTest *test)
+{
+ egg_test_loop_quit (test);
+}
+
+/**
+ * pk_test_restart_schedule_cb:
+ **/
+static void
+pk_test_restart_schedule_cb (PkEngine *engine, EggTest *test)
+{
+ _restart_schedule = TRUE;
+ egg_test_loop_quit (test);
+}
+
+/**
+ * pk_test_emit_updates_changed_cb:
+ **/
+static gboolean
+pk_test_emit_updates_changed_cb (EggTest *test)
+{
+ PkNotify *notify2;
+ notify2 = pk_notify_new ();
+ pk_notify_updates_changed (notify2);
+ g_object_unref (notify2);
+ return FALSE;
+}
+
+/**
+ * pk_test_emit_repo_list_changed_cb:
+ **/
+static gboolean
+pk_test_emit_repo_list_changed_cb (EggTest *test)
+{
+ PkNotify *notify2;
+ notify2 = pk_notify_new ();
+ pk_notify_repo_list_changed (notify2);
+ g_object_unref (notify2);
+ return FALSE;
+}
+
void
pk_engine_test (EggTest *test)
{
gboolean ret;
PkEngine *engine;
PkBackend *backend;
+ PkInhibit *inhibit;
guint idle;
gchar *actions;
+ guint elapsed;
if (!egg_test_start (test, "PkEngine"))
return;
@@ -916,6 +995,11 @@ pk_engine_test (EggTest *test)
backend = pk_backend_new ();
egg_test_assert (test, backend != NULL);
+ /************************************************************/
+ egg_test_title (test, "get a notify instance");
+ notify = pk_notify_new ();
+ egg_test_assert (test, notify != NULL);
+
/* set the type, as we have no pk-main doing this for us */
/************************************************************/
egg_test_title (test, "set the backend name");
@@ -927,7 +1011,21 @@ pk_engine_test (EggTest *test)
engine = pk_engine_new ();
egg_test_assert (test, engine != NULL);
- /************************************************************/
+ /* connect up signals */
+ g_signal_connect (engine, "quit",
+ G_CALLBACK (pk_test_quit_cb), test);
+ g_signal_connect (engine, "locked",
+ G_CALLBACK (pk_test_locked_cb), test);
+ g_signal_connect (engine, "updates-changed",
+ G_CALLBACK (pk_test_updates_changed_cb), test);
+ g_signal_connect (engine, "repo-list-changed",
+ G_CALLBACK (pk_test_repo_list_changed_cb), test);
+ g_signal_connect (engine, "restart-schedule",
+ G_CALLBACK (pk_test_restart_schedule_cb), test);
+
+ /************************************************************
+ ********** GET IDLE TIMES ***********
+ ************************************************************/
egg_test_title (test, "get idle at startup");
idle = pk_engine_get_seconds_idle (engine);
if (idle < 1)
@@ -956,7 +1054,93 @@ pk_engine_test (EggTest *test)
else
egg_test_failed (test, "idle = %i", idle);
+ /************************************************************
+ ********** TEST PROXY NOTIFY ***********
+ ************************************************************/
+ egg_test_title (test, "force test notify updates-changed");
+ g_timeout_add (25, (GSourceFunc) pk_test_emit_updates_changed_cb, test);
+ egg_test_success (test, NULL);
+ egg_test_loop_wait (test, 50);
+ egg_test_loop_check (test);
+
+ /************************************************************/
+ egg_test_title (test, "force test notify repo-list-changed");
+ g_timeout_add (25, (GSourceFunc) pk_test_emit_repo_list_changed_cb, test);
+ egg_test_success (test, NULL);
+ egg_test_loop_wait (test, 50);
+ egg_test_loop_check (test);
+
+ /************************************************************/
+ egg_test_title (test, "force test notify wait updates-changed");
+ pk_notify_wait_updates_changed (notify, 500);
+ egg_test_loop_wait (test, 1000);
+ elapsed = egg_test_elapsed (test);
+ if (elapsed > 400 && elapsed < 600)
+ egg_test_success (test, NULL);
+ else
+ egg_test_failed (test, "failed to quit (%i)", elapsed);
+
+ /************************************************************
+ ********** LOCKING ***********
+ ************************************************************/
+ egg_test_title (test, "test locked");
+ inhibit = pk_inhibit_new ();
+ pk_inhibit_add (inhibit, GUINT_TO_POINTER (999));
+ if (_locked)
+ egg_test_success (test, NULL);
+ else
+ egg_test_failed (test, "not locked");
+
+ /************************************************************/
+ egg_test_title (test, "test locked");
+ pk_inhibit_remove (inhibit, GUINT_TO_POINTER (999));
+ if (!_locked)
+ egg_test_success (test, NULL);
+ else
+ egg_test_failed (test, "not locked");
+ g_object_unref (inhibit);
+
+ /************************************************************/
+ egg_test_title (test, "test not locked");
+ if (!_locked)
+ egg_test_success (test, NULL);
+ else
+ egg_test_failed (test, "still locked");
+
+ /************************************************************
+ ********** BINARY UPGRADE TEST ***********
+ ************************************************************/
+ egg_test_title_assert (test, "restart_schedule not set", !_restart_schedule);
+ ret = g_file_set_contents (SBINDIR "/packagekitd", "overwrite", -1, NULL);
+
+ /************************************************************/
+ egg_test_title_assert (test, "touched binary file", ret);
+ egg_test_loop_wait (test, 5000);
+
+ /************************************************************/
+ egg_test_title (test, "get idle after we touched the binary");
+ idle = pk_engine_get_seconds_idle (engine);
+ if (idle == G_MAXUINT)
+ egg_test_success (test, NULL);
+ else
+ egg_test_failed (test, "idle = %i", idle);
+
+ /************************************************************/
+ egg_test_title_assert (test, "restart_schedule set", _restart_schedule);
+
+ /************************************************************
+ ********** DAEMON QUIT ***********
+ ************************************************************/
+ egg_test_title_assert (test, "not already quit", !_quit);
+ egg_test_title (test, "suggest quit with no transactions (should get quit signal)");
+ pk_engine_suggest_daemon_quit (engine, NULL);
+ if (_quit)
+ egg_test_success (test, NULL);
+ else
+ egg_test_failed (test, "did not quit");
+
g_object_unref (backend);
+ g_object_unref (notify);
g_object_unref (engine);
egg_test_end (test);
commit 95bae5d929c07d6350028a63fc532d9fc1f16d68
Author: Richard Hughes <richard at hughsie.com>
Date: Thu May 14 10:34:31 2009 +0100
Fix the logic of ::RestartSchedule and don't make changing the config file prompt the session to reload
diff --git a/src/pk-engine.c b/src/pk-engine.c
index 4c42e71..3bb4963 100644
--- a/src/pk-engine.c
+++ b/src/pk-engine.c
@@ -88,7 +88,8 @@ static void pk_engine_finalize (GObject *object);
struct PkEnginePrivate
{
GTimer *timer;
- gboolean restart_schedule;
+ gboolean notify_clients_of_upgrade;
+ gboolean shutdown_as_soon_as_possible;
PkTransactionList *transaction_list;
PkTransactionDb *transaction_db;
PkCache *cache;
@@ -99,7 +100,8 @@ struct PkEnginePrivate
PkSecurity *security;
PkNotify *notify;
PkConf *conf;
- PkFileMonitor *file_monitor;
+ PkFileMonitor *file_monitor_conf;
+ PkFileMonitor *file_monitor_binary;
PkBitfield actions;
PkBitfield groups;
PkBitfield filters;
@@ -530,12 +532,18 @@ pk_engine_get_seconds_idle (PkEngine *engine)
}
/* have we been updated? */
- if (engine->priv->restart_schedule) {
- egg_debug ("need to restart daemon *NOW*");
+ if (engine->priv->notify_clients_of_upgrade) {
+ egg_debug ("emitting restart-schedule because of binary change");
g_signal_emit (engine, signals [PK_ENGINE_RESTART_SCHEDULE], 0);
return G_MAXUINT;
}
+ /* do we need to shutdown quickly */
+ if (engine->priv->shutdown_as_soon_as_possible) {
+ egg_debug ("need to restart daemon asap");
+ return G_MAXUINT;
+ }
+
idle = (guint) g_timer_elapsed (engine->priv->timer, NULL);
return idle;
}
@@ -561,7 +569,7 @@ pk_engine_suggest_daemon_quit (PkEngine *engine, GError **error)
/* This will wait from 0..10 seconds, depending on the status of
* pk_main_timeout_check_cb() - usually it should be a few seconds
* after the last transaction */
- engine->priv->restart_schedule = TRUE;
+ engine->priv->shutdown_as_soon_as_possible = TRUE;
return TRUE;
}
@@ -674,14 +682,27 @@ pk_engine_class_init (PkEngineClass *klass)
}
/**
- * pk_engine_file_monitor_changed_cb:
+ * pk_engine_conf_file_changed_cb:
+ *
+ * A config file has changed, we need to reload the daemon
+ **/
+static void
+pk_engine_conf_file_changed_cb (PkFileMonitor *file_monitor, PkEngine *engine)
+{
+ g_return_if_fail (PK_IS_ENGINE (engine));
+ egg_debug ("setting shutdown_as_soon_as_possible TRUE");
+ engine->priv->shutdown_as_soon_as_possible = TRUE;
+}
+
+/**
+ * pk_engine_binary_file_changed_cb:
**/
static void
-pk_engine_file_monitor_changed_cb (PkFileMonitor *file_monitor, PkEngine *engine)
+pk_engine_binary_file_changed_cb (PkFileMonitor *file_monitor, PkEngine *engine)
{
g_return_if_fail (PK_IS_ENGINE (engine));
- egg_debug ("setting restart_schedule TRUE");
- engine->priv->restart_schedule = TRUE;
+ egg_debug ("setting notify_clients_of_upgrade TRUE");
+ engine->priv->notify_clients_of_upgrade = TRUE;
}
/**
@@ -710,7 +731,8 @@ pk_engine_init (PkEngine *engine)
gchar *proxy_ftp;
engine->priv = PK_ENGINE_GET_PRIVATE (engine);
- engine->priv->restart_schedule = FALSE;
+ engine->priv->notify_clients_of_upgrade = FALSE;
+ engine->priv->shutdown_as_soon_as_possible = FALSE;
engine->priv->mime_types = NULL;
/* use the config file */
@@ -769,13 +791,19 @@ pk_engine_init (PkEngine *engine)
G_CALLBACK (pk_engine_notify_updates_changed_cb), engine);
/* monitor the config file for changes */
- engine->priv->file_monitor = pk_file_monitor_new ();
+ engine->priv->file_monitor_conf = pk_file_monitor_new ();
filename = pk_conf_get_filename ();
- pk_file_monitor_set_file (engine->priv->file_monitor, filename);
- g_signal_connect (engine->priv->file_monitor, "file-changed",
- G_CALLBACK (pk_engine_file_monitor_changed_cb), engine);
+ pk_file_monitor_set_file (engine->priv->file_monitor_conf, filename);
+ g_signal_connect (engine->priv->file_monitor_conf, "file-changed",
+ G_CALLBACK (pk_engine_conf_file_changed_cb), engine);
g_free (filename);
+ /* monitor the binary file for changes */
+ engine->priv->file_monitor_binary = pk_file_monitor_new ();
+ pk_file_monitor_set_file (engine->priv->file_monitor_binary, SBINDIR "/packagekitd");
+ g_signal_connect (engine->priv->file_monitor_binary, "file-changed",
+ G_CALLBACK (pk_engine_binary_file_changed_cb), engine);
+
/* set the proxy */
proxy_http = pk_conf_get_string (engine->priv->conf, "ProxyHTTP");
proxy_ftp = pk_conf_get_string (engine->priv->conf, "ProxyFTP");
@@ -829,7 +857,8 @@ pk_engine_finalize (GObject *object)
/* compulsory gobjects */
g_timer_destroy (engine->priv->timer);
- g_object_unref (engine->priv->file_monitor);
+ g_object_unref (engine->priv->file_monitor_conf);
+ g_object_unref (engine->priv->file_monitor_binary);
g_object_unref (engine->priv->inhibit);
g_object_unref (engine->priv->transaction_list);
g_object_unref (engine->priv->transaction_db);
commit 1cac7e5546d47e75553ad2209ef042313e473a2d
Author: Richard Hughes <richard at hughsie.com>
Date: Thu May 14 10:34:00 2009 +0100
Be more forgiving in the self test when checking the time to create a TID
diff --git a/src/pk-transaction-db.c b/src/pk-transaction-db.c
index 39b1d41..c2dbacd 100644
--- a/src/pk-transaction-db.c
+++ b/src/pk-transaction-db.c
@@ -801,7 +801,7 @@ pk_transaction_db_test (EggTest *test)
egg_test_title (test, "get an tid object");
tid = pk_transaction_db_generate_id (db);
ms = egg_test_elapsed (test);
- if (ms < 5)
+ if (ms < 10)
egg_test_success (test, "acceptable time %ims", ms);
else
egg_test_failed (test, "took a long time: %ims", ms);
commit 53e18773b5a41213d1a7dead6d8e9303000109fb
Author: Richard Hughes <richard at hughsie.com>
Date: Thu May 14 10:29:51 2009 +0100
Don't proxy RestartSchedule to PkNotify, only the daemon uses it
diff --git a/src/pk-engine.c b/src/pk-engine.c
index d2a8f37..4c42e71 100644
--- a/src/pk-engine.c
+++ b/src/pk-engine.c
@@ -214,17 +214,6 @@ pk_engine_notify_repo_list_changed_cb (PkNotify *notify, PkEngine *engine)
}
/**
- * pk_engine_notify_restart_schedule_cb:
- **/
-static void
-pk_engine_notify_restart_schedule_cb (PkNotify *notify, PkEngine *engine)
-{
- g_return_if_fail (PK_IS_ENGINE (engine));
- egg_debug ("emitting restart-schedule");
- g_signal_emit (engine, signals [PK_ENGINE_RESTART_SCHEDULE], 0);
-}
-
-/**
* pk_engine_notify_updates_changed_cb:
**/
static void
@@ -543,7 +532,7 @@ pk_engine_get_seconds_idle (PkEngine *engine)
/* have we been updated? */
if (engine->priv->restart_schedule) {
egg_debug ("need to restart daemon *NOW*");
- pk_notify_restart_schedule (engine->priv->notify);
+ g_signal_emit (engine, signals [PK_ENGINE_RESTART_SCHEDULE], 0);
return G_MAXUINT;
}
@@ -774,8 +763,6 @@ pk_engine_init (PkEngine *engine)
/* add the interface */
engine->priv->notify = pk_notify_new ();
- g_signal_connect (engine->priv->notify, "restart-schedule",
- G_CALLBACK (pk_engine_notify_restart_schedule_cb), engine);
g_signal_connect (engine->priv->notify, "repo-list-changed",
G_CALLBACK (pk_engine_notify_repo_list_changed_cb), engine);
g_signal_connect (engine->priv->notify, "updates-changed",
diff --git a/src/pk-notify.c b/src/pk-notify.c
index 774baa7..2ff39be 100644
--- a/src/pk-notify.c
+++ b/src/pk-notify.c
@@ -47,7 +47,6 @@ struct PkNotifyPrivate
enum {
PK_NOTIFY_REPO_LIST_CHANGED,
- PK_NOTIFY_RESTART_SCHEDULE,
PK_NOTIFY_UPDATES_CHANGED,
PK_NOTIFY_LAST_SIGNAL
};
@@ -58,19 +57,6 @@ static guint signals [PK_NOTIFY_LAST_SIGNAL] = { 0 };
G_DEFINE_TYPE (PkNotify, pk_notify, G_TYPE_OBJECT)
/**
- * pk_notify_restart_schedule:
- **/
-gboolean
-pk_notify_restart_schedule (PkNotify *notify)
-{
- g_return_val_if_fail (PK_IS_NOTIFY (notify), FALSE);
-
- egg_debug ("emitting restart-schedule");
- g_signal_emit (notify, signals [PK_NOTIFY_RESTART_SCHEDULE], 0);
- return TRUE;
-}
-
-/**
* pk_notify_repo_list_changed:
**/
gboolean
@@ -157,11 +143,6 @@ pk_notify_class_init (PkNotifyClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = pk_notify_finalize;
- signals [PK_NOTIFY_RESTART_SCHEDULE] =
- g_signal_new ("restart-schedule",
- G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
- 0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
signals [PK_NOTIFY_REPO_LIST_CHANGED] =
g_signal_new ("repo-list-changed",
G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
diff --git a/src/pk-notify.h b/src/pk-notify.h
index d941690..52661cd 100644
--- a/src/pk-notify.h
+++ b/src/pk-notify.h
@@ -53,7 +53,6 @@ gboolean pk_notify_repo_list_changed (PkNotify *notify);
gboolean pk_notify_updates_changed (PkNotify *notify);
gboolean pk_notify_wait_updates_changed (PkNotify *notify,
guint timeout);
-gboolean pk_notify_restart_schedule (PkNotify *notify);
G_END_DECLS
commit 77b855c1a2ffd1bc4406c0e0cff6c757a496a795
Author: Richard Hughes <richard at hughsie.com>
Date: Thu May 14 10:25:13 2009 +0100
When we do SuggestDaemonQuit with no transactions, exit the daemon using the mainloop rather than just doing exit()
diff --git a/src/pk-engine.c b/src/pk-engine.c
index e5190a7..d2a8f37 100644
--- a/src/pk-engine.c
+++ b/src/pk-engine.c
@@ -115,6 +115,7 @@ enum {
PK_ENGINE_NETWORK_STATE_CHANGED,
PK_ENGINE_RESTART_SCHEDULE,
PK_ENGINE_UPDATES_CHANGED,
+ PK_ENGINE_QUIT,
PK_ENGINE_LAST_SIGNAL
};
@@ -563,8 +564,8 @@ pk_engine_suggest_daemon_quit (PkEngine *engine, GError **error)
/* can we exit straight away */
size = pk_transaction_list_get_size (engine->priv->transaction_list);
if (size == 0) {
- egg_warning ("exit!!");
- exit (0);
+ egg_debug ("emitting quit");
+ g_signal_emit (engine, signals [PK_ENGINE_QUIT], 0);
return TRUE;
}
@@ -674,6 +675,11 @@ pk_engine_class_init (PkEngineClass *klass)
G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
+ signals [PK_ENGINE_QUIT] =
+ g_signal_new ("quit",
+ G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
+ 0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
g_type_class_add_private (klass, sizeof (PkEnginePrivate));
}
diff --git a/src/pk-main.c b/src/pk-main.c
index d5853f9..f022aa2 100644
--- a/src/pk-main.c
+++ b/src/pk-main.c
@@ -146,6 +146,16 @@ pk_main_timeout_check_cb (PkEngine *engine)
}
/**
+ * pk_main_quit_cb:
+ **/
+static void
+pk_main_quit_cb (PkEngine *engine, GMainLoop *mainloop)
+{
+ egg_debug ("engine quit");
+ g_main_loop_quit (mainloop);
+}
+
+/**
* pk_main_sigint_handler:
**/
static void
@@ -309,8 +319,12 @@ main (int argc, char *argv[])
if (!ret)
egg_error ("cannot continue, backend invalid");
+ loop = g_main_loop_new (NULL, FALSE);
+
/* create a new engine object */
engine = pk_engine_new ();
+ g_signal_connect (engine, "quit",
+ G_CALLBACK (pk_main_quit_cb), loop);
if (!pk_object_register (system_connection, G_OBJECT (engine), &error)) {
/* TRANSLATORS: cannot register on system bus, unknown reason */
@@ -319,8 +333,6 @@ main (int argc, char *argv[])
goto out;
}
- loop = g_main_loop_new (NULL, FALSE);
-
/* Only timeout and close the mainloop if we have specified it
* on the command line */
if (timed_exit)
@@ -334,13 +346,14 @@ main (int argc, char *argv[])
if (immediate_exit)
g_timeout_add (50, (GSourceFunc) timed_exit_cb, loop);
+ /* run until quit */
g_main_loop_run (loop);
- g_main_loop_unref (loop);
out:
/* log the shutdown */
pk_syslog_add (syslog, PK_SYSLOG_TYPE_INFO, "daemon quit");
+ g_main_loop_unref (loop);
g_object_unref (syslog);
g_object_unref (conf);
g_object_unref (engine);
commit 310a9afa3f4676027e009ab79139f206e76eb595
Author: Richard Hughes <richard at hughsie.com>
Date: Thu May 14 10:20:35 2009 +0100
Clarify the gtk-doc markup for PkControl::restart-schedule
diff --git a/lib/packagekit-glib/pk-control.c b/lib/packagekit-glib/pk-control.c
index 2ab5a42..721b575 100644
--- a/lib/packagekit-glib/pk-control.c
+++ b/lib/packagekit-glib/pk-control.c
@@ -879,11 +879,13 @@ pk_control_class_init (PkControlClass *klass)
NULL, NULL, g_cclosure_marshal_VOID__UINT,
G_TYPE_NONE, 1, G_TYPE_UINT);
/**
- * PkControl::restart_schedule:
+ * PkControl::restart-schedule:
* @control: the #PkControl instance that emitted the signal
*
- * The ::restart_schedule signal is emitted when the service has been
- * restarted. Client programs should reload themselves.
+ * The ::restart_schedule signal is emitted when the packagekitd service
+ * has been restarted because it has been upgraded.
+ * Client programs should reload themselves when it is convenient to
+ * do so, as old client tools may not be compatable with the new daemon.
**/
signals [PK_CONTROL_RESTART_SCHEDULE] =
g_signal_new ("restart-schedule",
commit 3f077261c4f63b288ee308c15639b74dc27d0096
Author: Richard Hughes <richard at hughsie.com>
Date: Thu May 14 08:49:27 2009 +0100
Add a trivial script to update the LINGUAS for me
diff --git a/po/update-linguas.sh b/po/update-linguas.sh
new file mode 100755
index 0000000..d0224d4
--- /dev/null
+++ b/po/update-linguas.sh
@@ -0,0 +1 @@
+ls *.po | cut -d. -f1 > LINGUAS
commit 5d8c5c135ff206216ab9cf1a7a3a6421f9a0c62e
Author: Richard Hughes <richard at hughsie.com>
Date: Thu May 14 08:48:59 2009 +0100
Update LINGUAS with the new translations
diff --git a/po/LINGUAS b/po/LINGUAS
index 42c547c..ce23a3f 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1,3 +1,4 @@
+as
bn_IN
ca
cs
@@ -12,11 +13,13 @@ gu
he
hu
it
+kn
ml
mr
ms
nb
nl
+or
pa
pl
pt_BR
@@ -27,6 +30,9 @@ sk
sr at latin
sr
sv
+ta
+te
+th
tr
zh_CN
zh_TW
commit 58e89258a133455c5134624f8b2911cf79a33a1f
Author: willwill <willwill at fedoraproject.org>
Date: Thu May 14 01:13:43 2009 +0000
Sending translation for po/th.po
diff --git a/po/th.po b/po/th.po
new file mode 100644
index 0000000..f9f3b38
--- /dev/null
+++ b/po/th.po
@@ -0,0 +1,411 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-11-09 12:10+0000\n"
+"PO-Revision-Date: 2008-12-05 18:14+0700\n"
+"Last-Translator: Manatsawin <whs at whsgroup.ath.cx>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:1
+msgid "Accept EULA"
+msgstr "ยà¸à¸¡à¸£à¸±à¸à¸à¹à¸à¸à¸à¸¥à¸à¸ªà¸±à¸à¸à¸²à¸à¸à¸¸à¸à¸²à¸"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:2
+msgid "Authentication is required to accept a EULA"
+msgstr "à¸à¹à¸à¸à¸¢à¸¶à¸à¸¢à¸±à¸à¸à¸±à¸§à¹à¸à¸·à¹à¸à¸¢à¸à¸¡à¸£à¸±à¸à¸à¹à¸à¸à¸à¸¥à¸à¸ªà¸±à¸à¸à¸²à¸à¸à¸¸à¸à¸²à¸"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:3
+msgid "Authentication is required to change software source parameters"
+msgstr "à¸à¹à¸à¸à¸¢à¸¶à¸à¸¢à¸±à¸à¸à¸±à¸§à¹à¸à¸·à¹à¸à¹à¸à¸¥à¸µà¹à¸¢à¸à¹à¸à¸¥à¸à¸à¸²à¸£à¸²à¸¡à¸´à¹à¸à¸à¸£à¹à¸à¸¥à¸±à¸à¸à¸à¸à¸à¹à¹à¸§à¸£à¹"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:4
+msgid "Authentication is required to install a local file"
+msgstr "à¸à¹à¸à¸à¸¢à¸¶à¸à¸¢à¸±à¸à¸à¸±à¸§à¹à¸à¸·à¹à¸à¸à¸´à¸à¸à¸±à¹à¸à¹à¸à¸¥à¹à¸à¸à¹à¸à¸£à¸·à¹à¸à¸"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:5
+msgid "Authentication is required to install a package"
+msgstr "à¸à¹à¸à¸à¸¢à¸¶à¸à¸¢à¸±à¸à¸à¸±à¸§à¹à¸à¸·à¹à¸à¸à¸´à¸à¸à¸±à¹à¸à¹à¸à¸à¹à¸à¸"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:6
+msgid "Authentication is required to install a security signature"
+msgstr "à¸à¹à¸à¸à¸¢à¸¶à¸à¸¢à¸±à¸à¸à¸±à¸§à¹à¸à¸·à¹à¸à¸à¸´à¸à¸à¸±à¹à¸à¸¥à¸²à¸¢à¹à¸à¹à¸à¸£à¸±à¸à¸£à¸à¸à¸à¸§à¸²à¸¡à¸à¸¥à¸à¸à¸ ัย"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:7
+msgid "Authentication is required to refresh the package lists"
+msgstr "à¸à¹à¸à¸à¸¢à¸¶à¸à¸¢à¸±à¸à¸à¸±à¸§à¹à¸à¸·à¹à¸à¹à¸£à¸µà¸¢à¸à¸£à¸²à¸¢à¸à¸²à¸£à¹à¸à¸à¹à¸à¸à¹à¸«à¸¡à¹"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:8
+msgid "Authentication is required to remove packages"
+msgstr "à¸à¹à¸à¸à¸¢à¸¶à¸à¸¢à¸±à¸à¸à¸±à¸§à¹à¸à¸·à¹à¸à¸à¸à¸à¹à¸à¸à¹à¸à¸"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:9
+msgid "Authentication is required to rollback a transaction"
+msgstr "à¸à¹à¸à¸à¸¢à¸¶à¸à¸¢à¸±à¸à¸à¸±à¸§à¹à¸à¸·à¹à¸à¸¢à¸à¹à¸¥à¸´à¸à¸à¸²à¸£à¸à¸³à¹à¸à¸´à¸à¸à¸²à¸£"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:10
+msgid "Authentication is required to update all packages"
+msgstr "à¸à¹à¸à¸à¸¢à¸¶à¸à¸¢à¸±à¸à¸à¸±à¸§à¹à¸à¸·à¹à¸à¸à¸±à¸à¹à¸à¸à¹à¸à¸à¹à¸à¸à¸à¸±à¹à¸à¸«à¸¡à¸"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:11
+msgid "Authentication is required to update packages"
+msgstr "à¸à¹à¸à¸à¸¢à¸¶à¸à¸¢à¸±à¸à¸à¸±à¸§à¹à¸à¸·à¹à¸à¸à¸±à¸à¹à¸à¸à¹à¸à¸à¹à¸à¸"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:12
+msgid "Change software source parameters"
+msgstr "à¹à¸à¸¥à¸µà¹à¸¢à¸à¹à¸à¸¥à¸à¸à¸²à¸£à¸²à¸¡à¸´à¹à¸à¸à¸£à¹à¸à¸¥à¸±à¸à¸à¸à¸à¸à¹à¹à¸§à¸£à¹"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:13
+msgid "Further authentication is required to install an untrusted local file"
+msgstr "à¸à¹à¸à¸à¸¢à¸¶à¸à¸¢à¸±à¸à¸à¸±à¸§à¹à¸à¸·à¹à¸à¸à¸´à¸à¸à¸±à¹à¸à¹à¸à¸¥à¹à¸à¸µà¹à¹à¸¡à¹à¸à¹à¸²à¹à¸à¸·à¹à¸à¸à¸·à¸à¸à¸à¹à¸à¸£à¸·à¹à¸à¸"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:14
+msgid "Install local file"
+msgstr "à¸à¸´à¸à¸à¸±à¹à¸à¹à¸à¸à¹à¸à¸à¸à¸à¹à¸à¸£à¸·à¹à¸à¸"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:15
+msgid "Install package"
+msgstr "à¸à¸´à¸à¸à¸±à¹à¸à¹à¸à¸à¹à¸à¸"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:16
+msgid "Install security signature"
+msgstr "à¸à¸´à¸à¸à¸±à¹à¸à¸¥à¸²à¸¢à¹à¸à¹à¸à¸£à¸±à¸à¸£à¸à¸à¸à¸§à¸²à¸¡à¸à¸¥à¸à¸à¸ ัย"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:17
+msgid "Install untrusted local file"
+msgstr "à¸à¸´à¸à¸à¸±à¹à¸à¹à¸à¸¥à¹à¸à¸µà¹à¹à¸¡à¹à¸à¹à¸²à¹à¸à¸·à¹à¸à¸à¸·à¸à¸à¸à¹à¸à¸£à¸·à¹à¸à¸"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:18
+msgid "Refresh package lists"
+msgstr "à¹à¸£à¸µà¸¢à¸à¸£à¸²à¸¢à¸à¸²à¸£à¹à¸à¸à¹à¸à¸à¹à¸«à¸¡à¹"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:19
+msgid "Remove package"
+msgstr "à¸à¸à¸à¹à¸à¸à¹à¸à¸"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:20
+msgid "Rollback to a previous transaction"
+msgstr "à¸à¸à¸¢à¸à¸¥à¸±à¸à¹à¸à¸¢à¸±à¸à¸à¸²à¸£à¸à¸³à¹à¸à¸´à¸à¸à¸²à¸£à¸à¹à¸à¸à¸«à¸à¹à¸²"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:21
+msgid "Update all packages"
+msgstr "à¸à¸±à¸à¹à¸à¸à¹à¸à¸à¹à¸à¸à¸à¸±à¹à¸à¸«à¸¡à¸"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:22
+msgid "Update package"
+msgstr "à¸à¸±à¸à¹à¸à¸à¹à¸à¸à¹à¸à¸"
+
+#: ../client/pk-console.c:224
+msgid "Update detail"
+msgstr "รายละà¹à¸à¸µà¸¢à¸à¸à¸²à¸£à¸à¸±à¸à¹à¸à¸"
+
+#: ../client/pk-console.c:425
+msgid "A system restart is required"
+msgstr "à¸à¹à¸à¸à¹à¸£à¸´à¹à¸¡à¸à¹à¸à¸£à¸°à¸à¸à¹à¸«à¸¡à¹"
+
+#: ../client/pk-console.c:427
+msgid "A logout and login is required"
+msgstr "à¸à¹à¸à¸à¸à¸à¸à¸à¸²à¸à¸£à¸°à¸à¸à¹à¸¥à¸°à¹à¸à¹à¸²à¸ªà¸¹à¹à¸£à¸°à¸à¸à¹à¸«à¸¡à¹"
+
+#: ../client/pk-console.c:429
+msgid "An application restart is required"
+msgstr "à¸à¹à¸à¸à¹à¸£à¸´à¹à¸¡à¸à¹à¸à¹à¸à¸£à¹à¸à¸£à¸¡à¹à¸«à¸¡à¹"
+
+#: ../client/pk-console.c:474
+#, c-format
+msgid "Please enter a number from 1 to %i: "
+msgstr "à¸à¸£à¸¸à¸à¸²à¸à¹à¸à¸à¸à¸±à¸§à¹à¸¥à¸à¸à¸²à¸ 1 à¸à¸¶à¸ %i: "
+
+#: ../client/pk-console.c:524
+msgid "Could not find a package match"
+msgstr "à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸«à¸²à¹à¸à¸à¹à¸à¸à¸à¸µà¹à¸à¸£à¸à¸à¸±à¸à¹à¸à¹"
+
+#: ../client/pk-console.c:538
+msgid "There are multiple package matches"
+msgstr "มีà¹à¸à¸à¹à¸à¸à¸à¸µà¹à¸à¸£à¸à¸à¸±à¸à¸«à¸¥à¸²à¸¢à¸à¸±à¸§"
+
+#. find out what package the user wants to use
+#: ../client/pk-console.c:545
+msgid "Please enter the package number: "
+msgstr "à¸à¸£à¸¸à¸à¸²à¸à¹à¸à¸à¸«à¸¡à¸²à¸¢à¹à¸¥à¸à¹à¸à¸à¹à¸à¸: "
+
+#: ../client/pk-console.c:561
+msgid ""
+"Could not find a package with that name to install, or package already "
+"installed"
+msgstr ""
+"à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¹à¸à¸«à¸²à¹à¸à¸à¹à¸à¸à¸à¸·à¹à¸à¸à¸±à¸à¸à¸¥à¹à¸²à¸§à¹à¸à¸·à¹à¸à¸à¸´à¸à¸à¸±à¹à¸ "
+"หรืà¸à¹à¸à¸à¹à¸à¸à¸à¸±à¸à¸à¸¥à¹à¸²à¸§à¸à¸¹à¸à¸à¸´à¸à¸à¸±à¹à¸à¹à¸§à¹à¸à¸¢à¸¹à¹à¹à¸¥à¹à¸§"
+
+#: ../client/pk-console.c:643
+msgid "Could not find a package with that name to remove"
+msgstr "à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¹à¸à¸«à¸²à¹à¸à¸à¹à¸à¸à¸à¸±à¸à¸à¸¥à¹à¸²à¸§à¹à¸à¸·à¹à¸à¸à¸à¸à¸à¸à¸"
+
+#: ../client/pk-console.c:683
+msgid "The following packages have to be removed"
+msgstr "à¹à¸à¸à¹à¸à¸à¸à¹à¸à¹à¸à¸à¸µà¹à¸à¸°à¸à¸¹à¸à¸à¸à¸à¸à¸à¸"
+
+#. get user input
+#: ../client/pk-console.c:692
+msgid "Okay to remove additional packages?"
+msgstr "à¸à¹à¸à¸à¸à¸²à¸£à¸à¸à¸à¹à¸à¸à¹à¸à¸à¹à¸à¸´à¹à¸¡à¹à¸à¸´à¸¡?"
+
+#: ../client/pk-console.c:696
+msgid "Cancelled!"
+msgstr "à¸à¸¹à¸à¸¢à¸à¹à¸¥à¸´à¸!"
+
+#: ../client/pk-console.c:718
+msgid "Could not find a package with that name to update"
+msgstr "à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¹à¸à¸«à¸²à¹à¸à¸à¹à¸à¸à¸à¸·à¹à¸à¸à¸±à¸à¸à¸¥à¹à¸²à¸§à¹à¸à¸·à¹à¸à¸à¸±à¸à¹à¸à¸"
+
+#: ../client/pk-console.c:736
+msgid "Could not find what packages require this package"
+msgstr "à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¹à¸à¸«à¸²à¹à¸à¸à¹à¸à¸à¸à¸µà¹à¸à¹à¸à¸à¸à¸²à¸£à¹à¸à¸à¹à¸à¸à¸à¸µà¹"
+
+#: ../client/pk-console.c:754
+msgid "Could not get dependencies for this package"
+msgstr "à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¹à¸à¸«à¸²à¸£à¸²à¸¢à¸à¸²à¸£à¸à¸¶à¹à¸à¸à¸²à¹à¸à¸à¹à¸à¸à¸ªà¸³à¸«à¸£à¸±à¸à¹à¸à¸à¹à¸à¸à¸à¸µà¹"
+
+#: ../client/pk-console.c:772
+msgid "Could not find details for this package"
+msgstr "à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¹à¸à¸«à¸²à¸£à¸²à¸¢à¸¥à¸°à¹à¸à¸µà¸¢à¸à¹à¸à¸à¹à¸à¸à¸à¸µà¹"
+
+#: ../client/pk-console.c:790
+#, c-format
+msgid "Could not find the files for this package"
+msgstr "à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¹à¸à¸«à¸²à¹à¸à¸¥à¹à¸ªà¸³à¸«à¸£à¸±à¸à¹à¸à¸à¹à¸à¸à¸à¸µà¹"
+
+#: ../client/pk-console.c:870
+msgid "Package description"
+msgstr "รายละà¹à¸à¸µà¸¢à¸à¹à¸à¸à¹à¸à¸"
+
+#: ../client/pk-console.c:893
+msgid "Package files"
+msgstr "à¹à¸à¸¥à¹à¹à¸à¸à¹à¸à¸"
+
+#: ../client/pk-console.c:901
+msgid "No files"
+msgstr "à¹à¸¡à¹à¸¡à¸µà¹à¸à¸¥à¹"
+
+#. get user input
+#: ../client/pk-console.c:933
+msgid "Okay to import key?"
+msgstr "à¸à¹à¸à¸à¸à¸²à¸£à¸à¸³à¹à¸à¹à¸²à¸à¸¸à¸à¹à¸?"
+
+#: ../client/pk-console.c:936
+msgid "Did not import key"
+msgstr "à¹à¸¡à¹à¹à¸à¹à¸à¸³à¹à¸à¹à¸²à¸à¸¸à¸à¹à¸"
+
+#. get user input
+#: ../client/pk-console.c:976
+msgid "Do you agree?"
+msgstr "ยà¸à¸¡à¸£à¸±à¸à¸à¹à¸à¸à¸§à¸²à¸¡à¸à¹à¸²à¸à¸à¹à¸?"
+
+#: ../client/pk-console.c:979
+msgid "Did not agree to licence, task will fail"
+msgstr "à¹à¸¡à¹à¸¢à¸à¸¡à¸£à¸±à¸à¸à¹à¸à¸à¸à¸¥à¸à¸ªà¸±à¸à¸à¸²à¸à¸à¸¸à¸à¸²à¸ à¸à¸²à¸à¸à¸µà¹à¸à¸³à¸à¸°à¸¥à¹à¸¡à¹à¸«à¸¥à¸§"
+
+#: ../client/pk-console.c:1008
+msgid "The daemon crashed mid-transaction!"
+msgstr "à¸à¸µà¸¡à¸à¸à¸à¸±à¸à¸à¹à¸à¸à¸£à¸°à¸«à¸§à¹à¸²à¸à¸à¸£à¸°à¸à¸§à¸à¸à¸²à¸£!"
+
+#. header
+#: ../client/pk-console.c:1061
+msgid "PackageKit Console Interface"
+msgstr "สà¹à¸§à¸à¸à¸´à¸à¸à¹à¸à¸à¸à¸à¸à¸à¹à¸à¸¥à¸à¸à¸ PackageKit"
+
+#: ../client/pk-console.c:1061
+msgid "Subcommands:"
+msgstr "à¸à¸³à¸ªà¸±à¹à¸à¸¢à¹à¸à¸¢:"
+
+#: ../client/pk-console.c:1165 ../client/pk-monitor.c:104 ../src/pk-main.c:189
+msgid "Show extra debugging information"
+msgstr "à¹à¸ªà¸à¸à¸à¹à¸à¸¡à¸¹à¸¥à¹à¸à¸´à¹à¸¡à¹à¸à¸´à¸¡à¸ªà¸³à¸«à¸£à¸±à¸à¸à¸µà¸à¸±à¹à¸"
+
+#: ../client/pk-console.c:1167 ../client/pk-monitor.c:106
+msgid "Show the program version and exit"
+msgstr "à¹à¸ªà¸à¸à¸£à¸¸à¹à¸à¸à¸à¸à¹à¸à¸£à¹à¸à¸£à¸¡à¹à¸¥à¹à¸§à¸à¸à¸"
+
+#: ../client/pk-console.c:1169
+msgid "Set the filter, e.g. installed"
+msgstr "à¸à¸±à¹à¸à¸à¸±à¸§à¸à¸£à¸à¸ à¹à¸à¹à¸ à¸à¸´à¸à¸à¸±à¹à¸à¹à¸§à¹à¹à¸¥à¹à¸§"
+
+#: ../client/pk-console.c:1171
+msgid "Exit without waiting for actions to complete"
+msgstr "à¸à¸à¸à¹à¸à¸¢à¹à¸¡à¹à¸à¹à¸à¸à¸£à¸à¸à¸£à¸°à¸à¸§à¸à¸à¸²à¸£à¹à¸«à¹à¹à¸ªà¸£à¹à¸à¸ªà¸´à¹à¸"
+
+#: ../client/pk-console.c:1194
+msgid "Could not connect to system DBUS."
+msgstr "à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¹à¸à¸à¸±à¸ DBUS à¸à¸à¸à¸£à¸°à¸à¸"
+
+#: ../client/pk-console.c:1288
+#, c-format
+msgid "You need to specify a search type"
+msgstr "à¸à¸¸à¸à¸à¹à¸à¸à¸£à¸°à¸à¸¸à¸à¸à¸´à¸à¸à¸²à¸£à¸à¹à¸à¸«à¸²"
+
+#: ../client/pk-console.c:1293 ../client/pk-console.c:1300
+#: ../client/pk-console.c:1307 ../client/pk-console.c:1314
+#: ../client/pk-console.c:1421 ../client/pk-console.c:1428
+#: ../client/pk-console.c:1435 ../client/pk-console.c:1442
+#, c-format
+msgid "You need to specify a search term"
+msgstr "à¸à¸¸à¸à¸à¹à¸à¸à¸£à¸°à¸à¸¸à¸à¸³à¸à¹à¸à¸«à¸²"
+
+#: ../client/pk-console.c:1319
+#, c-format
+msgid "Invalid search type"
+msgstr "à¸à¸à¸´à¸à¸à¸²à¸£à¸à¹à¸à¸«à¸²à¹à¸¡à¹à¸à¸¹à¸à¸à¹à¸à¸"
+
+#: ../client/pk-console.c:1324
+#, c-format
+msgid "You need to specify a package or file to install"
+msgstr "à¸à¸¸à¸à¸à¹à¸à¸à¸£à¸°à¸à¸¸à¹à¸à¸à¹à¸à¸à¸«à¸£à¸·à¸à¹à¸à¸¥à¹à¸à¸µà¹à¸à¸°à¸à¸´à¸à¸à¸±à¹à¸"
+
+#: ../client/pk-console.c:1339
+#, c-format
+msgid "You need to specify a type, key_id and package_id"
+msgstr "à¸à¸¸à¸à¸à¹à¸à¸à¸£à¸°à¸à¸¸à¸à¸à¸´à¸, key_id à¹à¸¥à¸° package_id"
+
+#: ../client/pk-console.c:1346
+#, c-format
+msgid "You need to specify a package to remove"
+msgstr "à¸à¸¸à¸à¸à¹à¸à¸à¸£à¸°à¸à¸¸à¹à¸à¸à¹à¸à¸à¸à¸µà¹à¸à¸°à¸à¸à¸à¸à¸à¸"
+
+#: ../client/pk-console.c:1353
+#, c-format
+msgid "You need to specify a eula-id"
+msgstr "à¸à¸¸à¸à¸à¹à¸à¸à¸£à¸°à¸à¸¸ eula-id"
+
+#: ../client/pk-console.c:1369
+#, c-format
+#, fuzzy
+msgid "You need to specify a package name to resolve"
+msgstr "à¸à¸¸à¸à¸à¹à¸à¸à¸£à¸°à¸à¸¸à¸à¸·à¹à¸à¹à¸à¸à¹à¸à¸à¸à¸µà¹à¸à¸°à¹à¸¢à¸à¹à¸¢à¸°"
+
+#: ../client/pk-console.c:1376 ../client/pk-console.c:1383
+#, c-format
+msgid "You need to specify a repo name"
+msgstr "à¸à¸¸à¸à¸à¹à¸à¸à¸£à¸°à¸à¸¸à¸à¸·à¹à¸à¸à¸¥à¸±à¸"
+
+#: ../client/pk-console.c:1390
+#, c-format
+msgid "You need to specify a repo name/parameter and value"
+msgstr "à¸à¸¸à¸à¸à¹à¸à¸à¸£à¸°à¸à¸¸à¸à¸·à¹à¸à¸à¸¥à¸±à¸/à¸à¸²à¸£à¸²à¸¡à¸´à¹à¸à¸à¸£à¹à¹à¸¥à¸°à¸à¹à¸²"
+
+#: ../client/pk-console.c:1403
+#, c-format
+#, fuzzy
+msgid "You need to specify a time term"
+msgstr "à¸à¸¸à¸à¸à¹à¸à¸à¸£à¸°à¸à¸¸à¸£à¸°à¸¢à¸°à¹à¸§à¸¥à¸²"
+
+#: ../client/pk-console.c:1408
+#, c-format
+msgid "You need to specify a correct role"
+msgstr "à¸à¸¸à¸à¸à¹à¸à¸à¸£à¸°à¸à¸¸à¸«à¸à¹à¸²à¸à¸µà¹à¸à¸µà¹à¸à¸¹à¸à¸à¹à¸à¸"
+
+#: ../client/pk-console.c:1413
+#, c-format
+msgid "Failed to get last time"
+msgstr "à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸«à¸²à¹à¸§à¸¥à¸²à¸¥à¹à¸²à¸ªà¸¸à¸"
+
+#: ../client/pk-console.c:1449
+#, c-format
+msgid "You need to specify a package to find the details for"
+msgstr "à¸à¸¸à¸à¸à¹à¸à¸à¸£à¸°à¸à¸¸à¹à¸à¸à¹à¸à¸à¸à¸µà¹à¸à¸°à¸à¹à¸à¸«à¸²à¸£à¸²à¸¢à¸¥à¸°à¹à¸à¸µà¸¢à¸"
+
+#: ../client/pk-console.c:1456
+#, c-format
+msgid "You need to specify a package to find the files for"
+msgstr "à¸à¸¸à¸à¸à¹à¸à¸à¸£à¸°à¸à¸¸à¹à¸à¸à¹à¸à¸à¸à¸µà¹à¸à¸°à¸à¹à¸à¸«à¸²à¹à¸à¸¥à¹"
+
+#: ../client/pk-console.c:1503
+#, c-format
+msgid "Option '%s' not supported"
+msgstr "à¹à¸¡à¹à¸£à¸à¸à¸£à¸±à¸à¸à¸±à¸§à¹à¸¥à¸·à¸à¸ '%s'"
+
+#: ../client/pk-console.c:1514
+msgid "Command failed"
+msgstr "à¸à¸³à¸ªà¸±à¹à¸à¸¥à¹à¸¡à¹à¸«à¸¥à¸§"
+
+#: ../client/pk-console.c:1518
+msgid "You don't have the necessary privileges for this operation"
+msgstr "à¸à¸¸à¸à¸¡à¸µà¸ªà¸´à¸à¸à¸´à¹à¸¡à¹à¹à¸à¸µà¸¢à¸à¸à¸à¸ªà¸³à¸«à¸£à¸±à¸à¸à¸£à¸°à¸à¸§à¸à¸à¸²à¸£à¸à¸µà¹"
+
+#: ../client/pk-monitor.c:117
+msgid "PackageKit Monitor"
+msgstr "à¹à¸à¸£à¹à¸à¸£à¸¡à¹à¸à¹à¸²à¸ªà¸±à¸à¹à¸à¸ PackageKit"
+
+#: ../client/pk-import-desktop.c:293 ../client/pk-import-specspo.c:169
+#, c-format
+msgid "Could not open database: %s"
+msgstr "à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¹à¸à¸´à¸à¸à¸²à¸à¸à¹à¸à¸¡à¸¹à¸¥: %s"
+
+#: ../client/pk-import-desktop.c:294 ../client/pk-import-specspo.c:170
+msgid "You probably need to run this program as the root user"
+msgstr "à¸à¸¸à¸à¸à¸²à¸à¸à¸°à¸à¹à¸à¸à¸£à¸±à¸à¹à¸à¸£à¹à¸à¸£à¸¡à¸à¸µà¹à¹à¸à¹à¸à¸à¸¹à¹à¹à¸à¹à¸£à¸¹à¸"
+
+#: ../src/pk-main.c:83
+msgid "Startup failed due to security policies on this machine."
+msgstr "à¸à¸²à¸£à¹à¸£à¸´à¹à¸¡à¹à¸à¸£à¹à¸à¸£à¸¡à¹à¸¡à¹à¸ªà¸³à¹à¸£à¹à¸à¹à¸à¸·à¹à¸à¸à¸à¸²à¸à¸à¹à¸¢à¸à¸²à¸¢à¸à¹à¸²à¸à¸à¸§à¸²à¸¡à¸à¸¥à¸à¸à¸ ัยà¸à¸à¹à¸à¸£à¸·à¹à¸à¸à¸à¸µà¹"
+
+#: ../src/pk-main.c:84
+msgid "This can happen for two reasons:"
+msgstr "à¸à¸µà¹à¸à¸²à¸à¸à¸°à¹à¸à¸´à¸à¸à¸²à¸à¸ªà¸à¸à¸ªà¸²à¹à¸«à¸à¸¸:"
+
+# à¸à¸à¸à¸±à¸à¸à¸µà¹à¹à¸à¹à¸²à¹à¸à¸µà¸¢à¸à¸¡à¸²à¹à¸«à¸¡à¸·à¸à¸à¸à¸±à¸à¸à¸£à¸±à¸
+#: ../src/pk-main.c:85
+msgid "The correct user is not launching the executable (usually root)"
+msgstr "à¸à¸¹à¹à¹à¸à¹à¸à¸µà¹à¸à¸¹à¸à¸à¹à¸à¸à¹à¸¡à¹à¹à¸à¹à¹à¸£à¸µà¸¢à¸à¹à¸à¸£à¹à¸à¸£à¸¡ (à¸à¸à¸à¸´à¸à¸·à¸ root)"
+
+#: ../src/pk-main.c:86
+msgid ""
+"The org.freedesktop.PackageKit.conf file is not installed in the system /etc/"
+"dbus-1/system.d directory"
+msgstr ""
+"à¹à¸à¸¥à¹ org.freedesktop.PackageKit.conf file à¹à¸¡à¹à¹à¸à¹à¸à¸¹à¸à¸à¸´à¸à¸à¸±à¹à¸à¹à¸à¹à¸à¹à¸£à¸à¸à¸à¸£à¸µ "
+"/etc/dbus-1/system.d"
+
+#: ../src/pk-main.c:185
+msgid "Packaging backend to use, e.g. dummy"
+msgstr "à¹à¸à¹à¸à¹à¸à¸à¸à¹à¸à¸±à¸§à¸à¸±à¸à¸à¸²à¸£à¹à¸à¸à¹à¸à¸à¸à¸µà¹à¸à¸°à¹à¸à¹ à¹à¸à¹à¸ dummy"
+
+#: ../src/pk-main.c:187
+msgid "Daemonize and detach from the terminal"
+msgstr "à¹à¸à¸¥à¸µà¹à¸¢à¸à¹à¸à¹à¸à¸à¸µà¸¡à¸à¸à¹à¸¥à¸°à¹à¸¢à¸à¸à¸±à¸§à¸à¸à¸à¸à¸²à¸à¹à¸à¸à¸£à¹à¸¡à¸´à¸à¸±à¸¥"
+
+#: ../src/pk-main.c:191
+msgid "Disable the idle timer"
+msgstr "à¸à¸´à¸à¹à¸à¹à¸¡à¸à¸£à¹à¸à¸µà¹à¹à¸¡à¹à¹à¸à¹à¸à¸²à¸"
+
+#: ../src/pk-main.c:193
+msgid "Show version and exit"
+msgstr "à¹à¸ªà¸à¸à¸£à¸¸à¹à¸à¹à¸¥à¹à¸§à¸à¸à¸"
+
+#: ../src/pk-main.c:195
+msgid "Exit after a small delay"
+msgstr "à¸à¸à¸à¸«à¸¥à¸±à¸à¸à¸²à¸à¸«à¸à¹à¸§à¸à¹à¸§à¸¥à¸²à¹à¸¥à¹à¸à¸à¹à¸à¸¢"
+
+#: ../src/pk-main.c:197
+msgid "Exit after the engine has loaded"
+msgstr "à¸à¸à¸à¸«à¸¥à¸±à¸à¸à¸²à¸ engine à¸à¸¹à¸à¹à¸£à¸µà¸¢à¸à¹à¸¥à¹à¸§"
+
+#: ../src/pk-main.c:207
+msgid "PackageKit service"
+msgstr "à¸à¸£à¸´à¸à¸²à¸£ PackageKit"
+
+#: ../src/pk-main.c:233
+msgid "Cannot connect to the system bus"
+msgstr "à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¸´à¸à¸à¹à¸à¸à¸±à¸à¸à¸±à¸ªà¸£à¸°à¸à¸"
+
+#: ../src/pk-main.c:273
+#, c-format
+msgid "Error trying to start: %s\n"
+msgstr "à¹à¸à¸´à¸à¸à¹à¸à¸à¸´à¸à¸à¸¥à¸²à¸à¸à¸à¸°à¸à¸°à¹à¸£à¸´à¹à¸¡: %s\n"
More information about the PackageKit-commit
mailing list