[packagekit] [PATCH] Make pisi backend usable once more

Ikey Doherty ikey at solusos.com
Fri Jun 7 16:22:48 PDT 2013


# Make the PiSi backend usable once more
# This patch is intended only for testing, and is in need of review and
# suggestions.
diff -ruNb a/backends/pisi/pisiBackend.py b/backends/pisi/pisiBackend.py
--- a/backends/pisi/pisiBackend.py	2013-04-11 12:58:36.000000000 +0100
+++ b/backends/pisi/pisiBackend.py	2013-06-08 00:05:55.906656197 +0100
@@ -170,14 +170,16 @@

          if self.packagedb.has_package(package):
              pkg = self.packagedb.get_package(package)
+            repo = self.packagedb.get_package_repo (pkg.name, None)
+            pkg_id = self.get_package_id (pkg.name, 
self.__get_package_version(pkg), pkg.architecture, repo[1])

              if self.groups.has_key(pkg.partOf):
                  group = self.groups[pkg.partOf]
              else:
                  group = GROUP_UNKNOWN

-            self.details("%s-%s" % (pkg.name, 
self.__get_package_version(pkg)),
-                            pkg.license,
+            self.details(pkg_id,
+                            ",".join (pkg.license),
                              group,
                              pkg.description,
                              pkg.packageURI,
@@ -193,14 +195,16 @@
          package = self.get_package_from_id(package_ids[0])[0]

          if self.installdb.has_package(package):
+            pkg = self.packagedb.get_package(package)
+            repo = self.packagedb.get_package_repo (pkg.name, None)
+            pkg_id = self.get_package_id (pkg.name, 
self.__get_package_version(pkg), pkg.architecture, repo[1])
+			
              pkg = self.installdb.get_files(package)

-            # FIXME: Add "/" as suffix
-            files = map(lambda y: y.path, pkg.list)
+            files = map(lambda y: "/%s" % y.path, pkg.list)

              file_list = ";".join(files)
-
-            self.files(package, file_list)
+            self.files(pkg_id, file_list)

      def get_repo_list(self, filters):
          """ Prints available repositories """
@@ -296,7 +300,7 @@

          self.percentage(100)

-    def remove_packages(self, allowdeps, autoremove, package_ids):
+    def remove_packages(self, transaction_flags, package_ids, 
allowdeps, autoremove):
          """ Removes given package from system"""
          self.allow_cancel(False)
          self.percentage(None)
diff -ruNb a/backends/pisi/pk-backend-pisi.c 
b/backends/pisi/pk-backend-pisi.c
--- a/backends/pisi/pk-backend-pisi.c	2013-04-11 12:58:36.000000000 +0100
+++ b/backends/pisi/pk-backend-pisi.c	2013-06-08 00:06:17.211155284 +0100
@@ -43,7 +43,7 @@
   * pk_backend_initialize:
   * This should only be run once per backend load, i.e. not every 
transaction
   */
-static void
+void
  pk_backend_initialize (PkBackend *backend)
  {
  	g_debug ("backend: initialize");
@@ -51,8 +51,8 @@
  	/* BACKEND MAINTAINER: feel free to remove this when you've
  	 * added support for ONLY_DOWNLOAD and merged the simulate
  	 * methods as specified in backends/PORTING.txt */
-	g_error ("Backend needs to be ported to 0.8.x -- "
-		 "see backends/PORTING.txt for details");
+	/*g_error ("Backend needs to be ported to 0.8.x -- "
+		 "see backends/PORTING.txt for details"); */

  	spawn = pk_backend_spawn_new ();
  	pk_backend_spawn_set_name (spawn, "pisi");
@@ -62,7 +62,7 @@
   * pk_backend_destroy:
   * This should only be run once per backend load, i.e. not every 
transaction
   */
-static void
+void
  pk_backend_destroy (PkBackend *backend)
  {
  	g_debug ("backend: destroy");
@@ -72,7 +72,7 @@
  /**
   * pk_backend_get_groups:
   */
-static PkBitfield
+PkBitfield
  pk_backend_get_groups (PkBackend *backend)
  {
  	return pk_bitfield_from_enums (
@@ -102,7 +102,7 @@
  /**
   * pk_backend_get_filters:
   */
-static PkBitfield
+PkBitfield
  pk_backend_get_filters (PkBackend *backend)
  {
  	return pk_bitfield_from_enums(
@@ -114,7 +114,7 @@
  /**
   * pk_backend_cancel:
   */
-static void
+void
  pk_backend_cancel (PkBackend *backend, PkBackendJob *job)
  {
  	/* this feels bad... */
@@ -124,7 +124,7 @@
  /**
   * pk_backend_get_depends:
   */
-static void
+void
  pk_backend_get_depends (PkBackend *backend, PkBackendJob *job, 
PkBitfield filters, gchar **package_ids, gboolean recursive)
  {
  	gchar *filters_text;
@@ -139,7 +139,7 @@
  /**
   * pk_backend_get_details:
   */
-static void
+void
  pk_backend_get_details (PkBackend *backend, PkBackendJob *job, gchar 
**package_ids)
  {
  	gchar *package_ids_temp;
@@ -151,7 +151,7 @@
  /**
   * pk_backend_get_files:
   */
-static void
+void
  pk_backend_get_files (PkBackend *backend, PkBackendJob *job, gchar 
**package_ids)
  {
  	gchar *package_ids_temp;
@@ -163,7 +163,7 @@
  /**
   * pk_backend_get_requires:
   */
-static void
+void
  pk_backend_get_requires (PkBackend *backend, PkBackendJob *job, 
PkBitfield filters, gchar **package_ids, gboolean recursive)
  {
  	gchar *filters_text;
@@ -178,7 +178,7 @@
  /**
   * pk_backend_get_updates:
   */
-static void
+void
  pk_backend_get_updates (PkBackend *backend, PkBackendJob *job, 
PkBitfield filters)
  {
  	gchar *filters_text;
@@ -190,10 +190,11 @@
  /**
   * pk_backend_install_packages:
   */
-static void
+void
  pk_backend_install_packages (PkBackend *backend, PkBackendJob *job, 
PkBitfield transaction_flags, gchar **package_ids)
  {
  	gchar *package_ids_temp;
+    gchar *transaction_flags_temp;

  	/* check network state */
  	if (!pk_backend_is_online (backend)) {
@@ -204,28 +205,35 @@

  	/* send the complete list as stdin */
  	package_ids_temp = pk_package_ids_to_string (package_ids);
-	pk_backend_spawn_helper (spawn, job, "pisiBackend.py", 
"install-packages", pk_backend_bool_to_string (only_trusted), 
package_ids_temp, NULL);
+    transaction_flags_temp = pk_transaction_flag_bitfield_to_string 
(transaction_flags);
+
+	pk_backend_spawn_helper (spawn, job, "pisiBackend.py", 
"install-packages", transaction_flags_temp, package_ids_temp, NULL);
  	g_free (package_ids_temp);
+    g_free (transaction_flags_temp);
  }

  /**
   * pk_backend_install_files:
   */
-static void
+void
  pk_backend_install_files (PkBackend *backend, PkBackendJob *job, 
PkBitfield transaction_flags, gchar **full_paths)
  {
  	gchar *package_ids_temp;
+    gchar *transaction_flags_temp;

  	/* send the complete list as stdin */
  	package_ids_temp = g_strjoinv (PK_BACKEND_SPAWN_FILENAME_DELIM, 
full_paths);
-	pk_backend_spawn_helper (spawn, job, "pisiBackend.py", 
"install-files", pk_backend_bool_to_string (only_trusted), 
package_ids_temp, NULL);
+    transaction_flags_temp = pk_transaction_flag_bitfield_to_string 
(transaction_flags);
+
+	pk_backend_spawn_helper (spawn, job, "pisiBackend.py", 
"install-files", transaction_flags_temp, package_ids_temp, NULL);
  	g_free (package_ids_temp);
+    g_free (transaction_flags_temp);
  }

  /**
   * pk_backend_refresh_cache:
   */
-static void
+void
  pk_backend_refresh_cache (PkBackend *backend, PkBackendJob *job, 
gboolean force)
  {
  	/* check network state */
@@ -241,21 +249,36 @@
  /**
   * pk_backend_remove_packages:
   */
-static void
-pk_backend_remove_packages (PkBackend *backend, PkBackendJob *job, 
gchar **package_ids, gboolean allow_deps, gboolean autoremove)
+void
+pk_backend_remove_packages (PkBackend *backend, PkBackendJob *job,
+			    PkBitfield transaction_flags,
+			    gchar **package_ids,
+			    gboolean allow_deps,
+			    gboolean autoremove)
  {
  	gchar *package_ids_temp;
+    gchar *transaction_flags_temp;

  	/* send the complete list as stdin */
  	package_ids_temp = pk_package_ids_to_string (package_ids);
-	pk_backend_spawn_helper (spawn, job, "pisiBackend.py", 
"remove-packages", pk_backend_bool_to_string (allow_deps), 
pk_backend_bool_to_string (autoremove), package_ids_temp, NULL);
+    transaction_flags_temp = pk_transaction_flag_bitfield_to_string 
(transaction_flags);
+	pk_backend_spawn_helper (spawn,
+        job, "pisiBackend.py",
+        "remove-packages",
+        transaction_flags_temp,
+        package_ids_temp,
+        pk_backend_bool_to_string (allow_deps),
+        pk_backend_bool_to_string (autoremove),
+        NULL);
+
+    g_free (transaction_flags_temp);
  	g_free (package_ids_temp);
  }

  /**
   * pk_backend_search_details:
   */
-static void
+void
  pk_backend_search_details (PkBackend *backend, PkBackendJob *job, 
PkBitfield filters, gchar **values)
  {
  	gchar *filters_text;
@@ -270,7 +293,7 @@
  /**
   * pk_backend_search_files:
   */
-static void
+void
  pk_backend_search_files (PkBackend *backend, PkBackendJob *job, 
PkBitfield filters, gchar **values)
  {
  	gchar *filters_text;
@@ -285,7 +308,7 @@
  /**
   * pk_backend_search_groups:
   */
-static void
+void
  pk_backend_search_groups (PkBackend *backend, PkBackendJob *job, 
PkBitfield filters, gchar **values)
  {
  	gchar *filters_text;
@@ -300,7 +323,7 @@
  /**
   * pk_backend_search_names:
   */
-static void
+void
  pk_backend_search_names (PkBackend *backend, PkBackendJob *job, 
PkBitfield filters, gchar **values)
  {
  	gchar *filters_text;
@@ -315,10 +338,11 @@
  /**
   * pk_backend_update_packages:
   */
-static void
+void
  pk_backend_update_packages (PkBackend *backend, PkBackendJob *job, 
PkBitfield transaction_flags, gchar **package_ids)
  {
  	gchar *package_ids_temp;
+    gchar *transaction_flags_temp;

  	/* check network state */
  	if (!pk_backend_is_online (backend)) {
@@ -329,23 +353,31 @@

  	/* send the complete list as stdin */
  	package_ids_temp = pk_package_ids_to_string (package_ids);
-	pk_backend_spawn_helper (spawn, job, "pisiBackend.py", 
"update-packages", pk_backend_bool_to_string (only_trusted), 
package_ids_temp, NULL);
+    transaction_flags_temp = pk_transaction_flag_bitfield_to_string 
(transaction_flags);
+
+	pk_backend_spawn_helper (spawn, job, "pisiBackend.py", 
"update-packages", transaction_flags_temp, package_ids_temp, NULL);
  	g_free (package_ids_temp);
+    g_free (transaction_flags_temp);
  }

  /**
   * pk_backend_update_system:
   */
-static void
+void
  pk_backend_update_system (PkBackend *backend, PkBackendJob *job, 
PkBitfield transaction_flags)
  {
-	pk_backend_spawn_helper (spawn, job, "pisiBackend.py", 
"update-system", pk_backend_bool_to_string (only_trusted), NULL);
+    gchar *transaction_flags_temp;
+    transaction_flags_temp = pk_transaction_flag_bitfield_to_string 
(transaction_flags);
+
+	pk_backend_spawn_helper (spawn, job, "pisiBackend.py", 
"update-system", transaction_flags_temp, NULL);
+
+    g_free (transaction_flags_temp);
  }

  /**
   * pk_backend_resolve:
   */
-static void
+void
  pk_backend_resolve (PkBackend *backend, PkBackendJob *job, PkBitfield 
filters, gchar **package_ids)
  {
  	gchar *filters_text;
@@ -360,7 +392,7 @@
  /**
   * pk_backend_get_repo_list:
   */
-static void
+void
  pk_backend_get_repo_list (PkBackend *backend, PkBackendJob *job, 
PkBitfield filters)
  {
  	gchar *filters_text;
@@ -372,7 +404,7 @@
  /**
   * pk_backend_repo_set_data:
   */
-static void
+void
  pk_backend_repo_set_data (PkBackend *backend, PkBackendJob *job, const 
gchar *rid, const gchar *parameter, const gchar *value)
  {
  	pk_backend_spawn_helper (spawn, job, "pisiBackend.py", 
"repo-set-data", rid, parameter, value, NULL);



More information about the PackageKit mailing list