[pacman-dev] [patch] I. deps.c/checkdeps bugfix + upgrade059.py
Nagy Gabor
ngaba at petra.hos.u-szeged.hu
Sat Apr 21 11:07:55 EDT 2007
Hi!
I started to work on deps.c. I send smaller patches instead of a big
one. At first I rewrite alpm_*deps functions (implement topological
sort...); I merge them later (which would be the most optimal imho)
after testing.
I found a bug:
---upgrade059.py---
self.description = "Try to upgrade packages which would break a multiple-depend"
lp1 = pmpkg("pkg1")
lp1.depends = ["imaginary"]
self.addpkg2db("local", lp1)
lp2 = pmpkg("pkg2", "1.0-1")
lp2.provides = ["imaginary"]
lp2.requiredby = [ "pkg1" ]
self.addpkg2db("local", lp2)
lp3 = pmpkg("pkg3", "1.0-1")
lp3.provides = ["imaginary"]
lp3.requiredby = [ "pkg1" ]
self.addpkg2db("local", lp3)
p2 = pmpkg("pkg2", "1.0-2")
self.addpkg(p2)
p3 = pmpkg("pkg3", "1.0-2")
self.addpkg(p3)
self.args = "-U %s" % " ".join([p.filename() for p in p2, p3])
self.addrule("PACMAN_RETCODE=1")
self.addrule("PKG_EXIST=pkg1")
self.addrule("PKG_VERSION=pkg2|1.0-1")
self.addrule("PKG_VERSION=pkg3|1.0-1")
-------------------
Here is my patch (WARNING: with large targetlist this may cause notable
slowdown).
-------------------
diff -Naur pacman-lib/lib/libalpm/deps.c pacman-lib.new/lib/libalpm/deps.c
--- pacman-lib/lib/libalpm/deps.c 2007-03-19 05:23:45.000000000 +0100
+++ pacman-lib.new/lib/libalpm/deps.c 2007-04-21 16:42:29.000000000 +0200
@@ -271,8 +271,9 @@
for(l = _alpm_db_get_pkgcache(db); l; l = l->next) {
pmpkg_t *pkg = l->data;
- if(strcmp(alpm_pkg_get_name(pkg), alpm_pkg_get_name(oldpkg)) == 0) {
- /* well, we know this one succeeds, but we're removing it... skip it */
+ if(_alpm_pkg_find(alpm_pkg_get_name(pkg), packages)) {
+ /* we ignore packages that will be updated because we know that
+ updated ones don't satisfy depend.*/
continue;
}
------------------
Bye, ngaba
More information about the pacman-dev
mailing list