On Wed, Jul 25, 2007 at 02:50:18PM +0200, Xavier wrote:
You were right to ignore everything I just said, it doesn't apply. The local version of pkg2 being 1.0-2 is very important, that's why I wanted you to submit the new corrected pactest yourself :)
So yes, there is indeed a problem when a dependency is satisfied by a locally installed package going to be removed (pkg2 here). Btw it's possible to achieve the same with conflicts instead of replaces. Not sure which one we should choose, maybe both?
Anyway, is here the same (I think) pactest simplified a bit, in a git patch :
From fa7f06fce067baf1fd5d857fcee4178444c2f811 Mon Sep 17 00:00:00 2001 From: Chantry Xavier <shiningxc@gmail.com> Date: Wed, 25 Jul 2007 14:47:46 +0200 Subject: [PATCH] Add sync1003 pactest.
This test shows a problem when a dependency is satisfied by a locally installed package going to be removed (pkg2 here).
checkdeps doesn't know about packages going to be removed, and so fails to do its job (checking dependencies) correctly.
Signed-off-by: Chantry Xavier <shiningxc@gmail.com> --- pactest/tests/sync1003.py | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) create mode 100644 pactest/tests/sync1003.py
diff --git a/pactest/tests/sync1003.py b/pactest/tests/sync1003.py new file mode 100644 index 0000000..27a7aa5 --- /dev/null +++ b/pactest/tests/sync1003.py @@ -0,0 +1,17 @@ +self.description = "Induced removal would break dependency" + +sp1 = pmpkg("pkg1", "1.0-1") +sp1.conflicts = [ "pkg2" ] +self.addpkg2db("sync", sp1) + +lp2 = pmpkg("pkg2", "1.0-2") +self.addpkg2db("local", lp2) + +lp3 = pmpkg("pkg3", "1.0-1") +lp3.depends = ["pkg2=1.0-2"] +self.addpkg2db("local", lp3) + +self.args = "-S pkg1" + +self.addrule("PACMAN_RETCODE=1") +self.addrule("PKG_EXIST=pkg2") -- 1.5.2.4
You can ignore that again.. That pactest is broken, pkg2 is required by pkg3, but requiredby field of pkg2 is empty. Sorry.. By adding lp2.requiredby = [ "pkg3" ] , it works fine. But that's actually the problem. checkdeps use the requiredby fields, but there is no requiredby fields for sync packages, only for local ones.