diff options
author | Aaron Griffin <aaron@archlinux.org> | 2006-12-01 10:51:54 +0100 |
---|---|---|
committer | Aaron Griffin <aaron@archlinux.org> | 2006-12-01 10:51:54 +0100 |
commit | 448805890080756ee28615bff2ae6fd2a4fa42b6 (patch) | |
tree | 6ec9d7a259fd4e829c6811fc400cd1ec0ab9c020 | |
parent | 08dca1593f82dfa4b5f1199b5b1f4d7099719be9 (diff) | |
download | pacman-448805890080756ee28615bff2ae6fd2a4fa42b6.tar.gz pacman-448805890080756ee28615bff2ae6fd2a4fa42b6.tar.xz |
* Fixed the bug where -R pkgA pkgB failed when pkgA depended on pkgB
-rw-r--r-- | TODO.aaron | 5 | ||||
-rw-r--r-- | lib/libalpm/deps.c | 29 | ||||
-rw-r--r-- | src/pacman/remove.c | 2 |
3 files changed, 26 insertions, 10 deletions
@@ -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); |