[pacman-dev] [PATCH] libalpm: Fix installing update of a replaced package

Andrew Gregory andrew.gregory.8 at gmail.com
Sun Mar 3 15:42:20 EST 2013


On 03/04/13 at 06:29am, Allan McRae wrote:
> On 04/03/13 06:26, Andrew Gregory wrote:
> > On 03/04/13 at 05:45am, Allan McRae wrote:
> >> On 04/03/13 05:43, Allan McRae wrote:
> >>> On 01/03/13 04:06, Olivier Brunel wrote:
> >>>> During a sysupgrade, if a package is replaced by another, and an update for the
> >>>> former package is found (on another repo) the replaced package would be
> >>>> re-installed.
> >>>>
> >>>> Signed-off-by: Olivier Brunel <i.am.jack.mail at gmail.com>
> >>>> ---
> >>>> I'm not really familiar with inner workings of ALPM, so this is probably not the
> >>>> best way to do this.
> >>>>
> > <snip>
> >>>> diff --git a/test/pacman/tests/sync1104.py b/test/pacman/tests/sync1104.py
> >>>> new file mode 100644
> >>>> index 0000000..5cec98a
> >>>> --- /dev/null
> >>>> +++ b/test/pacman/tests/sync1104.py
> >>>> @@ -0,0 +1,18 @@
> >>>> +self.description = "Don't update (reinstall) a replaced package"
> >>>> +
> >>>> +lp = pmpkg("old", "1-1")
> >>>> +self.addpkg2db("local", lp)
> >>>> +
> >>>> +p1 = pmpkg("new")
> >>>> +p1.provides = ["old"]
> >>>> +p1.replaces = ["old"]
> >>>> +self.addpkg2db("sync1", p1)
> >>>> +
> >>>> +p2 = pmpkg("old", "1-2")
> >>>> +self.addpkg2db("sync2", p2)
> >>>> +
> >>>> +self.args = "-Su"
> >>>> +
> >>>> +self.addrule("PACMAN_RETCODE=0")
> >>>> +self.addrule("!PKG_EXIST=old")
> >>>> +self.addrule("PKG_EXIST=new")
> >>>>
> >>>
> >>
> >> Forgot to add - awesome for adding a pactest here!
> > 
> > Is the test case correct though?  Other than the fact that this one uses two
> > sync repos, this looks identical to sync132 which has the opposite result.
> > 
> 
> Hrm...  I'd say that sync132 is wrong...
> 
> If pkg1 replaces pkg2, I'd expect pkg1 to replace pkg2 whether or not
> pkg2 has an update.
> 
> Allan
> 
> Allan
> 
> 

I would actually come out the other way.  Where a replacement is
*unversioned* like in this test I would expect an updated package to
override it.  Otherwise it would try to replace the other package on
every update even though it's still in a repo.  Test replace102 (it
would be awesome if we could get some kind of consistent naming scheme
going for these tests) handles the situation where you have
a versioned replace for a package still in a repo (python 2->3
upgrade).

apg


More information about the pacman-dev mailing list