Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=a90a9204d9e9dd1c61984a3778addadcbb2eb10a

commit a90a9204d9e9dd1c61984a3778addadcbb2eb10a
Author: Michel Hermier <herm...@frugalware.org>
Date:   Fri May 3 22:07:02 2013 +0200

libpacman: Increase mirroring in _pacman_checkdeps.

diff --git a/lib/libpacman/deps.c b/lib/libpacman/deps.c
index 300c875..c3d7efb 100644
--- a/lib/libpacman/deps.c
+++ b/lib/libpacman/deps.c
@@ -351,7 +351,6 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char 
op, pmlist_t *packag
{
pmdepend_t depend;
pmlist_t *i, *j, *k;
-       int found = 0;
pmlist_t *baddeps = NULL;
pmdepmissing_t *miss = NULL;
pmdb_t *db = trans->handle->db_local;
@@ -391,17 +390,21 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned 
char op, pmlist_t *packag
continue;
}
for(j = _pacman_pkg_getinfo(oldpkg, PM_PKG_REQUIREDBY); j; j = j->next) {
-                               //char *ver;
+                               pmtranspkg_t *requiredtranspkg = 
__pacman_trans_get_trans_pkg (trans, (const char *)j->data);
pmpkg_t *p;
-                               found = 0;
-                               if((p = _pacman_db_get_pkgfromcache(db, 
j->data)) == NULL) {
-                                       /* hmmm... package isn't installed.. */
+                               int found = 0;
+
+                               if (requiredtranspkg != NULL &&
+                                               requiredtranspkg->type & 
PM_TRANS_TYPE_ADD) {
+                                       /* this package is also in the upgrade 
list, so don't worry about it */
continue;
}
-                               if(_pacman_pkg_isin(p->name, packages)) {
-                                       /* this package is also in the upgrade 
list, so don't worry about it */
+
+                               if((p = _pacman_db_get_pkgfromcache(db, 
j->data)) == NULL) {
+                                       /* hmmm... package isn't installed.. */
continue;
}
+
for(k = _pacman_pkg_getinfo(p, PM_PKG_DEPENDS); k; k = k->next) {
/* don't break any existing dependencies (possible provides) */
_pacman_splitdep(k->data, &depend);
@@ -421,9 +424,9 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char 
op, pmlist_t *packag
}
if(op == PM_TRANS_TYPE_REMOVE) {
/* check requiredby fields */
-                       found=0;
for(j = _pacman_pkg_getinfo(tp, PM_PKG_REQUIREDBY); j; j = j->next) {
pmtranspkg_t *requiredtranspkg = __pacman_trans_get_trans_pkg (trans, (const 
char *)j->data);
+                               int found = 0;

/* Ignore required packages to be deleted */
if (requiredtranspkg != NULL &&
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to