Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=a8c8df582bb7062302b7004b3b1472a8579bef62
commit a8c8df582bb7062302b7004b3b1472a8579bef62 Author: Michel Hermier <[email protected]> Date: Thu Aug 14 18:55:50 2014 +0200 libpacman: Use new pkg_local variable in _pacman_checkdeps, when when package represent a local package. diff --git a/lib/libpacman/deps.cpp b/lib/libpacman/deps.cpp index 8bd4f0d..63f8ce3 100644 --- a/lib/libpacman/deps.cpp +++ b/lib/libpacman/deps.cpp @@ -226,21 +226,24 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char op, pmlist_t *packag for(i = packages; i; i = i->next) { Package *tp = i->data; + Package *pkg_local; if(tp == NULL) { continue; } if(op == PM_TRANS_TYPE_UPGRADE) { + pkg_local = _pacman_db_get_pkgfromcache(db_local, tp->name()); + } else if (PM_TRANS_TYPE_REMOVE) { + pkg_local = tp; + } + + if(op == PM_TRANS_TYPE_UPGRADE) { /* PM_TRANS_TYPE_UPGRADE handles the backwards dependencies, ie, the packages * listed in the requiredby field. */ - Package *oldpkg; - - if((oldpkg = _pacman_db_get_pkgfromcache(db_local, tp->name())) == NULL) { - continue; - } - for(j = oldpkg->requiredby(); j; j = j->next) { + if(pkg_local != NULL) { + for(j = pkg_local->requiredby(); j; j = j->next) { //char *ver; Package *p; found = 0; @@ -255,9 +258,9 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char op, pmlist_t *packag for(k = p->depends(); k; k = k->next) { /* don't break any existing dependencies (possible provides) */ _pacman_splitdep(k->data, &depend); - if(_pacman_depcmp(oldpkg, &depend) && !_pacman_depcmp(tp, &depend)) { + if(_pacman_depcmp(pkg_local, &depend) && !_pacman_depcmp(tp, &depend)) { _pacman_log(PM_LOG_DEBUG, _("checkdeps: updated '%s' won't satisfy a dependency of '%s'"), - oldpkg->name(), p->name()); + pkg_local->name(), p->name()); miss = new __pmdepmissing_t(p->name(), PM_DEP_TYPE_DEPEND, depend.mod, depend.name, depend.version); baddeps = _pacman_depmisslist_add(baddeps, miss); @@ -265,6 +268,7 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char op, pmlist_t *packag } } } + } if(op == PM_TRANS_TYPE_ADD || op == PM_TRANS_TYPE_UPGRADE) { /* DEPENDENCIES -- look for unsatisfied dependencies */ for(j = tp->depends(); j; j = j->next) { @@ -391,26 +395,26 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char op, pmlist_t *packag } else if(op == PM_TRANS_TYPE_REMOVE) { /* check requiredby fields */ found=0; - for(j = tp->requiredby(); j; j = j->next) { + for(j = pkg_local->requiredby(); j; j = j->next) { if(!_pacman_list_is_strin((char *)j->data, packages)) { /* check if a package in trans->packages provides this package */ for(k=trans->packages; !found && k; k=k->next) { Package *spkg = k->data; - if(spkg && spkg->provides(tp->name())) { + if(spkg && spkg->provides(pkg_local->name())) { found=1; } } for(k=trans->syncpkgs; !found && k; k=k->next) { pmsyncpkg_t *ps = k->data; - if(ps->pkg_new->provides(tp->name())) { + if(ps->pkg_new->provides(pkg_local->name())) { found=1; } } if(!found) { - _pacman_log(PM_LOG_DEBUG, _("checkdeps: found %s which requires %s"), (char *)j->data, tp->name()); - miss = new __pmdepmissing_t(tp->name(), PM_DEP_TYPE_REQUIRED, PM_DEP_MOD_ANY, (const char *)j->data, NULL); + _pacman_log(PM_LOG_DEBUG, _("checkdeps: found %s which requires %s"), (char *)j->data, pkg_local->name()); + miss = new __pmdepmissing_t(pkg_local->name(), PM_DEP_TYPE_REQUIRED, PM_DEP_MOD_ANY, (const char *)j->data, NULL); baddeps = _pacman_depmisslist_add(baddeps, miss); } } _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
