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

commit d22d2995d68079fdfbbbecf434d833f90e3f0202
Author: Michel Hermier <[email protected]>
Date:   Tue May 7 10:26:28 2013 +0200

libpacman: Increase symetry even more in _pacman_transpkg_checkdeps.

* Check required depends on the whole system when removing a package,
not only in the about to be removed packages.

diff --git a/lib/libpacman/deps.c b/lib/libpacman/deps.c
index 102710c..a01c750 100644
--- a/lib/libpacman/deps.c
+++ b/lib/libpacman/deps.c
@@ -417,7 +417,7 @@ int _pacman_transpkg_checkdeps(pmtrans_t *trans, 
pmtranspkg_t *transpkg, pmlist_
for (i = _pacman_pkg_getinfo (transpkg->pkg_local, PM_PKG_REQUIREDBY); i; i = 
i->next) {
const char *required_pkg_name = i->data;
pmtranspkg_t *required_transpkg = __pacman_trans_get_trans_pkg (trans, 
required_pkg_name);
-                       int found = 0;
+                       pmpkg_t *required_pkg_local;

if (required_transpkg != NULL &&
required_transpkg->type == PM_TRANS_TYPE_REMOVE) {
@@ -425,24 +425,12 @@ int _pacman_transpkg_checkdeps(pmtrans_t *trans, 
pmtranspkg_t *transpkg, pmlist_
continue;
}

-                       /* check if a package in trans->packages provides this 
package */
-                       for (k = trans->packages; !found && k; k = k->next) {
-                               pmsyncpkg_t *ps = k->data;
-                               pmpkg_t *spkg = ps->pkg_new;
-                               if (spkg && f_stringlist_find 
(_pacman_pkg_getinfo(spkg, PM_PKG_PROVIDES), pkg_name)) {
-                                       found=1;
-                               }
+                       if((required_pkg_local = 
_pacman_db_get_pkgfromcache(db, required_pkg_name)) == NULL) {
+                               /* hmmm... package isn't installed.. */
+                               continue;
}

-                       if(!found) {
-                               _pacman_log(PM_LOG_DEBUG, _("checkdeps: found 
%s which requires %s"), required_pkg_name, pkg_name);
-                               miss = _pacman_depmiss_new (pkg_name, 
PM_DEP_TYPE_REQUIRED, PM_DEP_MOD_ANY, required_pkg_name, NULL);
-                               if (!_pacman_depmiss_isin(miss, *baddeps)) {
-                                       *baddeps = _pacman_list_add(*baddeps, 
miss);
-                               } else {
-                                       FREE(miss);
-                               }
-                       }
+                       _pacman_trans_check_package_depends (trans, 
required_pkg_local, baddeps);
}
}
return 0;
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to