Idézés Xavier <shiningxc@gmail.com>:
On Sat, Dec 01, 2007 at 11:25:45PM +0100, Nagy Gabor wrote:
4. Hmm, how am I supposed to rebase your unneeded patch now? :) Seems like the "causingpkg" is now hidden behind the alpm_list_find + satisfycmp function. Well, then you must compute it... If we know a dependency that would be broken after -R, we just find a satisfier in the target list and keep that target.
Well, I rebased your -Ru patch, and it seems to work fine (at least it didn't break any pactest), but just in case, here is the important part of the rebased patch (I will attach the whole patch as well) :
@@ -295,10 +296,17 @@ alpm_list_t SYMEXPORT *alpm_checkdeps(pmdb_t *db, int reversedeps, pmpkg_t *lp = i->data; for(j = alpm_pkg_get_depends(lp); j; j = j->next) { pmdepend_t *depend = j->data; + int found = 0; + pmpkg_t *causingpkg = NULL; /* we won't break this depend, if it is already broken, we ignore it */ + for(k = modified; k && !found; k = k->next) { + causingpkg = k->data; + found = alpm_depcmp(causingpkg, depend); + } + /* 1. check upgrade list for satisfiers */ /* 2. check dblist for satisfiers */ - if(alpm_list_find(modified, depend, satisfycmp) && + if(found && !alpm_list_find(upgrade, depend, satisfycmp) && !alpm_list_find(dblist, depend, satisfycmp)) { char *missdepstring = alpm_dep_get_string(depend); @@ -306,7 +314,7 @@ alpm_list_t SYMEXPORT *alpm_checkdeps(pmdb_t *db, int reversedeps, missdepstring, alpm_pkg_get_name(lp)); free(missdepstring); miss = _alpm_depmiss_new(lp->name, depend->mod, - depend->name, depend->version); + depend->name, depend->version, alpm_pkg_get_name(causingpkg)); baddeps = alpm_list_add(baddeps, miss); } }
Looks fine. We also can modify alpm_list_find to return NULL if no element was found or return with a pointer to the "found" element. Bye ---------------------------------------------------- SZTE Egyetemi Könyvtár - http://www.bibl.u-szeged.hu This mail sent through IMP: http://horde.org/imp/