MINI MINI MANI MO

Path : /lib/python2.7/site-packages/yum/
File Upload :
Current File : //lib/python2.7/site-packages/yum/packages.pyc


[c@sdZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZddl
mZddlZ
ddlmZmZmZddlZddlZddlZddlTddlmZddlZddlZejjddd	lmZmZy)ddl Z e!e d
rde"Z nWne#k
r~e"Z nXddl$Z$ddl%Z%dZ&dZ'e(d
Z)dde"dZ*dfdYZ+dfdYZ,de-fdYZ.e,dZ/de/_0de.fdYZ1de-fdYZ2dfdYZ3de.e2fdYZ4d Z5d!e4fd"YZ6d#fd$YZ7d%fd&YZ8d'd>Z9d'd'>Z:d'd(>Z;d'd)>Z<d'd*>Z=d'd+>Z>d'd,>Z?d'd->Z@d'd.>ZAd'd/>ZBd0e-fd1YZCd2eCfd3YZDd4fd5YZEiaFd6eEfd7YZGe,d8ZHdeH_0d9e6fd:YZId;e6fd<YZJd=eJfd>YZKdS(?sA
Classes and functions dealing with rpm package representations.
iN(tPopentPIPE(t
RpmUtilsError(tflagToStringtstringToVersiontcompareVerOnly(t*(t
itemgettertmedia(t
URLGrabbertURLGrabErrortgetcCs_|j|j|j}}}|j|j|j}}}tjj|||f|||fS(s4
    Compare two Package or PackageEVR objects.
    (tepochtversiontreleasetrpmUtilst	miscutilst
compareEVR(tpo1tpo2te1tv1tr1te2tv2tr2((s0/usr/lib/python2.7/site-packages/yum/packages.pytcomparePoEVR9scCsn|j|j|j}}}|j|j|j}}}||krJtS||krZtS||krjtStS(sA
    Compare two Package or PackageEVR objects for equality.
    (RR
RtFalsetTrue(RRRRRRRR((s0/usr/lib/python2.7/site-packages/yum/packages.pytcomparePoEVREQ@scCsIi}x<|D]4}|j\}}}}}|sp|j}|j}|j}|j}|j}n|}	d||f}
d||||f}d||f}d|||f}
d|||||f}d|||||f}xM|	|
|||
||gD]0}||kr,g||<n||j|q
Wq
W|S(stake a list of pkg objects and return a dict the contains all the possible
       naming conventions for them eg: for (name,i386,0,1,1)
       dict[name] = (name, i386, 0, 1, 1)
       dict[name.i386] = (name, i386, 0, 1, 1)
       dict[name-1-1.i386] = (name, i386, 0, 1, 1)       
       dict[name-1] = (name, i386, 0, 1, 1)       
       dict[name-1-1] = (name, i386, 0, 1, 1)
       dict[0:name-1-1.i386] = (name, i386, 0, 1, 1)
       dict[name-0:1-1.i386] = (name, i386, 0, 1, 1)
       s%s.%ss%s-%s-%s.%ss%s-%ss%s-%s-%ss%s:%s-%s-%s.%ss%s-%s:%s-%s.%s(tpkgtuptlowertappend(tpkgst	casematchtpkgdicttpkgtntatetvtrtnametnameArchtnameVerRelArchtnameVert
nameVerReltenvratnevratitem((s0/usr/lib/python2.7/site-packages/yum/packages.pytbuildPkgRefDictKs*
"
is$repo-epoch-name-version-release-archcCs|dkr$t|t|}ng}g}g}x|D]}|sX|j}n||kr|j||||=q=tj|r|j}	tj|}
d}x;|	D]3}|
|r|j||||=d}qqW|s|j	|qq=|j	|q=Wtj
|}|dkrStj
|}tj
|}n=|dkrd}
|
|}|
|}n
td||||fS(s,matches up the user request versus a pkg list:
       for installs/updates available pkgs should be the 'others list' 
       for removes it should be the installed list of pkgs
       takes an optional casematch option to determine if case should be matched
       exactly. Defaults to not matching.iis$repo-epoch-name-version-release-archsrepo-pkgkeycSsDi}x1|D])}d|jj|jf}|||<q
W|jS(Ns%s%s(trepotidtpkgKeytvalues(R!tuR$tmark((s0/usr/lib/python2.7/site-packages/yum/packages.pyt	pkguniques

sBad value for unique: %sN(tNoneR2tboolRtextendtmisctre_globtkeystcompile_patternR tuniquet
ValueError(R!tusercommandsR"RAR#t
exactmatchtmatchedt	unmatchedtcommandttrylisttregextfounditR1R9((s0/usr/lib/python2.7/site-packages/yum/packages.pyt
parsePackagesmsB	



	
tFakeSackcBs)eZdZdZdZdZRS(s, Fake PackageSack to use with FakeRepositorycCsdS(N((tself((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__init__scCstS(sb Is calling pkg.returnFileEntries(primary_only=True) faster than
            using searchFiles(). (R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pythave_fastReturnFileEntriesscCsdS(sNdelete a pkgobject, do nothing, but make localpackages work with --skip-brokenN((RMtobj((s0/usr/lib/python2.7/site-packages/yum/packages.pyt
delPackages(t__name__t
__module__t__doc__RNRORQ(((s0/usr/lib/python2.7/site-packages/yum/packages.pyRLs		tFakeRepositorycBsVeZdZdZdZdZdZdZdZe	ddZ
RS(	s8Fake repository class for use in rpmsack package objectscCst}d|kr-tjj|}t}n|jdrO|d }t}ng}|rk|jdnx6|D].}t|dkrd}n|j|qrWdj||_	dS(s? Set the repoid, but because it can be random ... clean it up. t/s.rpmiit?tN(
RtostpathtbasenameRtendswithR tordtjoinR4(RMtrepoidt	pathbasedtbytestbyte((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_set_cleanup_repoids	
	
	cCs)|j||j|_t|_dS(N(RcR4R*RLtsack(RMR_((s0/usr/lib/python2.7/site-packages/yum/packages.pyRNs
cCs4|j|jkrdS|j|jkr,dSdSdS(Niii(R4(RMtother((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__cmp__s
cCs
t|jS(N(thashR4(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__hash__scCs|jS(N(R4(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__str__scCs|jS(N(R4(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_ui_idstfgetcCs
|jS(N(Rj(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt<lambda>s(RRRSRTRcRNRfRhRiRjtpropertytui_id(((s0/usr/lib/python2.7/site-packages/yum/packages.pyRUs						t
PackageObjectcBsreZdZdZdZeddZdZeddZdZ	eddZ
d	Zedd
ZdZ
eddZd
ZeddZdZeddZdZeddZdZeddZdZeddZdZeddZdZeddZdZeddZdZeddZ dZ!edd Z"d!Z#edd"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4edd3Z5d4Z6RS(5sZBase Package Object - sets up the default storage dicts and the
       most common returnscCs:d|_d|_d|_d|_d|_g|_dS(N(R:R*R
RRtarcht
_checksums(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRNs					cCs!|jdkr|jS|jSdS(Nt0(RtnvraR/(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt	_ui_envrasRkcCs
|jS(N(Rt(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs!|jdkr|jS|jSdS(NRr(RRsR0(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt	_ui_nevrascCs
|jS(N(Ru(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs!|jdkr|jS|jSdS(NRr(Rtvrtevr(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_ui_evrscCs
|jS(N(Rx(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl
scCs!|jdkr|jS|jSdS(NRr(Rtvratevra(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_ui_evrascCs
|jS(N(R{(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs!|jdkr|jS|jSdS(NRr(Rtnvrtnevr(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_ui_nevrscCs
|jS(N(R~(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCsd|j|jfS(Ns%s.%s(R*Rp(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_nascCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCsd|j|jfS(Ns%s-%s(R
R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_vr!scCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl#scCsd|j|j|jfS(Ns%s-%s.%s(R
RRp(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_vra%scCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl'scCsd|j|j|jfS(Ns%s:%s-%s(RR
R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_evr)scCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl+scCs d|j|j|j|jfS(Ns%s:%s-%s.%s(RR
RRp(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_evra-scCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl/scCsd|j|j|jfS(Ns%s-%s-%s(R*R
R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_nvr1scCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl3scCs d|j|j|j|jfS(Ns%s-%s-%s.%s(R*R
RRp(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_nvra5scCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl7scCs d|j|j|j|jfS(Ns%s-%s:%s-%s(R*RR
R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_nevr9scCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl;scCs&d|j|j|j|j|jfS(Ns%s-%s:%s-%s.%s(R*RR
RRp(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_nevra=s	cCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlAscCs d|j|j|j|jfS(Ns%s:%s-%s-%s(RR*R
R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_envrCscCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlEscCs&d|j|j|j|j|jfS(Ns%s:%s-%s-%s.%s(RR*R
RRp(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_envraGscCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlKscCs|jS(N(tui_envra(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRiMscCsH|jdkr.d|j|j|jf}nd|j|jf}|S(sAreturns a printable version string - including epoch, if it's setRrs%s:%s-%ss%s-%s(RR
R(RMtver((s0/usr/lib/python2.7/site-packages/yum/packages.pytprintVerPscCsA|s
dSt|j|j}|dkr=t||}n|S(s< Compare package to another one, only rpm-version ordering. ii(tcmpR*R(RMRetret((s0/usr/lib/python2.7/site-packages/yum/packages.pytverCMPYscCs|j|}|dkr3t|j|j}n|dkrt|drt|drt|j|j}|r|jdkrdS|r|jdkrdSn|S(s4 Compare packages, this is just for UI/consistency. iR_t	installedii(RRRpthasattrR_(RMReR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRfbs*cCs[|s
tS|j|jkr tSt|drWt|drW|j|jkrWtSntS(se Compare packages for yes/no equality, includes everything in the
            UI package comparison. R_(RRRR_R(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__eq__oscCs||kstStS(N(RR(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__ne__zscCs
t||S(N(tgetattr(RMtkey((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__getitem__scCs<|s
dSt|j|j}|dkr/tSt||S(s< Compare package to another one, only rpm-version equality. iN(R:RR*RR(RMReR((s0/usr/lib/python2.7/site-packages/yum/packages.pytverEQscCs|s
dS|j|S(s> Compare package to another one, only rpm-version inequality. N(R:R(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pytverNEscCs|j|dkS(s; Uses verCMP, tests if the other _rpm-version_ is <  ours. i(R(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pytverLTscCs|j|dkS(s; Uses verCMP, tests if the other _rpm-version_ is <= ours. i(R(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pytverLEscCs|j|dkS(s; Uses verCMP, tests if the other _rpm-version_ is >  ours. i(R(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pytverGTscCs|j|dkS(s; Uses verCMP, tests if the other _rpm-version_ is >= ours. i(R(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pytverGEscCs)d|jjt|tt|fS(Ns<%s : %s (%s)>(t	__class__RRtstrthexR4(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__repr__scCs&tjdtjddt||S(Ns8returnSimple() will go away in a future version of Yum.
t
stackleveli(twarningstwarntErrorstYumFutureDeprecationWarningR(RMtvarname((s0/usr/lib/python2.7/site-packages/yum/packages.pytreturnSimples	cCs|jS(N(Rq(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pytreturnChecksumsscCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs1x*|jD]\}}}|r
||fSq
WdS(N(t	checksums(RMtcsumtypetcsumtcsumid((s0/usr/lib/python2.7/site-packages/yum/packages.pytreturnIdSums(7RRRSRTRNRtRmRRutui_nevraRxtui_evrR{tui_evraR~tui_nevrRtnaRRvRRyRRwRRzRR|RRsRR}RR0RtenvrRR/RiRRRfRRRRRRRRRRRRRR(((s0/usr/lib/python2.7/site-packages/yum/packages.pyRosh																								
												t-tYumNotFoundPackagecBs5eZdZdZeddZdZRS(cCsu|d|_|d|_|d|_|d|_|d|_||_d|_g|_t|_	tj
|_dS(Niiiii(R*RpRR
RRtsizeRqt_not_found_repoR3R4R_(RMR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRNs




				cCs|jS(s This just returns '-' (R_(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt
_ui_from_reposRkcCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCstS(s^check the package checksum vs the localPkg
           return True if pkg is good, False if not(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pytverifyLocalPkgs(RRRSRNRRmtui_from_repoR(((s0/usr/lib/python2.7/site-packages/yum/packages.pyRs		tRpmBasecBsEeZdZdZdZdZdZdZedZ	dZ
dZd	Zd
Z
dZded
ZedZdZdZddZeddZeddZeddZeddZeddZeddZeddZeddZeddZeddZeddZeddZ edd Z!edd!Z"edd"Z#edd#Z$edd$Z%edd%Z&edd&Z'edd'Z(d(Z)edd)Z*d*Z+d+d,Z,RS(-s2return functions and storage for rpm-specific datacCsi|_g|jd<g|jd<g|jd<g|jd<i|_g|jd<g|jd<g|jd<g|_g|_d|_dS(Nt	obsoletest	conflictstrequirestprovidestfiletdirtghost(tprcotfilest
_changelogtlicensesR:t_hash(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRNs	



	


		cCs:|s
tS|j|jkr tS|j|jkr6tStS(N(RRR_R(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pyRscCs||kstStS(N(RR(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pyRscCst|j|j|jS(N(t
PackageEVRRR
R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt	returnEVRscCsY|jdkrRd|jj|j|j|j|j|jf}t	||_n|jS(Ns%s - %s:%s-%s-%s.%s(
RR:R3R4RR*R
RRpRg(RMtmystr((s0/usr/lib/python2.7/site-packages/yum/packages.pyRhs
cCs`|jj|g}|r\g}x4|D],}|ds>q(n|jtj|q(W|S|S(s9return list of provides, requires, conflicts or obsoletesi(RRR R=tprco_tuple_to_string(RMtprcotypet	printabletprcostresultsR((s0/usr/lib/python2.7/site-packages/yum/packages.pyt
returnPrcos

c
Cs>||jkrdSt|j|dkrF||j|krdSn~t|ds}id	d6d	d6d	d6d	d6|_n|j|d	krt|j||j|<n||j|krdS|\}}\}}}|d	k	r|j||Sx?|j|D].\}}	\}
}}tj	||rdSqWdS(
sBreturns 1 or 0 if the pkg contains the requested tuple/tuple rangeiiit_prco_lookupRRRRN(
RtlenRR:RtsettinPrcoRangeRti18ntstr_eq(
RMRt	prcotupletreqntreqftreqetreqvtreqrR%tfR'R(R)((s0/usr/lib/python2.7/site-packages/yum/packages.pyt	checkPrco	s&(cCst|j||S(sreturns true if the package has a the prco that satisfies 
           the reqtuple range, assume false.
           Takes: prcotype, requested prco tuple(R;t
matchingPrcos(RMRtreqtuple((s0/usr/lib/python2.7/site-packages/yum/packages.pyR*sc	Cs-|\}}\}}}g}x|j|D]\}	}
\}}}
tj||	s^q.n|
dkrsd}
n|
dkr|dkr|dkr|j}n|dkr|j}n|
dkr|j}
qntjj	||	|
|||
ff}|r.|j
|	|
|||
ffq.q.W|S(Nt=tEQR(RRRR:RRtrelRRtrangeCompareR (RMRRRRRRRtresultR%RR'R(R)RE((s0/usr/lib/python2.7/site-packages/yum/packages.pyR0s&(		&cCs|jd|rtS|djdrtj|drEt}nt}x1dD]&}|d|j||krRtSqRWntS(scheck to see if the package object provides for the requirement
           passed, including searching filelists if the requirement is a file
           depRiRVRRR(sfilesdirsghost(RRt
startswithR=tre_primary_filenameRtreturnFileEntries(RMRtpri_onlytftype((s0/usr/lib/python2.7/site-packages/yum/packages.pytprovides_forMs	
cCs|jS(sreturn changelog entries(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pytreturnChangelogasRcCs{|jrw||jkrw|ri|dkr6tj}n	tj}g|j|D]}||rM|^qMS|j|SngS(s}return list of files based on type, you can pass primary_only=True
           to limit to those files in the primary repodataR(RR=tre_primary_dirnameR(RMRtprimary_onlytmatchtfn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRes		*cCs|rg}xp|jjD]_}|dkr:tj}n	tj}x(|j|D]}||rQPqQqQWq|j|qW|S|jjS(sreturn list of types of files in the package, you can pass
           primary_only=True to limit to those files in the primary repodataR(RR?R=RRR (RMRRRRR((s0/usr/lib/python2.7/site-packages/yum/packages.pytreturnFileTypesss	cCsft|d|sUg|j|D]\}}}|^q#}t|d||nt|d|S(Nt_cache_prco_names_(RRtsetattrR(RMRR%RR(tdata((s0/usr/lib/python2.7/site-packages/yum/packages.pytreturnPrcoNamess+cCs tjdtjdd|jS(Ns<getProvidesNames() will go away in a future version of Yum.
Ri(RRRtYumDeprecationWarningtprovides_names(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pytgetProvidesNamess	RcCs@tjdtjdd|jr<||jkr<|j|SgS(Ns_simpleFiles() will go away in a future version of Yum.Use returnFileEntries(primary_only=True)
Ri(RRRRR(RMR((s0/usr/lib/python2.7/site-packages/yum/packages.pytsimpleFiless
	RkcCs|jddS(NRR(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs|jddS(NRR(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs|jddS(NRR(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs
|jdS(NR(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs
|jdS(Ntstrong_requires(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs
|jdS(NR(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs
|jdS(NR(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs
|jdS(NR(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs
|jdS(NR(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs
|jdS(NR(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs
|jdS(NR(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs
|jdS(NR(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs
|jdS(NR(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs|jdtS(NR(RR(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs|jdtS(NR(RR(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs|jdtS(NR(RR(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs|jdtS(NR(RR(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs|jdtS(NR(RR(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCst|dr|jSt|drq|jrqtjj|j\}}}}}||jkrq||_|Sn|j|_|jS(s\ Return the "base name" of the package, atm. we can only look at
            the sourcerpm. t_base_package_name_rett	sourcerpm(RRRRRt
splitFilenameR*(RMR%R(R)R'R&((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_getBaseNames$	cCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs|jjjS(sb Is calling pkg.returnFileEntries(primary_only=True) faster than
            using searchFiles(). (R3RdRO(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyROsicCs}|jd|j|j|jff}g}xL|D]D}|jd|r1|j||rut||kruPquq1q1W|S(s Returns list of obsoleters that obsolete this package. Note that we
            don't do obsoleting loops. If limit is != 0, then we stop after
            finding that many. RR(R*RR
RRR R(RMt
obsoleterstlimittprovtupRtobspo((s0/usr/lib/python2.7/site-packages/yum/packages.pytobsoletedBys$

(-RRRSRTRNRRRRhRRRRRRRRRRRRRmtfilelisttdirlistt	ghostlistRRRRRRtrequires_nameststrong_requires_namestconflicts_namestobsoletes_namestprovides_printtrequires_printtstrong_requires_printtconflicts_printtobsoletes_printt	changelogtEVRRtbase_package_nameROR(((s0/usr/lib/python2.7/site-packages/yum/packages.pyRsR						!								RcBsVeZdZdZdZdZdZdZdZdZ	dZ
RS(	s
    A comparable epoch, version, and release representation. Note that you
    almost certainly want to use pkg.verEQ() or pkg.verGT() etc. instead.
    cCs1||_||_||_||_||_dS(N(RRR
RR(RMR'R(R)((s0/usr/lib/python2.7/site-packages/yum/packages.pyRNs
				cCs7tjj|j|j|jf|j|j|jfS(N(RRRRRR(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pytcomparescCs|j|dkrtStS(Ni(RRR(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__lt__scCs|j|dkrtStS(Ni(RRR(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__gt__scCs|j|dkrtStS(Ni(RRR(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__le__scCs|j|dkrtStS(Ni(RRR(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__ge__scCs
t||S(N(R(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pyRscCs||kstStS(N(RR(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pyRs(RRRSRTRNRRRRRRR(((s0/usr/lib/python2.7/site-packages/yum/packages.pyRs							tYumAvailablePackagecBseZdZd(dZdZeddZdZdZ	dZ
dZd	Zd
Z
eddZeeZedZd
ZeeZdZeeZdZeeZdZdZdZdZdZdZdZedZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&e'd Z(d!Z)d"Z*d#Z+d$Z,d%Z-d&d'Z.RS()s}derived class for the  packageobject and RpmBase packageobject yum
       uses this for dealing with packages in a repositorycCstj|tj||j|_||_d|_t|_	d|_
|dkr~|j||j|_
|j|_n|j|j|j|j|jf|_dS(N(RoRNRR4R_R3R:tstateRt_loadedfilest_verify_local_pkg_cachetimportFromDictR
RRRR*RpRR(RMR3R#((s0/usr/lib/python2.7/site-packages/yum/packages.pyRN
s

				
cCs|jdkrd|jkrd}|jjdk	rpd|jkrp|jj|jjkrpd|jj}nd|jj|S|jS(s This reports the repo the package is from, we integrate YUMDB info.
            for RPM packages so a package from "fedora" that is installed has a
            ui_from_repo of "@fedora". Note that, esp. with the --releasever
            option, "fedora" or "rawhide" isn't authoritative.
            So we also check against the current releasever and if it is
            different we also print the YUMDB releasever. This means that
            installing from F12 fedora, while running F12, would report as
            "@fedora/13". Rt	from_repoRXt
releaseverRVt@N(R_t
yumdb_infotrpmdbRR:R(RMtend((s0/usr/lib/python2.7/site-packages/yum/packages.pyRs	RkcCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl.scCs|jjj|dS(sremove self from package sackN(R3RdRQ(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pytexclude0scCsH|jdkr.d|j|j|jf}nd|j|jf}|S(sAreturns a printable version string - including epoch, if it's setRrs%s:%s-%ss%s-%s(RR
R(RMR((s0/usr/lib/python2.7/site-packages/yum/packages.pyR4scCs#|j}d|j|j|fS(Ns%s.%s %s(RR*Rp(RMR((s0/usr/lib/python2.7/site-packages/yum/packages.pytcompactPrint=scCs|jS(N(tpackagesize(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_sizeAscCs|jS(N(trelativepath(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_remote_pathDscCs\|j}|r?|ddkr,|d}ntj||jStj|jjd|jS(sreturns a URL that can be used for downloading the package.
        Note that if you're going to download the package in your tool,
        you should use self.repo.getPackage.iRVi(tbasepathturlparseturljointremote_pathR3turls(RMtbase((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_remote_urlGs	
cCs
|jS(N(R&(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlSscCs
|jS(N(R/(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlUscCst|dr|jSt|js8|j|_|jS|jdd}tj|dd}|jdd}|jd}|dkr|d|d!}n||_|jS(	sDReturns the name of the last person to do a commit to the changelog.t_committer_retiiterrorstreplacetasciis> i(	RR0RRtpackagerR=t
to_unicodetencodetfind(RMtvaltix((s0/usr/lib/python2.7/site-packages/yum/packages.pyt
_committerWs	cCsSt|dr|jSt|js8|j|_|jS|jdd|_|jS(s5Returns the time of the last commit to the changelog.t_committime_reti(RR;RRt	buildtime(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_committimenscCs|jddS(sReturns the 'default' checksumii(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt	_checksum~scCsd|jdkrdStj|j\}}}}}|dkr`t|dkrVdSt|SdS(NRi(R)R:R*turlsplitRtint(RMtschemetnetlocRZtquerytfragid((s0/usr/lib/python2.7/site-packages/yum/packages.pyt
getDiscNums!
cCs_|j}tjj}ytjj||}Wn$tjk
rZtjd|nX|S(Ns"Package Header %s: RPM Cannot open(	tlocalPkgRttransactiontinitReadOnlyTransactionRthdrFromPackageRRt	RepoError(RMtrpmfilettsthdr((s0/usr/lib/python2.7/site-packages/yum/packages.pytreturnHeaderFromPackagescCstjj|jrky#tj|j}|d}Wq{tjtfk
rgtj	d|q{Xntj	d||S(sTreturns an rpm header object from the package object's local
           header cacheisPackage Header %s: Cannot opens Package Header %s: Not Available(
RYRZtexiststlocalHdrtrpmtreadHeaderListFromFileterrort
IndexErrorRRJ(RMthlistRM((s0/usr/lib/python2.7/site-packages/yum/packages.pytreturnLocalHeaderscCsEt|ds>tjj|j}|jjd||_n|jS(sBreturn path to local package (whether it is present there, or not)t	localpathRV(RRYRZR[R,R3tpkgdirRW(RMtrpmfn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRFscCsSt|dsLtjj|j}|d d}|jjd||_n|jS(sWreturn path to local cached Header file downloaded from package 
           byte rangesthdrpathis.hdrRV(RRYRZR[R,R3thdrdirRZ(RMtpkgnamethdrname((s0/usr/lib/python2.7/site-packages/yum/packages.pyRPs
c	Csytj|j}Wntk
r/}tSXt|dr|jr|j}|j|jkr|j|jkr|j	|j	kr|j
|j
krtSn|j\}}y%t
j||jd|j}Wntjk
rtSX||krtS||_tS(s^check the package checksum vs the localPkg
           return True if pkg is good, False if notRtdatasize(RYtstatRFtOSErrorRRRtst_inotst_devtst_mtimetst_sizeRRR=tchecksumR%Rt	MiscError(RMtnstR'tostt	csum_typeRtfilesum((s0/usr/lib/python2.7/site-packages/yum/packages.pyRs,			cCswtdkrdSt|dr,t|dS|js<dSytj|jd}WndSXt|d||S(s Get the user.xdg.origin.url value from the local pkg. ... if it's
            present. We cache this so we can access it after the file has been
            deleted (keepcache=False). t__cached_localXattrUrlsuser.xdg.origin.urlN(txattrR:RRRRRFR(RMR((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_localXattrUrls
cCs
|jS(N(Rm(tx((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs&tjdtjddtj|S(s1convert the prco tuples into a nicer human strings9prcoPrintable() will go away in a future version of Yum.
Ri(RRRRR=R(RMt	prcoTuple((s0/usr/lib/python2.7/site-packages/yum/packages.pyt
prcoPrintables	cCs|jS(s.return a list of requires in normal rpm format(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pytrequiresListscCs|j|jdfgS(Ni(t
checksum_typetpkgId(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRscCst|drW|j\}}}}}||_||_||_||_||_nt|dr|jd|_|jd|_	nt|dr|j
d|_|j
d|_|j
d|_
nt|d	r|jjd
}|dkrd-}n||_|jd|_nt|d
rO|jd|_|jd|_nt|drx=ddddddddgD]}t|||j|q}W|jjdd|_|jj|jdnt|dr6xT|jD]F}	|j|	}
|
|jkrg|j|
<n|j|
j|	qWnt|drx|jD]}x|j|D]r}|d}
|jd}|jd}|jd }|jd!}|j|j|
||||ffqcWqOWnt|d"rLxZ|jD]L}|jd#}|jd$}|jd%}|jj|||fqWnt|d&r|j d'}|j d$}|j d(}|d-ks|j!d)krd*}n!|j!d+krd,}nd*}|j"j|||fnd-S(.s^handles an mdCache package dictionary item to populate out 
           the package informationR0ttimetbuildRRtpackagetarchiveRtlocationR.RXthrefthdrangetstartR"tinfotsummarytdescriptionR4tgroupt	buildhostRturltvendors
tlicenseRRR*tflagsRRRRtdatetvaluetauthorRettypetpkgidtNOitYESiN(#RR0R*RR
RpRRtR<tfiletimeRR%tarchivesizet
installedsizeRxRR:R)R'RzthdrstartthdrendRR|R}R2RR RRRRRetupperRq(RMR#R%R'R(R)R&RR1RRtrtypetrdictR*RtcdictRttextRtctypeRR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRsx						

1 


		cCs\tjj|j}tjj|j}dtj|dttj|dtf}|S(Ns$<location xml:base="%s" href="%s"/>
tattrib(RYRZtdirnamet
remote_urlR[R=tto_xmlR(RMR.Rytmsg((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_return_remote_locationSs
+cCsd}}|jr(tj|j}n|jrFtj|j}n|jd\}}}d|j|j|j|j|j	||tj|j
tj|j|||j|j
|j|j|jf}||j7}|S(NRXis3
  <name>%s</name>
  <arch>%s</arch>
  <version epoch="%s" ver="%s" rel="%s"/>
  <checksum type="%s" pkgid="YES">%s</checksum>
  <summary>%s</summary>
  <description>%s</description>
  <packager>%s</packager>
  <url>%s</url>
  <time file="%s" build="%s"/>
  <size package="%s" installed="%s" archive="%s"/>
(R4R=RRRR*RpRRRR}R~RR<R%RRR(RMR4RRiRRR((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_dump_base_items[s
			cCsd}|jr,|dtj|j7}n
|d7}|jr\|dtj|j7}n
|d7}|jr|dtj|j7}n
|d7}|jr|dtj|j7}n
|d	7}|jr|d
tj|j7}n
|d7}|d|j|jf7}||j	d
7}||j
7}||j	d7}||j	d7}||jt7}|ddkr|d7}n|d7}|S(Ns  <format>
s"    <rpm:license>%s</rpm:license>
s    <rpm:license/>
s     <rpm:vendor>%s</rpm:vendor>
s    <rpm:vendor/>
s    <rpm:group>%s</rpm:group>
s    <rpm:group/>
s&    <rpm:buildhost>%s</rpm:buildhost>
s    <rpm:buildhost/>
s&    <rpm:sourcerpm>%s</rpm:sourcerpm>
s    <rpm:sourcerpm/>
s+    <rpm:header-range start="%s" end="%s"/>RRRis
s  </format>(
RR=RRRRRRRt	_dump_pcot_dump_requirest_dump_filesR(RMR((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_dump_format_itemsxs6	
	
	
	
	


c
Cs1d}t||}|r(d|}nxt|D]\}}\}}}dtj|dt}	|r|	dtj|dt7}	|r|	dtj|dt7}	n|r|	dtj|dt7}	n|r|	dtj|dt7}	qn|	d	7}	||	7}q5W|r-|d
|7}n|S(NRXs
    <rpm:%s>
s      <rpm:entry name="%s"Rs flags="%s"s epoch="%s"s	 ver="%s"s	 rel="%s"s/>
s
    </rpm:%s>(RtsortedR=RR(
RMtpcotypeRtmylistR*RR'R(R)t	pcostring((s0/usr/lib/python2.7/site-packages/yum/packages.pyRs&
%  #
cCsg}x:t|jd|D] }|jdtj|qWx:t|jd|D] }|jdtj|q\Wx:t|jd|D] }|jdtj|qWdj|S(NRs
  <file>%s</file>Rs
  <file type="dir">%s</file>Rs
  <file type="ghost">%s</file>RX(RRR R=RR^(RMtprimaryRR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRscCs
tdS(N(tNotImplementedError(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_requires_with_prescCs|j}d}|r!d}nt|dr|jrtd|}|rt|dtdtd}|j}t|dkr|dj	dr|j}ng}x@|D]8}|dj	d	r||krqn|j
|qW|}qnd}xt|D]\}	}
\}}}
}|	j	d
rGqn|	|jks|	j	dr|	|jks|	|j
ks|	|jkr|
sqq|jd|	|
|||
ffrqqnd
tj|	dt}|
r||dtj|
dt7}|r-|dtj|dt7}n|rS|dtj|dt7}n|
r||dtj|
dt7}q|n|dkr|d|7}n|d7}||7}|d7}qW|r|d7}n|dkrdS|S(sreturns deps in XML formatRXs
    <rpm:requires>
t_collapse_libc_requirescSs|djdS(Nis	libc.so.6(R(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlsRRislibc.so.6()s	libc.so.6srpmlib(RVRs      <rpm:entry name="%s"Rs flags="%s"s epoch="%s"s	 ver="%s"s	 rel="%s"Rrs	 pre="%s"s/>
is    </rpm:requires>(Rri(RRRtfilterRRRtpopRRR RRRRRR=RR(RMRRt
libc_requirestresttbesttnewlisttitusedR*RR'R(R)tpret
prcostring((s0/usr/lib/python2.7/site-packages/yum/packages.pyRs`	%
($	  #


c	Cs|js
dSg}|s%|j}n
|j| }d}d}xt|D]\}}}||krod}n
|d7}|}||7}|jdtj|dttjt|tj|fqKWdj|S(NRXiis2
  <changelog author="%s" date="%s">%s</changelog>R(RtreversedR R=RRRR^(	RMt
clog_limitRtclogstlast_tsthack_tsRLRtcontent((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_dump_changelogs$	
	

	$cCsLd}||j7}||j7}|d7}t|tksHt|S(Ns
<package type="rpm">s
</package>(RRRRtAssertionError(RMR((s0/usr/lib/python2.7/site-packages/yum/packages.pytxml_dump_primary_metadatas
cCsSd|j|j|j|j|j|j|jf}t|tksOt	|S(Ns`
<package pkgid="%s" name="%s" arch="%s">
  <version epoch="%s" ver="%s" rel="%s"/>%s
</package>(
ReR*RpRRRRRRR(RMR((s0/usr/lib/python2.7/site-packages/yum/packages.pytxml_dump_filelists_metadatas
ic	CsVd|j|j|j|j|j|j|j|f}t|tksRt	|S(Ns`
<package pkgid="%s" name="%s" arch="%s">
  <version epoch="%s" ver="%s" rel="%s"/>%s
</package>(
ReR*RpRRRRRRR(RMRR((s0/usr/lib/python2.7/site-packages/yum/packages.pytxml_dump_other_metadata#s
N(/RRRSRTR:RNRRmRR#RR$R&R(R/RR,RR:t	committerR=t
committimeR>ReRERNRVRFRPRRmtxattr_origin_urlRpRqRRRRRRRRRRRRRR(((s0/usr/lib/python2.7/site-packages/yum/packages.pyR	sT										
		
						#					S			(	
		7			
cCs||p|d|S(sX Rpm returns None, for certain sizes. And has a "longsize" for the real
        values. tlong((RMR((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_rpm_long_size_hack0stYumHeaderPackagecBseZdZdZdZdZedZdZedZ	dZ
edZd	Z
d
ZdZdZd
ZdZdZdedZdZdZdZdZdZRS(s'Package object built from an rpm headercCs{tj||||_tj|jd|_|jd}|sNd}ntj||_tj|j|_tj|jd|_	tj|jd|_
|j	|_|j
|_|j|j|j|j	|j
f|_
d
|_d
|_|jtj|_|js;d|jd|jdf|_nt|jd|_t|jd	|_i|_t|_d
S(sGhand in an rpm header, we'll assume it's installed and query from thereR*RptnoarchR
Rs%s.%sR<RRN(RRNRMR=t
share_dataR*RptdoepochRR
RRRRR:t_loaded_summaryt_loaded_descriptionRQtRPMTAG_SHA1HEADERRRR%Rt_YumHeaderPackage__mode_cacheRt _YumHeaderPackage__prcoPopulated(RMR3RMtthis_a((s0/usr/lib/python2.7/site-packages/yum/packages.pyRN9s,	
	'			$	cCs#dtjtjj|jS(Nsfile://(turllibtquoteRYRZtabspathRF(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyR/TscCsS|jdkrL|jdp"d}tj|jdd}||_n|jS(NR}RXs
(RR:t_get_hdrR=RR2(RMR}((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_loadSummaryWs
cCs
|jS(N(R(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl^scCsG|jdkr@|jdp"d}tj|}||_n|jS(NR~RX(RR:RR=R(RMR~((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_loadDescription`s
cCs
|jS(N(R(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlfscCs`|jdkr4d|j|j|j|jf}n(d|j|j|j|j|jf}|S(NRrs%s-%s-%s.%ss%s:%s-%s-%s.%s(RR*R
RRp(RMR8((s0/usr/lib/python2.7/site-packages/yum/packages.pyRihscCs2|js|jt|_ntj|||S(N(Rt
_populatePrcoRRR(RMRR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRqs	
cCs|jS(N(RM(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRwsc
Csitjdd6tjdd6tjdd6tjdd6}|j}x|D]}|ttd	|}ttj|}|sqYn|ttd
|}|dkrtjtjB}g|D]}t||@^q}ntt	j
j|}ttj|}|ttd|}tt	j
j|}	td|	}	||}
ttjt
|||	|j|
<|dkrYt
||j|
}g|D]}|d
s|d^q}||jd<qYqYWdS(s;Populate the package object with the needed PRCO interface.RtOBSOLETERtCONFLICTRtREQUIRERtPROVIDEs
RPMTAG_%sNAMEsRPMTAG_%sFLAGSsRPMTAG_%sVERSIONcSs4tj|dtj|dtj|dfS(Niii(R=R(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRls iiRN(R=RRRRQtmaptRPMSENSE_SCRIPT_PREtRPMSENSE_SCRIPT_POSTR;RRRRtzipR(
RMttag2prcoRMttagR*tlsttbitstflagtweakreqstversRtwreqt
strongreqs((s0/usr/lib/python2.7/site-packages/yum/packages.pyRzs4
&		
%'cCsRtjdtjddyt||SWn!tk
rMtjd|nXdS(Ns6tagByName() will go away in a furture version of Yum.
RisUnknown header tag %s(RRRRRtAttributeErrorRf(RMR((s0/usr/lib/python2.7/site-packages/yum/packages.pyt	tagByNames	
cCs|jdr4|jdr4td||fny|j|SWnGtk
ritd||fn$tk
rtd||fnXdS(Nt__s%s has no attribute %s(RR\RRMtKeyErrorRB(RMtthing((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__getattr__s

cCs2|jd}|dkr"d}nt|}|S(NRRr(RMR:R(RMttmpepochR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRs

	cCs|jS(N(RM(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRVsc	Cs<|jd}|jd}|jd}t|||}|js8x|D]\}}}|dksp|dkrd|jkrg|jd<n|jdj|qIn||jkrtj||j|<nd}|j|rd}n|dk	r|d@rd}n|jj	|gj|qIWt
|_ndS(	Nt	filenamest	fileflagst	filemodesRXRRi@R(RMRRR:RR RR_tS_ISDIRt
setdefaultR(	RMRRRt	filetupleRtmodeRtfkey((s0/usr/lib/python2.7/site-packages/yum/packages.pyt
_loadFiless(


	
		 RcCs|jtj|||S(s"return list of files based on type(RRR(RMRR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRs
cCsBt|jddkr>t|jd|jd|jdSgS(Nt
changelognameit
changelogtimet
changelogtext(RRMR(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRs


cCs
tdS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRscCst|jdS(NR(RRM(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyR&scCs2|dk	r.|tjtjBtjB@r.dSndS(sncheck the flags for a requirement, return 1 or 0 whether or not requires
           is a pre-requires or a notiiN(R:RQtRPMSENSE_PREREQRR(RMR((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_is_pre_reqs
cCs|jtj}|jtj}tt|}t|j|}|jtj}tt|}|dk	rt
||||}ntj|}|S(s%returns requires with pre-require bitN(
RMRQtRPMTAG_REQUIRENAMEtRPMTAG_REQUIREFLAGSRRRtRPMTAG_REQUIREVERSIONRR:RR=RA(RMR*RRRRR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRs(RRRSRTRNR/RRmR}RR~RiRRRRRRRRVRRRRR&RR(((s0/usr/lib/python2.7/site-packages/yum/packages.pyR7s,								$							
			
t_CountedReadFilecBs eZdZdZdZRS(s Has just a read() method, and keeps a count so we can find out how much
        has been read. Implemented so we can get the real size of the file from
        prelink. cCs||_d|_dS(Ni(tfpt	read_size(RMR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRNs	cCs+|jj|}|jt|7_|S(N(RtreadRR(RMRR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRs(RRRSRTRNR(((s0/usr/lib/python2.7/site-packages/yum/packages.pyR
s	t_PkgVerifyProbcBs#eZdZedZdZRS(s8 Holder for each "problem" we find with a pkg.verify(). cCs:||_||_d|_d|_||_||_dS(N(RtmessageR:tdatabase_valuet
disk_valuet
file_typestfake(RMRRtftypesR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRNs					cCs|dkrdSidd6dd6dd6dd6dd	6d
d6dd
6dd6dd6dd6dd6dd6dd6dd6}t||j||j}|sxudddgD]a}t||}t||}|dkr|dkstqnt||}|rPqqWn|S(NiRitsymlinkiReiRtuseriRiRitgenchecksumitmtimei	tmissingi
spermissions-missingiRit	missingoki
RRRR(R:RRRR(RMRet	type2sortRtattrRnty((s0/usr/lib/python2.7/site-packages/yum/packages.pyRf&s$(RRRSRTRRNRf(((s0/usr/lib/python2.7/site-packages/yum/packages.pyRsiiiiiiiiitYUMVerifyPackageFilecBsgeZdZd dZeddddddZedddd	dd
Zedddddd
ZeddddddZ	eddddddZ
eddddddZeddddddZdZ
eddddddZedZeddZRS(!cCss||_d|_d|_d|_d|_d|_d|_d|_d|_	t
|_t|_
d|_dS(N(tfilenameR:treadlinkRtdevR
RRtdigestRRtverify_ftypeRtrpmfile_typet
rpmfile_state(RMR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRNGs										cCsM|dkrd|}nd|}t|||t|||dk	dS(Ntverify_t_(R:R(RMRR8tvattr((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_setVerifiedAttrXs


RkcCs|jS(N(t	_readlink(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl_stfdelcCst|ddS(NR(RR:(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl`stfsetcCs|jd|S(NR(R(RnR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlascCs|jS(N(t_mtime(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlbscCst|ddS(NR(RR:(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlcscCs|jd|S(NR(R(RnR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRldscCs|jS(N(t_dev(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlescCst|ddS(NR(RR:(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlfscCs|jd|S(NR(R(RnR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlgscCs|jS(N(t_user(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlhscCst|ddS(NR
(RR:(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRliscCs|jd|S(NR
(R(RnR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRljscCs|jS(N(t_group(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlkscCst|ddS(NR(RR:(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRllscCs|jd|S(NR(R(RnR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlmscCs|jS(N(t_digest(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRloscCst|ddS(NR(RR:(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlpscCs|jd|S(NR(R(RnR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlqscCs|jS(N(R&(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlrscCst|ddS(NR(RR:(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlsscCs|jd|S(NR(R(RnR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRltscCs<|dk	|_|dk	|_d|}t|||dS(NR(R:tverify_modeRR(RMRR8((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_setVerifiedModevs
cCs|jS(N(t_mode(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl|scCst|ddS(NR(RR:(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl}scCs|jd|S(NR(R'(RnR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl~scCsvtj|rdStj|r&dStj|r9dStj|rLdStj|r_dStj|rrdSdS(s5 Given a "mode" return the name of the type of file. Rt	directoryR	tfifoscharacter devicesblock devices	<unknown>(R_tS_ISREGRtS_ISLNKtS_ISFIFOtS_ISCHRtS_ISBLK(R((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_ftypescCs|j|jS(N(R0R(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlsN(RRRSRNR:RRmRRRR
RRRR'RtstaticmethodR0R(((s0/usr/lib/python2.7/site-packages/yum/packages.pyRFs:										t_RPMVerifyPackageFilecBseZedZRS(cCstj||d|d}|r-d}n
|d}|t@rQ|d|_n|t@tBr|d}|dkr|d@}n||_|t@st|_n|t@st|_	qn|t
@r|d|_n|t@r|d	|_nt
|_}|tj@r|jd
n|tj@r8|jdn|tj@rU|jdn|tj@rr|jd
n|tj@r|jdn|tj@r|jdn|tj@r|jdn|d}	idtj6dtj6dtj6dtj6dtj6}
|	|
kr'|
|	|_n	d|_|t@rJ|d|_n|t @rd|d|_!n|t"@r||df|_#n|j$dkr|t%@r|j&|_'n|t%@rd|_'ndS(Niiii	iiiiit
configurationt
documentationRRs
public keytREADMEs
missing okitnormaltreplaceds
not installedswrong colort	netshareds	<unknown>i
iiR	RX((RRNt_RPMVERIFY_FILESIZERt_RPMVERIFY_RDEVt_RPMVERIFY_MODERRR&Rt_RPMVERIFY_MTIMERRRt
rpmfile_typesRQtRPMFILE_CONFIGtaddtRPMFILE_DOCt
RPMFILE_GHOSTtRPMFILE_LICENSEtRPMFILE_PUBKEYtRPMFILE_READMEtRPMFILE_MISSINGOKtRPMFILE_STATE_NORMALtRPMFILE_STATE_REPLACEDtRPMFILE_STATE_NOTINSTALLEDtRPMFILE_STATE_WRONGCOLORtRPMFILE_STATE_NETSHAREDRt_RPMVERIFY_USERR
t_RPMVERIFY_GROUPRt_RPMVERIFY_DIGESTRRt_RPMVERIFY_LINKTOtFLinkR(RMtfiRRitoverride_vflagsRtvflagsRR=Rtstatemap((s0/usr/lib/python2.7/site-packages/yum/packages.pyRNsl
	



	
















	



(RRRSRRN(((s0/usr/lib/python2.7/site-packages/yum/packages.pyR2stYUMVerifyPackagecBsMeZdZdZdZdZdZdZdZdZ	RS(s, A holder for YUMVerifyPackageFile objects. cCs||_i|_dS(N(tpot_files(RMRU((s0/usr/lib/python2.7/site-packages/yum/packages.pyRNs	cCs
||jkS(sp Note that this checks if a filename is part of the package, and
            not a full YUMVerifyPackageFile(). (RV(RMtfname((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__contains__sccs$x|jD]}|j|Vq
WdS(N(RV(RMR((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__iter__scCs||j|j<dS(N(RVR(RMtvpf((s0/usr/lib/python2.7/site-packages/yum/packages.pyR?scCs|j|j=dS(N(RVR(RMRZ((s0/usr/lib/python2.7/site-packages/yum/packages.pytremovescCs$|j|krdS|j|dS(N(RR[(RMRZ((s0/usr/lib/python2.7/site-packages/yum/packages.pytdiscardscCs
i|_dS(N(RV(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pytclears(
RRRSRTRNRXRYR?R[R\R](((s0/usr/lib/python2.7/site-packages/yum/packages.pyRTs						t_RPMVerifyPackagecBsGeZdZdZdZdZdZdZdZRS(cCs)tj||||||f|_dS(N(RTRNt	_presetup(RMRURPt
def_csum_typetpatternstall((s0/usr/lib/python2.7/site-packages/yum/packages.pyRNscCst|dsdS|j\}}}}|`i}x|D]}|d}|rt}xo|D]g}	|	tkr}t|	}
n(|	|kr||	}
ntj|	}
|
||	<|
|r^t}Pq^q^W|sq;qn|jt||||q;W|r|andS(NR_i(	RR_Rt
_last_fnmatchR=R@RR?R2(RMRPR`RaRbt
_this_fnmatchtftRREtpR((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_setups0





	 cOs|jtj|||S(N(RgRTRX(RMtargstkwargs((s0/usr/lib/python2.7/site-packages/yum/packages.pyRXs
cOs|jtj|||S(N(RgRTRY(RMRhRi((s0/usr/lib/python2.7/site-packages/yum/packages.pyRYs
cOs|jtj|||S(N(RgRTR?(RMRhRi((s0/usr/lib/python2.7/site-packages/yum/packages.pyR?"s
cOs|jtj|||S(N(RgRTR[(RMRhRi((s0/usr/lib/python2.7/site-packages/yum/packages.pyR[%s
cOs+t|dr|`ntj|||S(NR_(RR_RTR](RMRhRi((s0/usr/lib/python2.7/site-packages/yum/packages.pyR])s	(	RRRSRNRgRXRYR?R[R](((s0/usr/lib/python2.7/site-packages/yum/packages.pyR^s		 				RtYumInstalledPackagec	Bs;eZdZddZgeeeeededZRS(s2super class for dealing with packages in the rpmdbcCs2tj|t||r.|j||_ndS(N(RRNt_installed_repotget_packageR (RMRMtyumdb((s0/usr/lib/python2.7/site-packages/yum/packages.pyRN4sc	,%Csr	|jj}	i}
d}tjj|}d}
ttdrw|jtj}|rw|tkrtt|}
qtqwnt	||	|
||}|d6k	r||}nx|D]}|j}t|j
}|jdkr |jd|j|rtdd|dtg|
|<qqnd	|j
krW|rWtd
d|dtg|
|<nd	|j
krs|rsqnd|j
kr|rtdd
|dtg|
|<nd|j
kr|rqng}tjj|jrtj|j}|j}ytj|tjd}Wn$tk
r@}d|tj}nXytj|tjd}Wn$tk
r}d|tj}nXtj|j}t }|j!r|j"j#ds|j#drt}n|r|j"|krtdd|}|j"|_$||_%|j|q|j&d@|j'd@krtdd|}t(|j&d@|_$t(|j'd@|_%|j|qn|j)rd}|dkrtj*|j}n||j*krtdd|}|j*|_$||_%|j|qnt}d|krt }n|dkrO|j"dkrOtj|jj}n|dkrdt }nt}|dkrt }n|r|j+rt,|j-t,|j.krtdd|}|j.|_$t,|j-|_%|j|n|rA|j/rA||j0krAtdd|}|j0|_$||_%|j|n|r|j1r||j2krtdd|}|j2|_$||_%|j|n|j}|j3} d }!d|kr||!M}| |!M} n|r#|j4r#|| kr#td!d"|}| |_$|j|_%|j|n|j5}"|rQ|rQ||j6krQt }"n|rf|rft }"n|j7sxt }"n|rq|"s|j8rq|rq||j6krq|j7r|j7d}#|j7dd#|j7d$}$n|
}#d}$y't9j:|#|j}%|#d#|%}%Wnt;j<k
r&d6}%nX|j5rp|%d6krptd%d&|}|$|_$d6|_%|j|n|%|$kr|rt=|d'|jgd(d)d*t>d+t>d,t>d-t}&|&j?|&j@|&jA}'}(})tB|(}(t9j:|#|(}*|(jCr|*}%|#d#|%}%|(jC}qn|j5rq|%|$krq|%rqtd.d/|}|$|_$|%|_%|j|qqn|rT	|j8rT	||j6krT	td0d1|}|j6|_$||_%|j|qT	nytj|jt}+Wn4tDk
r	}t}+|jEtEjFkr	t }+q	nX|+r5	td2d3|}ntd4d5|}|j||r||
|j<qqW|
S(7sverify that the installed files match the packaged checksum
           optionally verify they match only if they are in the 'pattern' list
           returns a tuple s/usr/sbin/prelinktmd5tRPMTAG_FILEDIGESTALGOR6sstate=Rsstate is not normalRs
missing okRsmissing but okRs
ghost fileisuid %s not foundsgid %s not foundtdeviceRsfile type does not matchisdev does not matchRXR	ssymlink does not matchRRsmtime does not matchR
suser does not matchRsgroup does not matchiRsmode does not matcht:iRschecksum not availables-ytbufsizeitstdintstdouttstderrt	close_fdsReschecksum does not matchRssize does not matchR
sfile is missingspermissions-missings#file is missing (Permission denied)N(GRMtfiFromHeaderRYRZRORRQRotRPM_CHECKSUM_TYPESR^R:RtlistR=RR RRtlexiststlstatRdtpwdtgetpwuidR_tST_UIDRtgrptgetgrgidtST_GIDRR0tst_modeRt
verify_devRR\RRRRbRtverify_readlinkRtverify_mtimeR@RcRtverify_userR
tverify_groupRRR&t
verify_digestRRtverify_sizeR=ReRRfRRRsRtRuRRR`terrnotEACCES(,RMRatdepstscriptt
fake_problemsRbtfasttcallbacktfailfastRPRtprelink_cmdthave_prelinkRitcsum_numtpfstpfRRtproblemstmy_stt
my_st_sizetmy_userR'tmy_grouptmy_ftypeRtprobtmy_fnlt
check_contenttcheck_permstmy_modetpf_modet	perm_maskRtdigest_typeRtmy_csumRftigRterttcsumtperms_ok((s0/usr/lib/python2.7/site-packages/yum/packages.pytverify9s^
																				

							

						

	
N(RRRSRTR:RNRRR(((s0/usr/lib/python2.7/site-packages/yum/packages.pyRj2s
	tYumLocalPackagecBseZdZd
d
dZdZdZd
dZeddZ	dZ
dZd	Zedd
Z
eddZdZRS(sClass to handle an arbitrary package from a file path
       this inherits most things from YumInstalledPackage because
       installed packages and an arbitrary package on disk act very
       much alike. init takes a ts instance and a filename/path 
       to the package.cCs|dkrtjj}n|dkr9tjdnd|_||_d|_ytj	j
||j}Wn,tk
r}tjd|j|fnXt|}d|_
tj||||j|_tj|j|_t|jd|_t|jd|_|j|_|j|j|j|j|jf|_d|_d|_ t!j"d|_#d|_$d|_%dS(Ns;No Filename specified for YumLocalPackage instance creationtlocals%Could not open local rpm file: %s: %siiiRX(&R:RRGRHRRftpkgtypeRWR>RRIRRUtcostRRNRR4RYR_t_statRRR%tisSrpmRpR*RRRRt	_hdrstartt_hdrendR=t_default_checksumsRrt_reldirt_baseurl(RMRLRRMR'tfakerepo((s0/usr/lib/python2.7/site-packages/yum/packages.pyRN$s6					'			cCs:|jddks%|jdr)dS|jdSdS(Nt
sourcepackageiRtsrcRp(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRLs%cCs|jS(N(RW(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRFRscCs_|dkrtjd}n|jsXtj||j|_||jdfg|_n|jS(Nii(R:R=RR>ReRWRq(RMRr((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_do_checksumUs	RkcCs
|jS(N(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl^scCs|j|jS(N(RRq(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyR`s
cCstS(s5 don't bother "checking" the package matches itself. (R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRdscCs{|jr"|jr"|j|jfSt|jd}|jd|jd}tjd|\}|jd}tjd|\}|d}||}|d}|dkrd|}nd||}	|j|	|jdd	|jd}tjd|\}
|jd}tjd|\}|
d}||d}
|	|
}|j|	|_||_|	|fS(
sQtakes an rpm file or fileobject and returns byteranges for location of the headerR)ihis>Iiiiipi(	RRtopenRWtseekRtstructtunpacktclose(RMtfotbinindextsigindextbindatatsigdatatsigindexsizetsigsizetdisttoboundaryRthdrindexthdrdatathdrindexsizethdrsizeR((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_get_header_byte_rangehs6








		cCs|jdS(Ni(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs|jdS(Ni(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs|jrV|jj|jrV|jj|jd}|ddkr_|d}q_n	|j}|jrdtj|jdttj|dtf}ndtj|dt}|S(NRXiRVis&  <location xml:base="%s" href="%s"/>
Rs  <location href="%s"/>
(RRWRR2RR=RR(RMtrelpathR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRs		N(RRRSRTR:RNRRFRRmReRRRRRR(((s0/usr/lib/python2.7/site-packages/yum/packages.pyRs(						0t
YumUrlPackagecBs#eZdZdddddZRS(sClass to handle an arbitrary package from a URL
       this inherits most things from YumLocalPackage, but will download a
       remote package to make it local.
       init takes a YumBase, a ts instance and a url to the package.c
Cs|jjdr(|td}n|tj|s@|}ndd}i}xl|jjD][}|j}|j	|j
j	kr\|j|j
jkr\|j|j
jkr\|j
}Pq\q\Wtjj|}	tj}
|
dkrd|j}
nd|
|	f}
yptd|j
jd|j
jd|j
jd|d|}|dk	r\||j_n|j||
d	|	}Wn,tk
r}tjd
||fnXtj|||dS(Nsfile:s%s/../s%s/%st	bandwidthtretrytthrottletprogress_objtproxiesRsCannot download %s: %s(RRRR=t
re_remote_urlR:trepostlistEnabledRtproxytconftproxy_usernametproxy_passwordt
proxy_dictRYRZR[tgetCacheDirtcachedirR	RtretriesRtoptst
user_agentturlgrabR
RRfRRN(
RMtybRLRtuaRtcbtpdR3RWRtugR'((s0/usr/lib/python2.7/site-packages/yum/packages.pyRNs<				N(RRRSRTR:RN(((s0/usr/lib/python2.7/site-packages/yum/packages.pyRs(LRTRQRYtos.pathR=RtretfnmatchR_Rt
subprocessRRRRtrpmUtils.miscutilsRRRRRRt	constantstoperatorRRR*t
uses_fragmentR turlgrabber.grabberR	R
RlRR:tImportErrorR|RRRRR2RKRLRUtobjectRoRRRRRRRRRRRMR9RNRKRLR<R;R:t_RPMVERIFY_CAPSt_RPMVERIFY_CONTEXTSRR2RTRcR^RkRjRR(((s0/usr/lib/python2.7/site-packages/yum/packages.pyt<module>s



		"88		1)	 









HJ8	

OHA YOOOO