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