[prev in list] [next in list] [prev in thread] [next in thread] 

List:       rpmorg-maint
Subject:    [Rpm-maint] RPM 4.13.0-alpha released
From:       thierry.vignaud () gmail ! com (Thierry Vignaud)
Date:       2015-08-25 13:46:42
Message-ID: CAONrEtZOmF9spAHgZzX_Lc3ue1MptSfno9id4B0hxHr2ktibAQ () mail ! gmail ! com
[Download RAW message or body]

On 25 August 2015 at 13:41, Thierry Vignaud <thierry.vignaud at gmail.com> wrote:
>>> The problem is when you upgrade distro N to N+2 both triggers should
>>> be run but only one was run, which was confusing so we disallowed
>>> triggers fired by the same package with overlapping version intervals.
>>> And initscripts <= 4.72 and initscripts <= 8.38-2 overlaps.
>>> Have a look at bugs #585384, #702378 that initiate this change.
>>
>> OK for that but there's a related issue with file triggers:
>> I was testing converting our old filetriggers to new upstream filetriggers.
>> However it looks like it's no more possible to have 2 different
>> filetriggers (for %trans* ones) on the same directory:
>>
>> D: %triggerin(null-1:11-11.mga6.x86_64): waitpid(19591) rc 19591 status 0
>> rpm: backend/dbiset.c:62: dbiIndexSetUniq: Assertion `set->count > 0' failed.
>>
>> See the calls to rpmtsUniqTriggers() in lib/rpmtriggers.c
> err, s/rpmtsUniqTriggers/rpmdbUniqIterator/
>
>> Why is that?
>>
>> For now, I've workarounded the case I've seen but there may be other cases...

And I've encountered more cases.
The attached patch fixes that situation
-------------- next part --------------
diff -up ./lib/rpmtriggers.c.tv ./lib/rpmtriggers.c
--- ./lib/rpmtriggers.c.tv	2015-07-23 08:41:00.651210888 -0400
+++ ./lib/rpmtriggers.c	2015-08-25 09:41:58.339200191 -0400
@@ -124,7 +124,6 @@ void rpmtriggersPrepPostUnTransFileTrigs
     }
     rpmdbIndexIteratorFree(ii);
 
-    rpmdbUniqIterator(mi);
     if (rpmdbGetIteratorCount(mi)) {
 	/* Filter triggers and save only trans postun triggers into ts */
 	while((trigH = rpmdbNextIterator(mi)) != NULL) {
@@ -317,7 +316,6 @@ static const char *matchFilesNext(matchF
 						RPMDBI_DIRNAMES, mfi->pfx, 0);
 
 	    rpmdbFilterIterator(mfi->pi, mfi->tranPkgs, 0);
-	    rpmdbUniqIterator(mfi->pi);
 
 	} while (fx >= 0);
 

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic