Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 Aug 2013 12:15:23 GMT
From:      mattbw@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r256507 - in soc2013/mattbw/backend: . actions query
Message-ID:  <201308251215.r7PCFN9p030484@socsvn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mattbw
Date: Sun Aug 25 12:15:23 2013
New Revision: 256507
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=256507

Log:
  (Still broken) Make resolve.c work.
  
  Nothing else does, though.  Sorry!
  

Modified:
  soc2013/mattbw/backend/Makefile
  soc2013/mattbw/backend/actions/resolve.c
  soc2013/mattbw/backend/db.c
  soc2013/mattbw/backend/db.h
  soc2013/mattbw/backend/query/do.c
  soc2013/mattbw/backend/query/do.h
  soc2013/mattbw/backend/query/match.h

Modified: soc2013/mattbw/backend/Makefile
==============================================================================
--- soc2013/mattbw/backend/Makefile	Sun Aug 25 11:42:53 2013	(r256506)
+++ soc2013/mattbw/backend/Makefile	Sun Aug 25 12:15:23 2013	(r256507)
@@ -51,10 +51,10 @@
 		actions/update_system.c
 
 SRCS+=						\
-		query/core.c			\
-		query/depends.c			\
 		query/do.c			\
-		query/match.c
+		query/id.c			\
+		query/match.c			\
+		query/packages.c
 
 SRCS+=						\
 		jobs/check.c			\

Modified: soc2013/mattbw/backend/actions/resolve.c
==============================================================================
--- soc2013/mattbw/backend/actions/resolve.c	Sun Aug 25 11:42:53 2013	(r256506)
+++ soc2013/mattbw/backend/actions/resolve.c	Sun Aug 25 12:15:23 2013	(r256507)
@@ -17,7 +17,8 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
-
+#include <assert.h>		/* assert */
+#include <stdbool.h>		/* bool, true, false */
 #include "../pk-backend.h"
 #include "pkg.h"
 
@@ -27,8 +28,7 @@
 #include "../utils.h"		/* INTENTIONALLY_IGNORE */
 #include "../actions.h"		/* resolve_thread prototype */
 
-static bool	emit(struct pkg *pkg, const gchar *id, struct query *q);
-static bool	query_with_db(struct pkgdb *db, PkBackend *backend);
+static bool	emit(PkBackend *backend, struct pkgdb *db, struct pkg *pkg);
 
 /*
  * Resolves a package identifier, which may be a full PackageID or a package
@@ -38,72 +38,21 @@
 resolve_thread(PkBackend *backend)
 {
 	bool		success;
-	struct pkgdb   *db;
 
 	assert(backend != NULL);
 
-	db = db_open_remote(backend);
-	if (db != NULL) {
-		success = query_with_db(db, backend);
-
-		db_close(&db);
-	}
-/*
-	s.type = QUERY_BACKEND_MIXED;
-	t.load_flags = PKG_LOAD_BASIC;
-	t.f = emit;
-	t.error_if_not_found = true;
-
-	success = query_do(backend, &s, &t);
-*/
+	success = query_do_from_backend_names(backend, PKG_LOAD_BASIC, emit);
 
 	(void)pk_backend_finished(backend);
 	return success ? TRUE : FALSE;
 }
 
 static bool
-query_with_db(struct pkgdb *db, PkBackend *backend)
+emit(PkBackend *backend, struct pkgdb *db, struct pkg *pkg)
 {
-	bool		success;
-	guint		count;
-	struct query_id *query_ids;
-	gchar	      **names;
-	struct pkg    **packages;
-
-	assert(db != NULL);
-	assert(backend != NULL);
-
-	success = false;
 
-	names = pk_backend_get_strv("package_ids");
-	assert(names != NULL);
-	count = g_strv_length(names);
-
-	query_ids = query_id_array_from_names(names, count);
-	if (query_ids != NULL) {
-		packages = query_match_ids(query_ids, count, db,
-		    PKG_LOAD_BASIC);
-	}
-
-	if (packages != NULL) {
-		success = emit_packages(backend, db, emit, packages, count);
-		query_free_packages(packages, count);
-	}
+	INTENTIONALLY_IGNORE(db);
 
-	return success;
-}
-
-static bool
-emit(struct pkg *pkg, const gchar *id, struct query *q)
-{
-	PkBackend	*backend;
-
-	INTENTIONALLY_IGNORE(id);
-	backend = query_backend(q);
-
-	query_set_percentage(q, 0);
 	pkgutils_emit(pkg, backend, pkgutils_pkg_current_state(pkg));
-	query_set_percentage(q, 100);
-
 	return true;
 }

Modified: soc2013/mattbw/backend/db.c
==============================================================================
--- soc2013/mattbw/backend/db.c	Sun Aug 25 11:42:53 2013	(r256506)
+++ soc2013/mattbw/backend/db.c	Sun Aug 25 12:15:23 2013	(r256507)
@@ -38,9 +38,9 @@
  * Opens a pkgdb ready for remote operations. This will always return TRUE if
  * and only if a database ready for use is now pointed to by *db, and FALSE
  * if and only if there isn't.
- * 
+ *
  * This will also emit PackageKit errors if it fails.
- * 
+ *
  * This must be called during the lifetime of "backend", eg after
  * "pk_backend_initialize" and before "pk_backend_destroy".
  */
@@ -62,6 +62,20 @@
 	return db;
 }
 
+void
+db_close(struct pkgdb **db_p)
+{
+
+	assert(db_p != NULL);
+
+	if (*db_p != NULL) {
+		pkgdb_close(*db_p);
+		*db_p = NULL;
+	}
+
+	assert(*db_p == NULL);
+}
+
 static bool
 has_remote_access(PkBackend *backend)
 {

Modified: soc2013/mattbw/backend/db.h
==============================================================================
--- soc2013/mattbw/backend/db.h	Sun Aug 25 11:42:53 2013	(r256506)
+++ soc2013/mattbw/backend/db.h	Sun Aug 25 12:15:23 2013	(r256507)
@@ -25,5 +25,6 @@
 #include "pkg.h"		/* struct pkgdb */
 
 struct pkgdb   *db_open_remote(PkBackend *backend);
+void		db_close(struct pkgdb **db_p);
 
 #endif				/* !_PKGNG_BACKEND_DB_H_ */

Modified: soc2013/mattbw/backend/query/do.c
==============================================================================
--- soc2013/mattbw/backend/query/do.c	Sun Aug 25 11:42:53 2013	(r256506)
+++ soc2013/mattbw/backend/query/do.c	Sun Aug 25 12:15:23 2013	(r256507)
@@ -31,8 +31,12 @@
 #include "do.h"			/* query_do_... */
 #include "core.h"		/* query_... */
 
+typedef struct query_id (*query_id_func_ptr) (gchar **strings, guint count);
+
 static bool emit_packages(PkBackend *backend, struct pkgdb *db, emit_ptr emitter, struct pkg *packages, unsigned int count);
+static bool query_do_from_backend_ids(PkBackend *backend, unsigned int load_flags, emit_ptr emitter, query_id_func_ptr to_query_ids)
 static bool query_with_db(struct pkgdb *db, PkBackend *backend, unsigned int load_flags, emit_ptr emitter);
+
 /*
  * Runs a query over the PackageIDs selected in the backend that sends the
  * first match to an emitting function.
@@ -40,9 +44,40 @@
  * This is a wrapper over several lower level query functions.
  */
 bool
-query_do_from_backend(PkBackend *backend, unsigned int load_flags,
+query_do_from_backend_ids(PkBackend *backend, unsigned int load_flags,
     emit_ptr emitter)
 {
+
+	assert(backend != NULL);
+	assert(emitter != NULL);
+
+	return query_do_from_backend(backend, load_flags, emitter,
+	    query_id_array_from_package_ids);
+}
+
+
+/*
+ * Runs a query over the package names selected in the backend that sends the
+ * first match to an emitting function.
+ *
+ * This is a wrapper over several lower level query functions.
+ */
+bool
+query_do_from_backend_names(PkBackend *backend, unsigned int load_flags,
+    emit_ptr emitter)
+{
+
+	assert(backend != NULL);
+	assert(emitter != NULL);
+
+	return query_do_from_backend(backend, load_flags, emitter,
+	    query_id_array_from_names);
+}
+
+static bool
+query_do_from_backend_ids(PkBackend *backend, unsigned int load_flags,
+    emit_ptr emitter, query_id_func_ptr to_query_ids)
+{
 	bool		success;
 	struct pkgdb   *db;
 
@@ -53,7 +88,8 @@
 
 	db = db_open_remote(backend);
 	if (db != NULL) {
-		success = query_with_db(db, backend, load_flags, emitter);
+		success = query_with_db(db, backend, load_flags, emitter,
+		    to_query_ids);
 
 		db_close(&db);
 	}

Modified: soc2013/mattbw/backend/query/do.h
==============================================================================
--- soc2013/mattbw/backend/query/do.h	Sun Aug 25 11:42:53 2013	(r256506)
+++ soc2013/mattbw/backend/query/do.h	Sun Aug 25 12:15:23 2013	(r256507)
@@ -23,10 +23,10 @@
 
 #include <stdbool.h>
 #include "../pk-backend.h"
-#include "pkg.h"
 
-#include "core.h"		/* struct query_... */
+typedef		bool   (*emit_ptr) (PkBackend *backend, struct pkgdb *db, struct pkg *pkg);
 
-bool		query_do  (PkBackend *backend, struct query_source *s, struct query_target *t);
+bool		query_do_from_backend_ids(PkBackend *backend, unsigned int load_flags, emit_ptr emitter);
+bool		query_do_from_backend_names(PkBackend *backend, unsigned int load_flags, emit_ptr emitter);
 
 #endif				/* !_PKGNG_BACKEND_QUERY_DO_H_ */

Modified: soc2013/mattbw/backend/query/match.h
==============================================================================
--- soc2013/mattbw/backend/query/match.h	Sun Aug 25 11:42:53 2013	(r256506)
+++ soc2013/mattbw/backend/query/match.h	Sun Aug 25 12:15:23 2013	(r256507)
@@ -22,11 +22,11 @@
 #define _PKGNG_BACKEND_QUERY_MATCH_H_
 
 #include <stdbool.h>
-#include "../pk-backend.h"
 #include "pkg.h"
 
-#include "core.h"		/* *_ptr */
+#include "id.h"			/* struct query_id */
 
-bool		query_match_id_to_emitter(PkBackend *backend, unsigned int load_flags, emit_ptr emitter);
+struct pkg      **query_match_ids(struct query_id *query_ids, unsigned int count, struct pkgdb *db, int load_flags);
+bool		query_match_id(struct pkg **package_p, struct query_id *query_id, struct pkgdb *db, int load_flags);
 
 #endif				/* !_PKGNG_BACKEND_QUERY_MATCH_H_ */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308251215.r7PCFN9p030484>