Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=be003d51dfcc0ed1dc35ce52473bb393f1f0896f
commit be003d51dfcc0ed1dc35ce52473bb393f1f0896f Author: Michel Hermier <[email protected]> Date: Sat May 4 19:17:44 2013 +0200 libpacman: Introduce and use _pacman_trans_checkdeps as replacement of _pacman_checkdeps. diff --git a/lib/libpacman/deps.c b/lib/libpacman/deps.c index 6a7838f..0eb09c5 100644 --- a/lib/libpacman/deps.c +++ b/lib/libpacman/deps.c @@ -374,12 +374,11 @@ int _pacman_transpkg_checkdeps(pmtrans_t *trans, pmtranspkg_t *transpkg, pmlist_ } } } - if (transpkg->type == PM_TRANS_TYPE_UPGRADE) { + if (transpkg->type == PM_TRANS_TYPE_UPGRADE && + transpkg->pkg_local != NULL) { /* Really an upgrade */ /* PM_TRANS_TYPE_UPGRADE handles the backwards dependencies, ie, the packages * listed in the requiredby field. */ - 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; @@ -412,7 +411,6 @@ int _pacman_transpkg_checkdeps(pmtrans_t *trans, pmtranspkg_t *transpkg, pmlist_ } } } - } } if (transpkg->type == PM_TRANS_TYPE_REMOVE) { /* check requiredby fields */ @@ -449,11 +447,22 @@ int _pacman_transpkg_checkdeps(pmtrans_t *trans, pmtranspkg_t *transpkg, pmlist_ return 0; } +int _pacman_trans_checkdeps (pmtrans_t *trans, pmlist_t **depmisslist) { + pmlist_t *i; + + for (i = trans->packages; i != NULL; i = i->next) { + pmtranspkg_t *transpkg = i->data; + + _pacman_transpkg_checkdeps (trans, transpkg, depmisslist); + } + return 0; +} + /* Returns a pmlist_t* of missing_t pointers. * * dependencies can include versions with depmod operators. */ -pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char op, pmlist_t *packages) { +pmlist_t *_pacman_checkdeps (pmtrans_t *trans, unsigned char op, pmlist_t *packages) { pmlist_t *i, *ret = NULL; for (i = packages; i; i = i->next) { diff --git a/lib/libpacman/deps.h b/lib/libpacman/deps.h index 89a1521..a792c9a 100644 --- a/lib/libpacman/deps.h +++ b/lib/libpacman/deps.h @@ -53,6 +53,8 @@ void _pacman_sortbydeps(pmtrans_t *trans, int mode); pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char op, pmlist_t *packages); int _pacman_splitdep(const char *depstr, pmdepend_t *depend); void _pacman_removedeps(pmtrans_t *trans); + +int _pacman_trans_checkdeps (pmtrans_t *trans, pmlist_t **depmisslist); int _pacman_trans_resolvedeps(pmtrans_t *trans, pmlist_t **data); #endif /* _PACMAN_DEPS_H */ diff --git a/lib/libpacman/trans.c b/lib/libpacman/trans.c index a106cb9..9ff9571 100644 --- a/lib/libpacman/trans.c +++ b/lib/libpacman/trans.c @@ -608,7 +608,7 @@ int _pacman_sync_prepare (pmtrans_t *trans, pmlist_t **data) EVENT(trans, PM_TRANS_EVT_RESOLVEDEPS_DONE, NULL, NULL); _pacman_log(PM_LOG_FLOW1, _("looking for unresolvable dependencies")); - deps = _pacman_checkdeps(trans, PM_TRANS_TYPE_UPGRADE, trans->_packages); + _pacman_trans_checkdeps (trans, &deps); if(deps) { if(data) { *data = deps; @@ -918,7 +918,7 @@ int _pacman_trans_prepare(pmtrans_t *trans, pmlist_t **data) } } else { - pmlist_t *lp; + pmlist_t *lp = NULL; pmlist_t *rmlist = NULL; char rm_fname[PATH_MAX]; pmpkg_t *info = NULL; @@ -929,7 +929,7 @@ int _pacman_trans_prepare(pmtrans_t *trans, pmlist_t **data) EVENT(trans, PM_TRANS_EVT_CHECKDEPS_START, NULL, NULL); /* look for unsatisfied dependencies */ _pacman_log(PM_LOG_FLOW1, _("looking for unsatisfied dependencies")); - lp = _pacman_checkdeps(trans, trans->type, trans->_packages); + _pacman_trans_checkdeps (trans, &lp); if(lp != NULL) { if(data) { *data = lp; @@ -1003,7 +1003,7 @@ int _pacman_trans_prepare(pmtrans_t *trans, pmlist_t **data) EVENT(trans, PM_TRANS_EVT_CHECKDEPS_START, NULL, NULL); _pacman_log(PM_LOG_FLOW1, _("looking for unsatisfied dependencies")); - lp = _pacman_checkdeps(trans, trans->type, trans->_packages); + _pacman_trans_checkdeps (trans, &lp); if(lp != NULL) { if(trans->flags & PM_TRANS_FLAG_CASCADE) { while(lp) { @@ -1019,7 +1019,7 @@ int _pacman_trans_prepare(pmtrans_t *trans, pmlist_t **data) } } FREELIST(lp); - lp = _pacman_checkdeps(trans, trans->type, trans->_packages); + _pacman_trans_checkdeps (trans, &lp); } } else { if(data) { _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
