Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=38404f714f0c0f6a5bfda59fce480ab4e3746126
commit 38404f714f0c0f6a5bfda59fce480ab4e3746126 Author: Michel Hermier <[email protected]> Date: Sat May 4 15:13:06 2013 +0200 libpacman: Use transpkg->pkg_local instead of reasking cache for it in _pacman_transpkg_checkdeps. diff --git a/lib/libpacman/deps.c b/lib/libpacman/deps.c index 1bd1c8d..6a7838f 100644 --- a/lib/libpacman/deps.c +++ b/lib/libpacman/deps.c @@ -378,32 +378,30 @@ int _pacman_transpkg_checkdeps(pmtrans_t *trans, pmtranspkg_t *transpkg, pmlist_ /* PM_TRANS_TYPE_UPGRADE handles the backwards dependencies, ie, the packages * listed in the requiredby field. */ - pmpkg_t *oldpkg; - - if((oldpkg = _pacman_db_get_pkgfromcache(db, pkg_name)) == NULL) { - return; - } - for(j = _pacman_pkg_getinfo(oldpkg, PM_PKG_REQUIREDBY); j; j = j->next) { + if(transpkg->pkg_local != NULL) { + /* Really an upgrade*/ + for(j = _pacman_pkg_getinfo(transpkg->pkg_local, PM_PKG_REQUIREDBY); j; j = j->next) { pmtranspkg_t *requiredtranspkg = __pacman_trans_get_trans_pkg (trans, (const char *)j->data); pmpkg_t *p; if (requiredtranspkg != NULL && requiredtranspkg->type & PM_TRANS_TYPE_ADD) { /* this package is also in the upgrade list, so don't worry about it */ - return; + continue; } if((p = _pacman_db_get_pkgfromcache(db, j->data)) == NULL) { /* hmmm... package isn't installed.. */ - return; + 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); - if (_pacman_pkg_is_depend_satisfied (oldpkg, &depend) == 0 && _pacman_pkg_is_depend_satisfied (transpkg->pkg_new, &depend) != 0) { + if (_pacman_pkg_is_depend_satisfied (transpkg->pkg_local, &depend) == 0 && + _pacman_pkg_is_depend_satisfied (transpkg->pkg_new, &depend) != 0) { _pacman_log(PM_LOG_DEBUG, _("checkdeps: updated '%s' won't satisfy a dependency of '%s'"), - oldpkg->name, p->name); + transpkg->pkg_local->name, p->name); miss = _pacman_depmiss_new(p->name, PM_DEP_TYPE_DEPEND, depend.mod, depend.name, depend.version); if (!_pacman_depmiss_isin(miss, *baddeps)) { @@ -414,6 +412,7 @@ int _pacman_transpkg_checkdeps(pmtrans_t *trans, pmtranspkg_t *transpkg, pmlist_ } } } + } } if (transpkg->type == PM_TRANS_TYPE_REMOVE) { /* check requiredby fields */ @@ -462,7 +461,7 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char op, pmlist_t *packag transpkg.type = op; if (op & PM_TRANS_TYPE_ADD) { transpkg.pkg_new = i->data; - transpkg.pkg_local = _pacman_db_get_pkgfromcache(trans->handle->db_local, i->data); + transpkg.pkg_local = _pacman_db_get_pkgfromcache(trans->handle->db_local, transpkg.pkg_new->name); } else { transpkg.pkg_new = NULL; transpkg.pkg_local = i->data; _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
