[Rpm-maint] [RFC/PATCH] comparisons without release

Panu Matilainen pmatilai at laiskiainen.org
Wed Aug 11 06:54:54 UTC 2010


On Tue, 10 Aug 2010, seth vidal wrote:
>
> A related and interesting question is this:
>
> Why do obsoletes only work on pkg NAMES and conflicts work on pkg
> provides?
>
> from lib/depends.c
>
>    /* Check provides against conflicts in installed packages. */
>    while (rpmdsNext(provides) >= 0) {
>        checkInstDeps(ts, dcache, p, RPMTAG_CONFLICTNAME,
> rpmdsN(provides));
>    }
>
>    /* Check package name (not provides!) against installed obsoletes */
>    checkInstDeps(ts, dcache, p, RPMTAG_OBSOLETENAME, rpmteN(p));
>    }
>
>
> Seems like the impact the same kind of thing.
>
> I tried looking through the commits related to this for a justification
> but I couldn't find one.

Yup, obsoletes are quite the oddball. They used to be against provides 
back in the day - it goes back to the implicit obsoletes on provides 
thing, thread starting here: 
http://lists.rpm.org/pipermail/rpm-maint/2007-May/001408.html, continued 
here: http://lists.rpm.org/pipermail/rpm-maint/2007-June/001518.html

Implicit obsoletes on provides is different from explicit obsoletes on 
provides, the implicit part being the nastier case but there were IIRC 
more arguments towards obsoletes only matching names than provides than 
the other way around, eg:
http://lists.rpm.org/pipermail/rpm-maint/2007-May/001413.html

So why conflicts on provides instead of names? I dont recall it ever being 
discussed in detail, but one possible use is pointed out here: 
http://lists.rpm.org/pipermail/rpm-maint/2010-April/002719.html

 	- Panu -


More information about the Rpm-maint mailing list