summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Griffin <aaron@archlinux.org>2006-12-01 10:51:54 +0100
committerAaron Griffin <aaron@archlinux.org>2006-12-01 10:51:54 +0100
commit448805890080756ee28615bff2ae6fd2a4fa42b6 (patch)
tree6ec9d7a259fd4e829c6811fc400cd1ec0ab9c020
parent08dca1593f82dfa4b5f1199b5b1f4d7099719be9 (diff)
downloadpacman-448805890080756ee28615bff2ae6fd2a4fa42b6.tar.gz
pacman-448805890080756ee28615bff2ae6fd2a4fa42b6.tar.xz
* Fixed the bug where -R pkgA pkgB failed when pkgA depended on pkgB
-rw-r--r--TODO.aaron5
-rw-r--r--lib/libalpm/deps.c29
-rw-r--r--src/pacman/remove.c2
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);