svn commit: r357529 - in head/ports-mgmt/pkg-devel: . files

Bryan Drewery bdrewery at FreeBSD.org
Wed Jun 11 19:41:24 UTC 2014


Author: bdrewery
Date: Wed Jun 11 19:41:23 2014
New Revision: 357529
URL: http://svnweb.freebsd.org/changeset/ports/357529
QAT: https://qat.redports.org/buildarchive/r357529/

Log:
  Fix loading of reverse dependencies

Added:
  head/ports-mgmt/pkg-devel/files/patch-libpkg__pkgdb.c   (contents, props changed)
Modified:
  head/ports-mgmt/pkg-devel/Makefile

Modified: head/ports-mgmt/pkg-devel/Makefile
==============================================================================
--- head/ports-mgmt/pkg-devel/Makefile	Wed Jun 11 19:32:48 2014	(r357528)
+++ head/ports-mgmt/pkg-devel/Makefile	Wed Jun 11 19:41:23 2014	(r357529)
@@ -2,6 +2,7 @@
 
 PORTNAME=	pkg
 DISTVERSION=	1.3.0.b3
+PORTREVISION=	1
 CATEGORIES=	ports-mgmt
 MASTER_SITES=	\
 		http://files.etoilebsd.net/pkg/ \

Added: head/ports-mgmt/pkg-devel/files/patch-libpkg__pkgdb.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/ports-mgmt/pkg-devel/files/patch-libpkg__pkgdb.c	Wed Jun 11 19:41:23 2014	(r357529)
@@ -0,0 +1,61 @@
+commit 4f3ce011ee1d0f00afc8d84ed9fd82cda9f02a08
+Author: Bryan Drewery <bryan at shatow.net>
+Date:   Wed Jun 11 12:31:21 2014 -0500
+
+    Fix pkgdb_load_rdeps by reverting "Avoid deps full scan when loading dependencies."
+    
+    This reverts commit cf47e2c24af23c8f278d9c502fe2923a42f23d33.
+    
+    1. deps should be joined on p.id=d.package_id rather than origin.
+       Otherwise no results are returned breaking pkg-query %r, pkg-autoremove,
+       etc.
+    2. Restore uniqueid support [1]
+    
+    Discussed with:	bapt [1]
+    
+    Fixes #833
+
+diff --git libpkg/pkgdb.c libpkg/pkgdb.c
+index e46ddeb..7e4500b 100644
+--- libpkg/pkgdb.c
++++ libpkg/pkgdb.c
+@@ -1923,23 +1923,19 @@ pkgdb_load_rdeps(struct pkgdb *db, struct pkg *pkg)
+ {
+ 	sqlite3_stmt	*stmt = NULL;
+ 	int		 ret;
+-	const char	*origin;
++	const char	*uniqueid;
+ 	const char	*reponame = NULL;
+ 	char		 sql[BUFSIZ];
+ 	const char	*mainsql = ""
+ 		"SELECT p.name, p.origin, p.version, p.locked "
+-		"FROM main.deps AS d "
+-		"LEFT JOIN main.packages AS p ON p.origin = d.origin "
++		"FROM main.packages AS p, main.deps AS d "
+ 		"WHERE p.id = d.package_id "
+-		"AND p.name = d.name "
+-		"AND d.origin = ?1;";
++			"AND d.name || '~' || d.origin = ?1;";
+ 	const char	*reposql = ""
+ 		"SELECT p.name, p.origin, p.version, 0 "
+-		"FROM %Q.deps AS d "
+-		"LEFT JOIN %Q.packages AS p ON p.origin = d.origin "
++		"FROM %Q.packages AS p, %Q.deps AS d "
+ 		"WHERE p.id = d.package_id "
+-		"AND p.name = d.name "
+-		"AND d.origin = ?1;";
++			"AND d.name || '~' || d.origin = ?1;";
+ 
+ 	assert(db != NULL && pkg != NULL);
+ 
+@@ -1962,8 +1958,8 @@ pkgdb_load_rdeps(struct pkgdb *db, struct pkg *pkg)
+ 		return (EPKG_FATAL);
+ 	}
+ 
+-	pkg_get(pkg, PKG_ORIGIN, &origin);
+-	sqlite3_bind_text(stmt, 1, origin, -1, SQLITE_STATIC);
++	pkg_get(pkg, PKG_UNIQUEID, &uniqueid);
++	sqlite3_bind_text(stmt, 1, uniqueid, -1, SQLITE_STATIC);
+ 
+ 	while ((ret = sqlite3_step(stmt)) == SQLITE_ROW) {
+ 		pkg_addrdep(pkg, sqlite3_column_text(stmt, 0),


More information about the svn-ports-head mailing list