From 448805890080756ee28615bff2ae6fd2a4fa42b6 Mon Sep 17 00:00:00 2001 From: Aaron Griffin Date: Fri, 1 Dec 2006 09:51:54 +0000 Subject: * Fixed the bug where -R pkgA pkgB failed when pkgA depended on pkgB --- TODO.aaron | 5 +++++ lib/libalpm/deps.c | 29 ++++++++++++++++++++--------- src/pacman/remove.c | 2 +- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/TODO.aaron b/TODO.aaron index 9b1ae816..dee8ddff 100644 --- a/TODO.aaron +++ b/TODO.aaron @@ -1,4 +1,9 @@ == This is my custom TODO file == + +**** BUGS **** +* Removal of conflicts on -A and -U (INCOMPLETE) + + * gensync: get all info from packages instead of PKGBUILDs for now, we only need to check the PKGBUILD in case of a 'force' option diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c index 7b870085..7b32b7d0 100644 --- a/lib/libalpm/deps.c +++ b/lib/libalpm/deps.c @@ -332,19 +332,30 @@ pmlist_t *_alpm_checkdeps(pmtrans_t *trans, pmdb_t *db, unsigned char op, pmlist found=0; for(j = tp->requiredby; j; j = j->next) { + /* Search for 'reqname' in packages for removal */ char *reqname = j->data; - if(!_alpm_list_is_strin(reqname, packages)) { + pmlist_t *x = NULL; + for(x = packages; x; x = x->next) { + pmpkg_t *xp = x->data; + if(strcmp(reqname, xp->name) == 0) { + found = 1; + break; + } + } + if(!found) { /* check if a package in trans->packages provides this package */ for(k=trans->packages; !found && k; k=k->next) { pmpkg_t *spkg = NULL; - if(trans->type == PM_TRANS_TYPE_SYNC) { - pmsyncpkg_t *sync = k->data; - spkg = sync->pkg; - } else { - spkg = k->data; - } - if(spkg && _alpm_list_is_strin(tp->name, spkg->provides)) { - found=1; + if(trans->type == PM_TRANS_TYPE_SYNC) { + pmsyncpkg_t *sync = k->data; + spkg = sync->pkg; + } else { + spkg = k->data; + } + if(spkg) { + if(_alpm_list_is_strin(tp->name, spkg->provides)) { + found = 1; + } } } if(!found) { diff --git a/src/pacman/remove.c b/src/pacman/remove.c index 0e5e3ddf..4802eff0 100644 --- a/src/pacman/remove.c +++ b/src/pacman/remove.c @@ -104,7 +104,7 @@ int pacman_remove(list_t *targets) case PM_ERR_UNSATISFIED_DEPS: for(lp = alpm_list_first(data); lp; lp = alpm_list_next(lp)) { pmdepmissing_t *miss = alpm_list_getdata(lp); - MSG(NL, _(" %s is required by %s\n"), alpm_dep_get_target(miss), + MSG(NL, _(":: %s is required by %s\n"), alpm_dep_get_target(miss), alpm_dep_get_name(miss)); } alpm_list_free(data); -- cgit v1.2.3-70-g09d2