RPM Community Forums

Mailing List Message of <rpm-devel>

Re: Problems with erase-before-install on RPM 5.2

From: Jeff Johnson <n3npq@mac.com>
Date: Tue 21 Oct 2008 - 03:42:54 CEST
Message-id: <A403E057-38EA-4051-9A26-A1361ADB8438@mac.com>

On Oct 20, 2008, at 4:09 PM, Jeff Johnson wrote:

>>
>> This patch displays loops so that the information can actually be  
>> seen,
>> not guessed at:
>>
>> Index: depends.c
>> ===================================================================
>> RCS file: /v/rpm/cvs/rpm/lib/depends.c,v
>> retrieving revision 1.421
>> diff -u -b -B -w -p -r1.421 depends.c
>> --- depends.c	14 Oct 2008 03:55:08 -0000	1.421
>> +++ depends.c	20 Oct 2008 19:55:33 -0000
>> @@ -1890,7 +1890,7 @@ static int ignoreDep(const rpmts ts, con
>> 	const char ** av = NULL;
>> 	int anaconda = rpmtsDFlags(ts) & RPMDEPS_FLAG_ANACONDA;
>> 	int msglvl = (anaconda || (rpmtsDFlags(ts) & RPMDEPS_FLAG_DEPLOOPS))
>> -			? RPMLOG_WARNING : RPMLOG_DEBUG;
>> +			? RPMLOG_WARNING : RPMLOG_ERROR;
>> 	int ac = 0;
>> 	int i;
>>

This patch was the right idea but the wrong place.

After getting he patch in the right place, here is an
example of the type of failure:

...
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
error: LOOP:
error: removing kpathsea-2007-35.fc10.i386 "Requires: texlive =  
2007-35.fc10" from tsort relations.
error: removing texlive-2007-35.fc10.i386 "Requires(auto):  
libkpathsea.so.4" from tsort relations.
error: LOOP:
error: removing kpathsea-2007-30.fc9.i386 "Requires(auto):  
libkpathsea.so.4" from tsort relations.
error: removing texlive-2007-30.fc9.i386 "Requires: texlive =  
2007-30.fc9" from tsort relations.
Running Transaction
   Erasing        : texlive-latex                                    
[ 1/12]
   Erasing        : texlive-utils                                    
[ 2/12]
   Erasing        : texlive-dvips                                    
[ 3/12]
   Erasing        : texlive-dviutils                                 
[ 4/12]
   Updating       : texlive                                          
[ 5/12]
   Updating       : kpathsea                                         
[ 6/12]
   Updating       : texlive-dvips                                    
[ 7/12]
   Updating       : texlive-utils                                    
[ 8/12]
   Cleanup        : texlive                                          
[ 9/12]
   Updating       : texlive-dviutils                                 
[10/12]
   Cleanup        : kpathsea                                         
[11/12]
   Updating       : texlive-latex                                    
[12/12]


There are several pieces to a real fix, displaying the loops that
are triggering the problem are the first step.

The next step will be to insturment relations between the
new-installed <-> old-erased packages. That is likely to increase
the number of loops, and also make rpm behavior in the face of
loops stiffer and more brittle, but guarantees install-before-erase
ordering.

73 de Jeff
Received on Tue Oct 21 03:43:02 2008
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.