socsvn commit: r256802 - soc2013/mattbw/backend

mattbw at FreeBSD.org mattbw at FreeBSD.org
Sun Sep 1 15:47:14 UTC 2013


Author: mattbw
Date: Sun Sep  1 15:47:14 2013
New Revision: 256802
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=256802

Log:
  Move namever-related jobs/pkgutils functions to namever.
  
  namever now depends on PackageKit, but not the packagekit backend.
  

Modified:
  soc2013/mattbw/backend/jobs.c
  soc2013/mattbw/backend/namever.c
  soc2013/mattbw/backend/namever.h
  soc2013/mattbw/backend/pkgutils.c
  soc2013/mattbw/backend/pkgutils.h

Modified: soc2013/mattbw/backend/jobs.c
==============================================================================
--- soc2013/mattbw/backend/jobs.c	Sun Sep  1 14:28:12 2013	(r256801)
+++ soc2013/mattbw/backend/jobs.c	Sun Sep  1 15:47:14 2013	(r256802)
@@ -30,12 +30,11 @@
 #include "db.h"			/* db_... */
 #include "emit.h"		/* emit_package */
 #include "event.h"		/* event_cb */
-#include "utils.h"		/* ERR, type_of_repo_name */
 #include "jobs.h"		/* jobs_... */
 #include "jobs/check.h"		/* jobs_check_... */
+#include "namever.h"		/* namever_* */
 #include "pkgutils.h"		/* pkgutils_... */
-
-static char **namevers_from_package_ids(gchar **package_ids, guint count);
+#include "utils.h"		/* ERR, type_of_repo_name */
 
 static const char *APPLY_ERRORS[] = {
 	"This shouldn't occur and is a bug.",	/* EPKG_OK */
@@ -122,11 +121,11 @@
 	if (count > 0) {
 		int		err;
 
-		namevers = namevers_from_package_ids(package_ids, count);
+		namevers = namever_array_from_package_ids(package_ids, count);
 
 		err = pkg_jobs_add(jobs, MATCH_EXACT, namevers, (int)count);
 		if (err != EPKG_OK) {
-			jobs_free_namevers(&namevers, count);
+			namever_array_free(&namevers, count);
 		}
 	}
 
@@ -151,21 +150,6 @@
 	}
 }
 
-void
-jobs_free_namevers(char ***namevers_p, guint count)
-{
-	unsigned int		i;
-
-	assert(namevers_p != NULL);
-
-	if (*namevers_p != NULL) {
-		for (i = 0; i < count; i++)
-			free(*namevers_p[i]);
-		free(*namevers_p);
-		*namevers_p = NULL;
-	}
-}
-
 /* Overly safe wrapper around pkg_jobs_new. */
 struct pkg_jobs *
 jobs_allocate(pkg_jobs_t type, struct pkgdb *db)
@@ -196,24 +180,3 @@
 	pkg_jobs_free(*jobs_p);
 	*jobs_p = NULL;
 }
-
-static char **
-namevers_from_package_ids(gchar **package_ids, guint count)
-{
-	char	      **namevers;
-	unsigned int	i;
-
-	namevers = calloc(count, sizeof(char *));
-	if (namevers != NULL) {
-		for (i = 0; i < count; i++) {
-			namevers[i] = pkgutils_package_id_namever(
-			    package_ids[i]);
-			if (namevers[i] == NULL) {
-				jobs_free_namevers(&namevers, count);
-				break;
-			}
-		}
-	}
-
-	return namevers;
-}

Modified: soc2013/mattbw/backend/namever.c
==============================================================================
--- soc2013/mattbw/backend/namever.c	Sun Sep  1 14:28:12 2013	(r256801)
+++ soc2013/mattbw/backend/namever.c	Sun Sep  1 15:47:14 2013	(r256802)
@@ -19,15 +19,17 @@
  */
 
 #include <assert.h>		/* assert */
+#include <glib.h>		/* gchar, guint */
 #include <stdio.h>		/* asprintf */
 #include "pkg.h"		/* pkg_... */
+#include "pk-backend.h"		/* pk_* */
 
 #include "namever.h"		/* namever_... */
 
 /*
  * Functions for dealing with "namevers" (name-version strings).
  *
- * This file CANNOT depend on PackageKit.
+ * This file CANNOT depend on the PackageKit backend.
  */
 
 /*
@@ -64,3 +66,68 @@
 	(void)pkg_asprintf(&result, "%n-%v", package, package);
 	return result;
 }
+
+/*
+ * Allocates and returns a string of the form "name-version" that contains
+ * the name and version elements of a PackageID.
+ *
+ * To be freed using free(3).
+ */
+char	       *
+namever_from_package_id(gchar *package_id)
+{
+	char	       *result;
+	gchar	      **id_splits;
+
+	assert(package_id != NULL);
+
+	id_splits = pk_package_id_split(package_id);
+	assert(id_splits != NULL);
+
+	result = namever_from_name_and_version(id_splits[PK_PACKAGE_ID_NAME],
+	    id_splits[PK_PACKAGE_ID_VERSION]);
+
+	g_strfreev(id_splits);
+	return result;
+}
+
+char	      **
+namever_array_from_package_ids(gchar **package_ids, guint count)
+{
+	char	      **namevers;
+	unsigned int	i;
+
+	assert(package_ids != NULL);
+
+	namevers = calloc(count, sizeof(char *));
+	if (namevers != NULL) {
+		for (i = 0; i < count; i++) {
+			namevers[i] = namever_from_package_id(package_ids[i]);
+			if (namevers[i] == NULL) {
+				namever_array_free(&namevers, count);
+				break;
+			}
+		}
+	}
+
+	return namevers;
+}
+
+/* Frees an array of name-version strings. */
+void
+namever_array_free(char ***namevers_p, guint count)
+{
+	unsigned int		i;
+
+	assert(namevers_p != NULL);
+
+	if (*namevers_p != NULL) {
+		for (i = 0; i < count; i++) {
+			free(*namevers_p[i]);
+		}
+		free(*namevers_p);
+		*namevers_p = NULL;
+	}
+
+	assert(*namevers_p == NULL);
+}

Modified: soc2013/mattbw/backend/namever.h
==============================================================================
--- soc2013/mattbw/backend/namever.h	Sun Sep  1 14:28:12 2013	(r256801)
+++ soc2013/mattbw/backend/namever.h	Sun Sep  1 15:47:14 2013	(r256802)
@@ -23,5 +23,7 @@
 
 char	       *namever_from_name_and_version(const char *name, const char *version);
 char	       *namever_from_package(struct pkg *package);
-
+char	       *namever_from_package_id(gchar *package_id);
+char	      **namever_array_from_package_ids(gchar **package_ids, guint count);
+void		namever_array_free(char ***namevers_p, guint count);
 #endif				/* !_PKGNG_BACKEND_NAMEVER_H_ */

Modified: soc2013/mattbw/backend/pkgutils.c
==============================================================================
--- soc2013/mattbw/backend/pkgutils.c	Sun Sep  1 14:28:12 2013	(r256801)
+++ soc2013/mattbw/backend/pkgutils.c	Sun Sep  1 15:47:14 2013	(r256802)
@@ -28,10 +28,14 @@
 #include "pkgutils.h"		/* Prototypes */
 #include "utils.h"		/* INTENTIONALLY_IGNORE */
 
+static const char *repo_of_package(struct pkg *pkg);
+static const char *repo_of_remote_package(struct pkg *pkg);
 
-static const char *repo_of_remote(struct pkg *pkg);
-
-/* Package utility functions that do not depend on PackageKit. */
+/*
+ * Package utility functions.
+ *
+ * This file CANNOT depend on the PackageKit backend.
+ */
 
 /*
  * Infers the correct PkInfoEnum to emit for this package for its current state.
@@ -39,6 +43,8 @@
 PkInfoEnum
 pkgutils_pkg_current_state(struct pkg *pkg)
 {
+	bool		locally_installed;
+	bool		remote_but_already_installed;
 	PkInfoEnum	info;
 
 	assert(pkg != NULL);
@@ -47,11 +53,15 @@
 	 * it is installed if it is the same version as an installed package,
 	 * and available if it is not.
 	 */
-	if ((pkg_type(pkg) == PKG_INSTALLED) ||
-	    pkgutils_pkg_install_state(pkg) == PK_INFO_ENUM_REINSTALLING)
+	locally_installed = (pkg_type(pkg) == PKG_INSTALLED);
+	remote_but_already_installed = (pkgutils_pkg_install_state(pkg) ==
+	    PK_INFO_ENUM_REINSTALLING);
+
+	if (locally_installed || remote_but_already_installed) {
 		info = PK_INFO_ENUM_INSTALLED;
-	else
+	} else {
 		info = PK_INFO_ENUM_AVAILABLE;
+	}
 
 	return info;
 }
@@ -105,61 +115,6 @@
 }
 
 /*
- * Allocates and returns a string of the form "name-version" that contains
- * the name and version elements of a PackageID.
- *
- * To be freed using free(3).
- */
-char	       *
-pkgutils_package_id_namever(gchar *package_id)
-{
-	char	       *result;
-	gchar	      **id_splits;
-
-	assert(package_id != NULL);
-
-	id_splits = pk_package_id_split(package_id);
-	assert(id_splits != NULL);
-
-	result = namever_from_name_and_version(id_splits[PK_PACKAGE_ID_NAME],
-	    id_splits[PK_PACKAGE_ID_VERSION]);
-
-	g_strfreev(id_splits);
-	return result;
-}
-
-
-
-/*
- * Gets the PackageKit repository name for the package.
- */
-const char     *
-pkgutils_pk_repo_of(struct pkg *pkg)
-{
-	const char     *repo;
-
-	assert(pkg != NULL);
-
-	switch (pkg_type(pkg)) {
-	case PKG_OLD_FILE:
-	case PKG_FILE:
-		repo = "local";
-		break;
-	case PKG_INSTALLED:
-		repo = "installed";
-		break;
-	case PKG_REMOTE:
-		repo = repo_of_remote(pkg);
-		break;
-	case PKG_NONE:
-		repo = "unknown";
-		break;
-	}
-
-	return repo;
-}
-
-/*
  * Converts a package to a PackageID.
  */
 gchar          *
@@ -172,12 +127,9 @@
 
 	assert(pkg != NULL);
 
-	pkg_get(pkg,
-	    PKG_NAME, &name,
-	    PKG_VERSION, &version,
-	    PKG_ARCH, &arch);
+	pkg_get(pkg, PKG_NAME, &name, PKG_VERSION, &version, PKG_ARCH, &arch);
 
-	repo = pkgutils_pk_repo_of(pkg);
+	repo = repo_of_package(pkg);
 
 	return pk_package_id_build(name, version, arch, repo);
 }
@@ -208,13 +160,13 @@
 
 		pkg_get(pkg2, PKG_VERSION, &version);
 		pkg_set(pkg, PKG_OLD_VERSION, version);
-
 	}
 
-	if (old_p != NULL)
+	if (old_p != NULL) {
 		*old_p = pkg2;
-	else
+	} else {
 		pkg_free(pkg2);
+	}
 	assert (old_p == NULL || pkg2 == NULL || *old_p != NULL);
 }
 
@@ -244,6 +196,36 @@
 }
 
 /*
+ * Gets the PackageKit repository name for the package.
+ */
+static const char     *
+repo_of_package(struct pkg *pkg)
+{
+	const char     *repo;
+
+	assert(pkg != NULL);
+
+	switch (pkg_type(pkg)) {
+	case PKG_OLD_FILE:
+	case PKG_FILE:
+		repo = "local";
+		break;
+	case PKG_INSTALLED:
+		repo = "installed";
+		break;
+	case PKG_REMOTE:
+		repo = repo_of_remote_package(pkg);
+		break;
+	case PKG_NONE:
+		repo = "unknown";
+		break;
+	}
+
+	assert(repo != NULL);
+	return repo;
+}
+
+/*
  * Gets the PackageKit repository name for the (remote) package.
  *
  * Currently this is the pkgng repository name (not the ident as was previously
@@ -252,7 +234,7 @@
  * This does not need to be freed (possibly, TODO: check).
  */
 static const char *
-repo_of_remote(struct pkg *pkg)
+repo_of_remote_package(struct pkg *pkg)
 {
 	const char     *repo_name;
 

Modified: soc2013/mattbw/backend/pkgutils.h
==============================================================================
--- soc2013/mattbw/backend/pkgutils.h	Sun Sep  1 14:28:12 2013	(r256801)
+++ soc2013/mattbw/backend/pkgutils.h	Sun Sep  1 15:47:14 2013	(r256802)
@@ -29,8 +29,6 @@
 PkInfoEnum	pkgutils_pkg_install_state(struct pkg *pkg);
 PkInfoEnum	pkgutils_pkg_remove_state(struct pkg *pkg);
 bool		pkgutils_pkg_matches_filters(struct pkg *pkg, PkBitfield filters);
-char	       *pkgutils_package_id_namever(gchar *package_id);
-const char     *pkgutils_pk_repo_of(struct pkg *pkg);
 gchar          *pkgutils_pkg_to_id(struct pkg *pkg);
 void		pkgutils_add_old_version(struct pkgdb *db, struct pkg *pkg, struct pkg **old_p);
 


More information about the svn-soc-all mailing list