Spade
Mini Shell
�
8M�bc@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl
mZmZddl
mZddlZ
ddlmZmZmZddlZddlZddlZddlTddlmZddlZddlZejjd�dd lmZmZy)ddl
Z e!e d
�rde"Z nWne#k
r~e"Z
nXddl$Z$ddl%Z%d�Z&d�Z'e(d
�Z)dde"d�Z*dfd��YZ+dfd��YZ,de-fd��YZ.e,d�Z/de/_0de.fd��YZ1de-fd��YZ2dfd��YZ3de.e2fd��YZ4d
�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-fd1��YZCd2eCfd3��YZDd4fd5��YZEiaFd6eEfd7��YZGe,d8�ZHdeH_0d9e6fd:��YZId;e6fd<��YZJd=eJfd>��YZKdS(?sA
Classes and functions dealing with rpm package representations.
i����N(tPopentPIPE(t
RpmUtilsError(tflagToStringtstringToVersiontcompareVerOnly(t*(t
itemgettertmedia(t
URLGrabbertURLGrabErrortgetcCs_|j|j|j}}}|j|j|j}}}tjj|||f|||f�S(s4
Compare two Package or PackageEVR objects.
(tepochtversiontreleasetrpmUtilst miscutilst
compareEVR(tpo1tpo2te1tv1tr1te2tv2tr2((s0/usr/lib/python2.7/site-packages/yum/packages.pytcomparePoEVR9scCsn|j|j|j}}}|j|j|j}}}||krJtS||krZtS||krjtStS(sA
Compare two Package or PackageEVR objects for equality.
(RR
RtFalsetTrue(RRRRRRRR((s0/usr/lib/python2.7/site-packages/yum/packages.pytcomparePoEVREQ@scCsIi}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(s�take 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}q�q�W|s|j |�qq=|j |�q=Wtj
|�}|dkrStj
|�}tj
|�}n=|dkr�d�}
|
|�}|
|�}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|j�S(Ns%s%s(trepotidtpkgKeytvalues(R!tuR$tmark((s0/usr/lib/python2.7/site-packages/yum/packages.pyt pkgunique�s
sBad value for unique:
%sN(tNoneR2tboolRtextendtmisctre_globtkeystcompile_patternR
tuniquet
ValueError(R!tusercommandsR"RAR#t
exactmatchtmatchedt unmatchedtcommandttrylisttregextfounditR1R9((s0/usr/lib/python2.7/site-packages/yum/packages.pyt
parsePackagesmsB
tFakeSackcBs)eZdZd�Zd�Zd�ZRS(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_fastReturnFileEntries�scCsdS(sNdelete
a pkgobject, do nothing, but make localpackages work with
--skip-brokenN((RMtobj((s0/usr/lib/python2.7/site-packages/yum/packages.pyt
delPackage�s(t__name__t
__module__t__doc__RNRORQ(((s0/usr/lib/python2.7/site-packages/yum/packages.pyRL�s tFakeRepositorycBsVeZdZd�Zd�Zd�Zd�Zd�Zd�Ze dd��Z
RS( s8Fake repository class for use in rpmsack package
objectscCs�t}d|kr-tjj|�}t}n|jd�rO|d
}t}ng}|rk|jd�nx6|D].}t|�dkr�d}n|j|�qrWdj|�|_ dS(s?
Set the repoid, but because it can be random ... clean it up.
t/s.rpmi����i�t?tN(
RtostpathtbasenameRtendswithR
tordtjoinR4(RMtrepoidt pathbasedtbytestbyte((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_set_cleanup_repoid�s
cCs)|j|�|j|_t�|_dS(N(RcR4R*RLtsack(RMR_((s0/usr/lib/python2.7/site-packages/yum/packages.pyRN�s
cCs4|j|jkrdS|j|jkr,dSdSdS(Nii����i(R4(RMtother((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__cmp__�s
cCs
t|j�S(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_id�stfgetcCs
|j�S(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.pyRU�s t
PackageObjectcBsreZdZd�Zd�Zedd��Zd�Zedd��Zd�Z edd��Z
d �Zedd
��Zd�Z
edd��Zd
�Zedd��Zd�Zedd��Zd�Zedd��Zd�Zedd��Zd�Zedd��Zd�Zedd��Zd�Zedd��Zd�Zedd��Zd�Zedd��Z
d�Z!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/�Z1d0�Z2d1�Z3d2�Z4edd3��Z5d4�Z6RS(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
RRtarcht
_checksums(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRN�s cCs!|jdkr|jS|jSdS(Nt0(RtnvraR/(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt _ui_envra�sRkcCs
|j�S(N(Rt(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs!|jdkr|jS|jSdS(NRr(RRsR0(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt _ui_nevrascCs
|j�S(N(Ru(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs!|jdkr|jS|jSdS(NRr(Rtvrtevr(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_ui_evrscCs
|j�S(N(Rx(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl
scCs!|jdkr|jS|jSdS(NRr(Rtvratevra(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_ui_evrascCs
|j�S(N(R{(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlscCs!|jdkr|jS|jSdS(NRr(Rtnvrtnevr(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_ui_nevrscCs
|j�S(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
|j�S(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
|j�S(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
|j�S(N(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl'scCsd|j|j|jfS(Ns%s:%s-%s(RR
R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_evr)scCs
|j�S(N(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl+scCs
d|j|j|j|jfS(Ns%s:%s-%s.%s(RR
RRp(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_evra-scCs
|j�S(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
|j�S(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
|j�S(N(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl7scCs
d|j|j|j|jfS(Ns%s-%s:%s-%s(R*RR
R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_nevr9scCs
|j�S(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*RR
RRp(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_nevra=s cCs
|j�S(N(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlAscCs
d|j|j|j|jfS(Ns%s:%s-%s-%s(RR*R
R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_envrCscCs
|j�S(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(RR*R
RRp(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_envraGscCs
|j�S(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(RR
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.pytverCMPYscCs�|j|�}|dkr3t|j|j�}n|dkr�t|d�r�t|d�r�t|j|j�}|r�|jdkr�dS|r�|jdkr�dSn|S(s4
Compare packages, this is just for UI/consistency.
iR_t installedii����(R�R�RpthasattrR_(RMReR�((s0/usr/lib/python2.7/site-packages/yum/packages.pyRfbs*cCs[|s
tS|j|jkr tSt|d�rWt|d�rW|j|jkrWtSntS(se Compare
packages for yes/no equality, includes everything in the
UI package comparison.
R_(RRR�R_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__zscCs
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:R�R*RR(RMReR�((s0/usr/lib/python2.7/site-packages/yum/packages.pytverEQ�scCs|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.pytverNE�scCs|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.pytverLT�scCs|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.pytverLE�scCs|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.pytverGT�scCs|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.pytverGE�scCs)d|jjt|�tt|��fS(Ns<%s
: %s
(%s)>(t __class__RRtstrthexR4(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__repr__�scCs&tjdtjdd�t||�S(Ns8returnSimple()
will go away in a future version of Yum.
t
stackleveli(twarningstwarntErrorstYumFutureDeprecationWarningR�(RMtvarname((s0/usr/lib/python2.7/site-packages/yum/packages.pytreturnSimple�s cCs|jS(N(Rq(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pytreturnChecksums�scCs
|j�S(N(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs1x*|jD]\}}}|r
||fSq
WdS(N(t checksums(RMtcsumtypetcsumtcsumid((s0/usr/lib/python2.7/site-packages/yum/packages.pytreturnIdSum�s(7RRRSRTRNRtRmR�Rutui_nevraRxtui_evrR{tui_evraR~tui_nevrRtnaR�RvR�RyR�RwR�RzR�R|R�RsR�R}R�R0R�tenvrR�R/RiR�R�RfR�R�R�R�R�R�R�R�R�R�R�R�R�R�(((s0/usr/lib/python2.7/site-packages/yum/packages.pyRo�sh
t-tYumNotFoundPackagecBs5eZd�Zd�Zedd��Zd�ZRS(cCsu|d|_|d|_|d|_|d|_|d|_||_d|_g|_t|_ tj
|_dS(Niiiii(R*RpRR
RRtsizeRqt_not_found_repoR3R4R_(RMR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRN�s
cCs|jS(s
This just returns '-'
(R_(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt
_ui_from_repo�sRkcCs
|j�S(N(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCstS(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.pytverifyLocalPkg�s(RRRSRNR�Rmtui_from_repoR�(((s0/usr/lib/python2.7/site-packages/yum/packages.pyR��s tRpmBasecBsEeZdZd�Zd�Zd�Zd�Zd�Zed�Z d�Z
d�Zd �Zd
�Z
d�Zded
�Zed�Zd�Zd�Zdd�Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��Z
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
datacCs�i|_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.pyRN�s
cCs:|s
tS|j|jkr
tS|j|jkr6tStS(N(RRR_R(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pyR��scCs||kstStS(N(RR(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pyR��scCst|j|j|j�S(N(t
PackageEVRRR
R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt returnEVR�scCsY|jdkrRd|jj|j|j|j|j|jf}t |�|_n|jS(Ns%s
- %s:%s-%s-%s.%s(
R�R:R3R4RR*R
RRpRg(RMtmystr((s0/usr/lib/python2.7/site-packages/yum/packages.pyRh�s
cCs`|jj|g�}|r\g}x4|D],}|ds>q(n|jtj|��q(W|S|S(s9return
list of provides, requires, conflicts or obsoletesi(R�RR
R=tprco_tuple_to_string(RMtprcotypet printabletprcostresultsR�((s0/usr/lib/python2.7/site-packages/yum/packages.pyt
returnPrco�s
c
Cs>||jkrdSt|j|�dkrF||j|kr�dSn~t|d�s}id d6d d6d d6d d6|_n|j|d kr�t|j|�|j|<n||j|kr�dS|\}}\}}}|d k r�|j||�Sx?|j|�D].\}} \}
}}tj ||�rdSqWdS(
sBreturns 1 or 0 if the pkg contains the requested tuple/tuple
rangeiiit_prco_lookupR�R�R�R�N(
R�tlenR�R:R�tsettinPrcoRangeR�ti18ntstr_eq(
RMR�t prcotupletreqntreqftreqetreqvtreqrR%tfR'R(R)((s0/usr/lib/python2.7/site-packages/yum/packages.pyt checkPrco s&(cCst|j||��S(s�returns
true if the package has a the prco that satisfies
the reqtuple range, assume false.
Takes: prcotype, requested prco
tuple(R;t
matchingPrcos(RMR�treqtuple((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}
q�ntjj || |
|||
ff�}|r.|j
| |
|||
ff�q.q.W|S(Nt=tEQR�(R�R�R�R:RR�trelRRtrangeCompareR
(RMR�R�R�R�R�R�R�tresultR%R�R'R(R)RE((s0/usr/lib/python2.7/site-packages/yum/packages.pyR�0s&( &cCs�|jd|�rtS|djd�rtj|d�rEt}nt}x1dD]&}|d|j||�krRtSqRWntS(s�check
to see if the package object provides for the requirement
passed, including searching filelists if the requirement is a
file
depR�iRVR�R�R�(sfilesdirsghost(R�Rt
startswithR=tre_primary_filenameRtreturnFileEntries(RMR�tpri_onlytftype((s0/usr/lib/python2.7/site-packages/yum/packages.pytprovides_forMs
cCs|jS(sreturn
changelog
entries(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pytreturnChangelogasR�cCs{|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�(R�R=tre_primary_dirnameR�(RMR�tprimary_onlytmatchtfn((s0/usr/lib/python2.7/site-packages/yum/packages.pyR�es *cCs�|r�g}xp|jj�D]_}|dkr:tj}n tj}x(|j|D]}||�rQPqQqQWq|j|�qW|S|jj�S(s�return
list of types of files in the package, you can pass
primary_only=True to limit to those files in the primary
repodataR�(R�R?R=R�R�R
(RMR�R�R�R�R�((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_(R�R�tsetattrR�(RMR�R%R�R(tdata((s0/usr/lib/python2.7/site-packages/yum/packages.pytreturnPrcoNames�s+cCs
tjdtjdd�|jS(Ns<getProvidesNames() will go away in a future
version of Yum.
R�i(R�R�R�tYumDeprecationWarningtprovides_names(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pytgetProvidesNames�s R�cCs@tjdtjdd�|jr<||jkr<|j|SgS(Ns_simpleFiles()
will go away in a future version of Yum.Use
returnFileEntries(primary_only=True)
R�i(R�R�R�R�R�(RMR�((s0/usr/lib/python2.7/site-packages/yum/packages.pytsimpleFiles�s
RkcCs|jdd�S(NR�R�(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs|jdd�S(NR�R�(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs|jdd�S(NR�R�(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs
|jd�S(NR�(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs
|jd�S(Ntstrong_requires(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs
|jd�S(NR�(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs
|jd�S(NR�(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs
|jd�S(NR�(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs
|jd�S(NR�(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs
|jd�S(NR�(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs
|jd�S(NR�(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs
|jd�S(NR�(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs
|jd�S(NR�(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs|jdt�S(NR�(R�R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs|jdt�S(NR�(R�R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs|jdt�S(NR�(R�R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs|jdt�S(NR�(R�R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs|jdt�S(NR�(R�R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs
|j�S(N(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs
|j�S(N(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs�t|d�r|jSt|d�rq|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(R�R�R�RRt
splitFilenameR*(RMR%R(R)R'R&((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_getBaseName�s$ cCs
|j�S(N(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs|jjj�S(sb
Is calling pkg.returnFileEntries(primary_only=True) faster than
using searchFiles().
(R3RdRO(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRO�sicCs}|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. R�R�(R*RR
RR�R R�(RMt
obsoleterstlimittprovtupR�tobspo((s0/usr/lib/python2.7/site-packages/yum/packages.pytobsoletedBy�s$
(-RRRSRTRNR�R�R�RhRR�R�R�R�R�R�R�R�R�R�R�Rmtfilelisttdirlistt ghostlistR�R�R�R�R�R�trequires_nameststrong_requires_namestconflicts_namestobsoletes_namestprovides_printtrequires_printtstrong_requires_printtconflicts_printtobsoletes_printt changelogtEVRR�tbase_package_nameROR(((s0/usr/lib/python2.7/site-packages/yum/packages.pyR��sR ! R�cBsVeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z
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(RR�R
R�R(RMR'R(R)((s0/usr/lib/python2.7/site-packages/yum/packages.pyRN�s
cCs7tjj|j|j|jf|j|j|jf�S(N(RRRRR�R�(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pytcompare�scCs|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.pyR��scCs||kstStS(N(RR(RMRe((s0/usr/lib/python2.7/site-packages/yum/packages.pyR�s(RRRSRTRNRRRRRR�R�(((s0/usr/lib/python2.7/site-packages/yum/packages.pyR��s tYumAvailablePackagecBs�eZdZd(d�Zd�Zedd��Zd�Zd�Z d�Z
d�Zd �Zd
�Z
edd��Zee�Zed��Zd
�Zee�Zd�Zee�Zd�Zee�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zed��Zd�Zd�Z
d�Z!d�Z"d�Z#d�Z$d�Z%d�Z&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
repositorycCs�tj|�tj|�|j|_||_d|_t|_ d|_
|dkr~|j|�|j|_
|j|_n|j|j|j|j|jf|_dS(N(RoRNR�R4R_R3R:tstateRt_loadedfilest_verify_local_pkg_cachetimportFromDictR
R�RR�R*RpRR(RMR3R#((s0/usr/lib/python2.7/site-packages/yum/packages.pyRN
s
cCs�|jdkr�d|jkr�d}|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". R�t from_repoRXt
releaseverRVt@N(R_t
yumdb_infotrpmdbRR:R(RMtend((s0/usr/lib/python2.7/site-packages/yum/packages.pyR�s RkcCs
|j�S(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(RR
R(RMR�((s0/usr/lib/python2.7/site-packages/yum/packages.pyR�4scCs#|j�}d|j|j|fS(Ns%s.%s
%s(R�R*Rp(RMR�((s0/usr/lib/python2.7/site-packages/yum/packages.pytcompactPrint=scCs|jS(N(tpackagesize(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_sizeAscCs|jS(N(trelativepath(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_remote_pathDscCs\|j}|r?|ddkr,|d}ntj||j�Stj|jjd|j�S(s�returns
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.i����RVi(tbasepathturlparseturljointremote_pathR3turls(RMtbase((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_remote_urlGs
cCs
|j�S(N(R&(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlSscCs
|j�S(N(R/(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRlUscCs�t|d�r|jSt|j�s8|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����( R�R0R�RtpackagerR=t
to_unicodetencodetfind(RMtvaltix((s0/usr/lib/python2.7/site-packages/yum/packages.pyt
_committerWs cCsSt|d�r|jSt|j�s8|j|_|jS|jdd|_|jS(s5Returns
the time of the last commit to the
changelog.t_committime_reti(R�R;R�Rt buildtime(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_committimenscCs|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*turlsplitR�tint(RMtschemetnetlocRZtquerytfragid((s0/usr/lib/python2.7/site-packages/yum/packages.pyt
getDiscNum�s!
cCs_|j�}tjj�}ytjj||�}Wn$tjk
rZtjd|�nX|S(Ns"Package Header %s: RPM Cannot
open( tlocalPkgRttransactiontinitReadOnlyTransactionRthdrFromPackageRR�t RepoError(RMtrpmfilettsthdr((s0/usr/lib/python2.7/site-packages/yum/packages.pytreturnHeaderFromPackage�scCstjj|j��rky#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
IndexErrorR�RJ(RMthlistRM((s0/usr/lib/python2.7/site-packages/yum/packages.pytreturnLocalHeader�scCsEt|d�s>tjj|j�}|jjd||_n|jS(sBreturn
path to local package (whether it is present there, or
not)t localpathRV(R�RYRZR[R,R3tpkgdirRW(RMtrpmfn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRF�scCsSt|d�sLtjj|j�}|d
d}|jjd||_n|jS(sWreturn path to local cached Header file
downloaded from package
byte
rangesthdrpathi����s.hdrRV(R�RYRZR[R,R3thdrdirRZ(RMtpkgnamethdrname((s0/usr/lib/python2.7/site-packages/yum/packages.pyRP�s
c Csytj|j��}Wntk
r/}tSXt|d�r�|jr�|j}|j|jkr�|j|jkr�|j |j kr�|j
|j
kr�tSn|j�\}}y%t
j||j�d|j�}Wntjk
r�tSX||kr�tS||_tS(s^check the package checksum vs the
localPkg
return True if pkg is good, False if
notRtdatasize(RYtstatRFtOSErrorRR�Rtst_inotst_devtst_mtimetst_sizeRR�R=tchecksumR%R�t MiscError(RMtnstR'tostt csum_typeR�tfilesum((s0/usr/lib/python2.7/site-packages/yum/packages.pyR��s, cCswtdkrdSt|d�r,t|d�S|j�s<dSytj|j�d�}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:R�R�R�RRFR�(RMR�((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_localXattrUrl�s
cCs
|j�S(N(Rm(tx((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs&tjdtjdd�tj|�S(s1convert
the prco tuples into a nicer human strings9prcoPrintable() will go away in
a future version of Yum.
R�i(R�R�R�R�R=R�(RMt prcoTuple((s0/usr/lib/python2.7/site-packages/yum/packages.pyt
prcoPrintable�s cCs|jS(s.return
a list of requires in normal rpm
format(R(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pytrequiresList�scCs|j|jdfgS(Ni(t
checksum_typetpkgId(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyR��scCs�t|d�rW|j\}}}}}||_||_||_||_||_nt|d�r�|jd|_|jd|_ nt|d�r�|j
d|_|j
d|_|j
d|_
nt|d �r|jjd
�}|dkrd-}n||_|jd|_nt|d
�rO|jd|_|jd|_nt|d�r�x=ddddddddgD]}t|||j|�q}W|jjdd�|_|jj|jd�nt|d�r6xT|jD]F} |j| }
|
|jkrg|j|
<n|j|
j| �q�Wnt|d�r�x�|jD]�}x�|j|D]r}|d}
|jd�}|jd�}|jd
�}|jd!�}|j|j|
||||ff�qcWqOWnt|d"�rLxZ|jD]L}|jd#�}|jd$�}|jd%�}|jj|||f�q�Wnt|d&�r�|j
d'}|j d$}|j
d(}|d-ks�|j!�d)kr�d*}n!|j!�d+kr�d,}nd*}|j"j|||f�nd-S(.s^handles
an mdCache package dictionary item to populate out
the package
informationR0ttimetbuildR�R�tpackagetarchiveR�tlocationR.RXthrefthdrangetstartR"tinfotsummarytdescriptionR4tgroupt buildhostR�turltvendors
tlicenseR�R�R*tflagsRR�R�RtdatetvaluetauthorRettypetpkgidtNOitYESiN(#R�R0R*RR
RpRRtR<tfiletimeR�R%tarchivesizet
installedsizeRxRR:R)R'RzthdrstartthdrendR�R|R}R2R�R
R�R�RR�RetupperRq(RMR#R%R'R(R)R&R�R1R�R�trtypetrdictR*R�tcdictR�ttextR�tctypeR�R�((s0/usr/lib/python2.7/site-packages/yum/packages.pyRsx
1
cCs\tjj|j�}tjj|j�}dtj|dt�tj|dt�f}|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
+cCs�d}}|jr(tj|j�}n|jrFtj|j�}n|jd\}}}d|j|j|j|j|j ||tj|j
�tj|j�|||j|j
|j|j|jf}||j�7}|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=R�R�R�R*RpRR�R�R}R~R�R<R%R�R�R�(RMR4R�RiR�R�R�((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_dump_base_items[s
cCs�d}|jr,|dtj|j�7}n
|d7}|jr\|dtj|j�7}n
|d7}|jr�|dtj|j�7}n
|d7}|jr�|dtj|j�7}n
|d 7}|jr�|d
tj|j�7}n
|d7}|d|j|jf7}||j d
�7}||j
�7}||j d�7}||j d�7}||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"/>R�R�R�i����s
s
</format>(
R�R=R�R�RR�R�R�R�t _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|}nx�t|�D]�\}}\}}}dtj|dt�} |r�| dtj|dt�7} |r�| dtj|dt�7} n|r�| dtj|dt�7} n|r�| dtj|dt�7} q�n| d 7} || 7}q5W|r-|d
|7}n|S(NRXs
<rpm:%s>
s <rpm:entry name="%s"R�s flags="%s"s
epoch="%s"s ver="%s"s rel="%s"s/>
s
</rpm:%s>(R�tsortedR=R�R(
RMtpcotypeR�tmylistR*R�R'R(R)t pcostring((s0/usr/lib/python2.7/site-packages/yum/packages.pyR��s&
%
#
cCs�g}x:t|jd|��D]
}|jdtj|��qWx:t|jd|��D]
}|jdtj|��q\Wx:t|jd|��D]
}|jdtj|��q�Wdj|�S(NR�s
<file>%s</file>R�s
<file type="dir">%s</file>R�s
<file type="ghost">%s</file>RX(R�R�R
R=R�R^(RMtprimaryR�R�((s0/usr/lib/python2.7/site-packages/yum/packages.pyR��scCs
t��dS(N(tNotImplementedError(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_requires_with_pre�scCs�|j�}d}|r!d}nt|d�r|jrtd�|�}|rt|dtdtd��}|j�}t|�dkr�|dj d�r�|j�}ng}x@|D]8}|dj d �r�||kr�q�n|j
|�q�W|}qnd}x�t|�D]�\} }
\}}}
}| j d
�rGqn| |jks�| j d�r�| |jks�| |j
ks�| |jkr�|
s�qq�|jd| |
|||
ff�r�qq�nd
tj| dt�}|
r||dtj|
dt�7}|r-|dtj|dt�7}n|rS|dtj|dt�7}n|
r||dtj|
dt�7}q|n|dkr�|d|7}n|d7}||7}|d7}qW|r�|d7}n|dkr�dS|S(sreturns
deps in XML formatRXs
<rpm:requires>
t_collapse_libc_requirescSs|djd�S(Nis libc.so.6(R�(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�sR�R�islibc.so.6()s libc.so.6srpmlib(RVR�s
<rpm:entry name="%s"R�s flags="%s"s
epoch="%s"s ver="%s"s rel="%s"Rrs
pre="%s"s/>
is
</rpm:requires>(Rri(R�R�R�tfilterR�RRtpopR�R�R
R�RRRR�R=R�R(RMR�R�t
libc_requirestresttbesttnewlisttitusedR*R�R'R(R)tpret
prcostring((s0/usr/lib/python2.7/site-packages/yum/packages.pyR��s` %
($
#
c Cs�|js
dSg}|s%|j}n
|j|
}d}d}x�t|�D]\}}}||krod}n
|d7}|}||7}|jdtj|dt�tjt|��tj|�f�qKWdj|�S(NRXiis2
<changelog author="%s"
date="%s">%s</changelog>R�(RtreversedR
R=R�RR�R^( RMt
clog_limitR�tclogstlast_tsthack_tsRLR�tcontent((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_dump_changelog�s$
$cCsLd}||j�7}||j�7}|d7}t|�tksHt�|S(Ns
<package type="rpm">s
</package>(R�R�R�R�tAssertionError(RMR�((s0/usr/lib/python2.7/site-packages/yum/packages.pytxml_dump_primary_metadatas
cCsSd|j|j|j|j|j|j|j�f}t|�tksOt �|S(Ns`
<package pkgid="%s" name="%s"
arch="%s">
<version epoch="%s" ver="%s"
rel="%s"/>%s
</package>(
ReR*RpRR�R�R�R�R�R�(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*RpRR�R�R�R�R�R�(RMR�R�((s0/usr/lib/python2.7/site-packages/yum/packages.pytxml_dump_other_metadata#s
N(/RRRSRTR:RNR�RmR�R#R�R$R&R(R/R�R,R�R:t committerR=t
committimeR>ReRERNRVRFRPR�Rmtxattr_origin_urlRpRqR�RR�R�R�R�RR�R�R�R�R�R�R�(((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_hack0stYumHeaderPackagecBs�eZdZd�Zd�Zd�Zed��Zd�Zed��Z d�Z
ed�Zd �Z
d
�Zd�Zd�Zd
�Zd�Zd�Zded�Zd�Zd�Zd�Zd�Zd�ZRS(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<R�R�N(RRNRMR=t
share_dataR*RptdoepochRR
RR�R�RR:t_loaded_summaryt_loaded_descriptionRQtRPMTAG_SHA1HEADERR�R�R%R�t_YumHeaderPackage__mode_cacheRt
_YumHeaderPackage__prcoPopulated(RMR3RMtthis_a((s0/usr/lib/python2.7/site-packages/yum/packages.pyRN9s,
' $ cCs#dtjtjj|j���S(Nsfile://(turllibtquoteRYRZtabspathRF(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyR/TscCsS|jdkrL|j�dp"d}tj|jdd��}||_n|jS(NR}RXs
(R�R:t_get_hdrR=R�R2(RMR}((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_loadSummaryWs
cCs
|j�S(N(R�(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl^scCsG|jdkr@|j�dp"d}tj|�}||_n|jS(NR~RX(R�R:R�R=R�(RMR~((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_loadDescription`s
cCs
|j�S(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(RR*R
RRp(RMR8((s0/usr/lib/python2.7/site-packages/yum/packages.pyRihscCs2|js|j�t|_ntj|||�S(N(R�t
_populatePrcoRRR�(RMR�R�((s0/usr/lib/python2.7/site-packages/yum/packages.pyR�qs
cCs|jS(N(RM(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyR�wsc
Cs�itjd�d6tjd�d6tjd�d6tjd�d6}|j�}x�|D]�}|ttd |�}ttj|�}|s�qYn|ttd
|�}|dkr�tjtjB}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.R�tOBSOLETER�tCONFLICTR�tREQUIRER�tPROVIDEs
RPMTAG_%sNAMEsRPMTAG_%sFLAGSsRPMTAG_%sVERSIONcSs4tj|d�tj|d�tj|d�fS(Niii(R=R�(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�s
iiR�N(R=R�R�R�RQtmaptRPMSENSE_SCRIPT_PREtRPMSENSE_SCRIPT_POSTR;RRRRtzipR�(
RMttag2prcoRMttagR*tlsttbitstflagtweakreqstversR�twreqt
strongreqs((s0/usr/lib/python2.7/site-packages/yum/packages.pyR�zs4
&
%'cCsRtjdtjdd�yt||�SWn!tk
rMtjd|�nXdS(Ns6tagByName() will go away in a furture version
of Yum.
R�isUnknown header tag
%s(R�R�R�R�R�tAttributeErrorRf(RMR�((s0/usr/lib/python2.7/site-packages/yum/packages.pyt tagByName�s
cCs�|jd�r4|jd�r4td||f�ny|j|SWnGtk
ritd||f�n$tk
r�td||f�nXdS(Nt__s%s has no attribute
%s(R�R\R�RMtKeyErrorRB(RMtthing((s0/usr/lib/python2.7/site-packages/yum/packages.pyt__getattr__�s
cCs2|jd}|dkr"d}nt|�}|S(NRRr(RMR:R�(RMttmpepochR((s0/usr/lib/python2.7/site-packages/yum/packages.pyR��s
cCs|jS(N(RM(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRV�sc Cs<|jd}|jd}|jd}t|||�}|js8x�|D]�\}}}|dksp|dkr�d|jkr�g|jd<n|jdj|�qIn||jkr�tj|�|j|<nd}|j|r�d}n|dk r|d@rd}n|jj |g�j|�qIWt
|_ndS( Nt filenamest fileflagst filemodesRXR�R�i@R�(RMR�RR:R�R
R�R_tS_ISDIRt
setdefaultR( RMR�R�R�t filetupleR�tmodeR�tfkey((s0/usr/lib/python2.7/site-packages/yum/packages.pyt
_loadFiles�s(
R�cCs|j�tj|||�S(s"return list of files based on
type(R�RR�(RMR�R�((s0/usr/lib/python2.7/site-packages/yum/packages.pyR��s
cCsBt|jd�dkr>t|jd|jd|jd�SgS(Nt
changelognameit
changelogtimet
changelogtext(R�RMR�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyR��s
cCs
t��dS(N(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyR��scCst|jd�S(NR�(R�RM(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_PREREQR�R�(RMR�((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_is_pre_req�s
cCs�|jtj}|jtj}tt|�}t|j|�}|jtj}tt|�}|dk r�t
||||�}ntj|�}|S(s%returns requires with pre-require
bitN(
RMRQtRPMTAG_REQUIRENAMEtRPMTAG_REQUIREFLAGSR�RR�tRPMTAG_REQUIREVERSIONRR:R�R=RA(RMR*R�R�R�R�R�((s0/usr/lib/python2.7/site-packages/yum/packages.pyR�s(RRRSRTRNR/R�RmR}R�R~RiRR�R�R�R�R�R�RVR�R�R�R�R&R�R�(((s0/usr/lib/python2.7/site-packages/yum/packages.pyR�7s, $
t_CountedReadFilecBs eZdZd�Zd�ZRS(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(R�treadRR�(RMR�R�((s0/usr/lib/python2.7/site-packages/yum/packages.pyRs(RRRSRTRNR(((s0/usr/lib/python2.7/site-packages/yum/packages.pyR�
s t_PkgVerifyProbcBs#eZdZed�Zd�ZRS(s8
Holder for each "problem" we find with a pkg.verify().
cCs:||_||_d|_d|_||_||_dS(N(R�tmessageR:tdatabase_valuet
disk_valuet
file_typestfake(RMR�R�tftypesR((s0/usr/lib/python2.7/site-packages/yum/packages.pyRNs cCs|dkrdSidd6dd6dd6dd6dd 6d
d6dd
6dd6dd6dd6dd6dd6dd6dd6}t||j||j�}|sxudddgD]a}t||�}t||�}|dkr�|dks�t�q�nt||�}|r�Pq�q�Wn|S(NiR�itsymlinkiReiR�tuseriRiR�itgenchecksumitmtimei tmissingi
spermissions-missingiRit missingoki
R�RRR(R:R�R�R�R�(RMRet type2sortR�tattrRnty((s0/usr/lib/python2.7/site-packages/yum/packages.pyRf&s$(RRRSRTRRNRf(((s0/usr/lib/python2.7/site-packages/yum/packages.pyRsiiiiiiiiitYUMVerifyPackageFilecBsgeZd�Zd
d�Zedd�dd�dd��Zedd�dd �dd
��Zedd�dd�dd
��Zedd�dd�dd��Z edd�dd�dd��Z
edd�dd�dd��Zedd�dd�dd��Zd�Z
edd�dd�dd��Zed��Zedd��ZRS(!cCss||_d|_d|_d|_d|_d|_d|_d|_d|_ t
|_t�|_
d|_dS(N(tfilenameR:treadlinkRtdevR
RR�tdigestR�Rtverify_ftypeR�trpmfile_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|dd�S(NR(R�R:(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|dd�S(NR(R�R:(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|dd�S(NR(R�R:(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|dd�S(NR
(R�R:(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|dd�S(NR(R�R:(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|dd�S(NR(R�R:(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|dd�S(NR�(R�R:(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|dd�S(NR�(R�R:(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.
R�t directoryR tfifoscharacter devicesblock
devices <unknown>(R_tS_ISREGR�tS_ISLNKtS_ISFIFOtS_ISCHRtS_ISBLK(R�((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_ftype�scCs|j|j�S(N(R0R�(Rn((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�sN(RRRSRNR:RRmRRRR
RRR�R'R�tstaticmethodR0R�(((s0/usr/lib/python2.7/site-packages/yum/packages.pyRFs: t_RPMVerifyPackageFilecBseZed�ZRS(cCs�tj||d�|d}|r-d}n
|d}|t@rQ|d|_n|t@tBr�|d}|dkr�|d@}n||_|t@s�t|_n|t@s�t|_ q�n|t
@r�|d|_n|t@r�|d |_nt
�|_}|tj@r|jd
�n|tj@r8|jd�n|tj@rU|jd�n|tj@rr|jd
�n|tj@r�|jd�n|tj@r�|jd�n|tj@r�|jd�n|d} idtj6dtj6dtj6dtj6dtj6}
| |
kr'|
| |_n d|_|t@rJ|d|_n|t
@rd|d|_!n|t"@r�||df|_#n|j$dkr�|t%@r�|j&�|_'n|t%@r�d|_'ndS(Niii����i iii��iit
configurationt
documentationR�R�s
public keytREADMEs
missing okitnormaltreplaceds
not installedswrong
colort netshareds <unknown>i
iiR RX((RRNt_RPMVERIFY_FILESIZER�t_RPMVERIFY_RDEVt_RPMVERIFY_MODER�RR&Rt_RPMVERIFY_MTIMERRR�t
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_DIGESTRR�t_RPMVERIFY_LINKTOtFLinkR(RMtfiR�Ritoverride_vflagsR�tvflagsR�R=Rtstatemap((s0/usr/lib/python2.7/site-packages/yum/packages.pyRN�sl
(RRRSRRN(((s0/usr/lib/python2.7/site-packages/yum/packages.pyR2�stYUMVerifyPackagecBsMeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z RS(s,
A holder for YUMVerifyPackageFile objects.
cCs||_i|_dS(N(tpot_files(RMRU((s0/usr/lib/python2.7/site-packages/yum/packages.pyRN�s 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.pytremove�scCs$|j|krdS|j|�dS(N(RR[(RMRZ((s0/usr/lib/python2.7/site-packages/yum/packages.pytdiscard�scCs
i|_dS(N(RV(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pytclear�s(
RRRSRTRNRXRYR?R[R\R](((s0/usr/lib/python2.7/site-packages/yum/packages.pyRT�s t_RPMVerifyPackagecBsGeZd�Zd�Zd�Zd�Zd�Zd�Zd�ZRS(cCs)tj||�||||f|_dS(N(RTRNt _presetup(RMRURPt
def_csum_typetpatternstall((s0/usr/lib/python2.7/site-packages/yum/packages.pyRN�scCst|d�sdS|j\}}}}|`i}x�|D]�}|d}|r�t}xo|D]g} | tkr}t| }
n(| |kr�|| }
ntj| �}
|
|| <|
|�r^t}Pq^q^W|s�q;q�n|jt||||��q;W|r|andS(NR_i( R�R_Rt
_last_fnmatchR=R@RR?R2(RMRPR`RaRbt
_this_fnmatchtftR�REtpR�((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_setup�s0
cOs|j�tj|||�S(N(RgRTRX(RMtargstkwargs((s0/usr/lib/python2.7/site-packages/yum/packages.pyRXs
cOs|j�tj|||�S(N(RgRTRY(RMRhRi((s0/usr/lib/python2.7/site-packages/yum/packages.pyRYs
cOs|j�tj|||�S(N(RgRTR?(RMRhRi((s0/usr/lib/python2.7/site-packages/yum/packages.pyR?"s
cOs|j�tj|||�S(N(RgRTR[(RMRhRi((s0/usr/lib/python2.7/site-packages/yum/packages.pyR[%s
cOs+t|d�r|`ntj|||�S(NR_(R�R_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
R�tYumInstalledPackagec Bs;eZdZdd�Zgeeeeeded�ZRS(s2super
class for dealing with packages in the
rpmdbcCs2tj|t|�|r.|j|�|_ndS(N(R�RNt_installed_repotget_packageR
(RMRMtyumdb((s0/usr/lib/python2.7/site-packages/yum/packages.pyRN4sc ,%Csr |jj�} i}
d}tjj|�}d}
ttd�rw|jtj}|rw|tkrtt|}
qtqwnt || |
||�}|d6k r�||�}nx�|D]�}|j}t|j
�}|jdkr
|jd|j�|r�tdd|dt�g|
|<q�q�nd |j
krW|rWtd
d|dt�g|
|<nd |j
krs|rsq�nd|j
kr�|r�tdd
|dt�g|
|<nd|j
kr�|r�q�ng}tjj|j�r�tj|j�}|j}ytj|tj�d}Wn$tk
r@}d|tj}nXytj|tj�d}Wn$tk
r�}d|tj}nXtj|j�}t
}|j!r�|j"j#d�s�|j#d�r�t}n|r�|j"|krtdd|�}|j"|_$||_%|j|�q�|j&d@|j'd@kr�tdd|�}t(|j&d@�|_$t(|j'd@�|_%|j|�q�n|j)rd}|dkr�tj*|j�}n||j*krtdd|�}|j*|_$||_%|j|�qnt}d|krt
}n|dkrO|j"dkrOtj|j�j}n|dkrdt }nt}|dkrt
}n|r�|j+r�t,|j-�t,|j.�kr�tdd|�}|j.|_$t,|j-�|_%|j|�n|rA|j/rA||j0krAtdd|�}|j0|_$||_%|j|�n|r�|j1r�||j2kr�tdd|�}|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 n�ytj|j�t}+Wn4tDk
r }t}+|jEtEjFkr t
}+q nX|+r5 td2d3|�}ntd4d5|�}|j|�|r�||
|j<q�q�W|
S(7s�verify 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 okR�s
ghost fileisuid %s not foundsgid %s not foundtdeviceR�sfile type
does not matchi��sdev does not matchRXR ssymlink does not
matchR�Rsmtime does not matchR
suser does not matchRsgroup does not matchi�R�smode does not
matcht:iRschecksum not
availables-ytbufsizei����tstdintstdouttstderrt close_fdsReschecksum
does not matchR�ssize does not matchR
sfile is
missingspermissions-missings#file is missing (Permission
denied)N(GRMtfiFromHeaderRYRZROR�RQRotRPM_CHECKSUM_TYPESR^R:RtlistR=RR
RRtlexiststlstatRdtpwdtgetpwuidR_tST_UIDR�tgrptgetgrgidtST_GIDRR0tst_modeRt
verify_devR�R\RRRRbR�tverify_readlinkRtverify_mtimeR@RcRtverify_userR
tverify_groupRR�R&t
verify_digestR�Rtverify_sizeR=ReR�RfRRRsRtRuR�RR`terrnotEACCES(,RMRatdepstscriptt
fake_problemsRbtfasttcallbacktfailfastRPR�tprelink_cmdthave_prelinkRitcsum_numtpfstpfR�Rtproblemstmy_stt
my_st_sizetmy_userR'tmy_grouptmy_ftypeR�tprobtmy_fnlt
check_contenttcheck_permstmy_modetpf_modet perm_maskR�tdigest_typeR�tmy_csumRftigR�terttcsumtperms_ok((s0/usr/lib/python2.7/site-packages/yum/packages.pytverify9s^
N(RRRSRTR:RNRRR�(((s0/usr/lib/python2.7/site-packages/yum/packages.pyRj2s
tYumLocalPackagecBs�eZdZd
d
d�Zd�Zd�Zd
d�Zedd��Z d�Z
d�Zd �Zedd
��Z
edd��Zd�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|dkr9tjd�nd|_||_d|_ytj j
||j�}Wn,tk
r�}tjd|j|f�nXt|�}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:
%sii����iRX(&R:RRGRHR�RftpkgtypeRWR>RRIRRUtcostR�RNR�R4RYR_t_statR�R�R%tisSrpmRpR*RR�R�Rt _hdrstartt_hdrendR=t_default_checksumsRrt_reldirt_baseurl(RMRLRRMR'tfakerepo((s0/usr/lib/python2.7/site-packages/yum/packages.pyRN$s6 ' cCs:|jd�dks%|jd�r)dS|jd�SdS(Nt
sourcepackageiR�tsrcRp(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyR�Ls%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=R�R>ReRWRq(RMRr((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_do_checksumUs RkcCs
|j�S(N(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl^scCs|j�|jS(N(R�Rq(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.pyR�dscCs{|jr"|jr"|j|jfSt|jd�}|jd�|jd�}tjd|�\}|jd�}tjd|�\}|d}||}|d}|dkr�d|}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( R�R�topenRWtseekRtstructtunpacktclose(RMtfotbinindextsigindextbindatatsigdatatsigindexsizetsigsizetdisttoboundaryR�thdrindexthdrdatathdrindexsizethdrsizeR�((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_get_header_byte_rangehs6
cCs|j�dS(Ni(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs|j�dS(Ni(R�(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRl�scCs�|jrV|jj|j�rV|jj|jd�}|ddkr_|d}q_n |j}|jr�dtj|jdt�tj|dt�f}ndtj|dt�}|S(NRXiRVis&
<location xml:base="%s" href="%s"/>
R�s <location href="%s"/>
(R�RWR�R2R�R=R�R(RMtrelpathR�((s0/usr/lib/python2.7/site-packages/yum/packages.pyR��s N(RRRSRTR:RNR�RFR�RmReR�R�R�R�R�R�(((s0/usr/lib/python2.7/site-packages/yum/packages.pyR�s( 0t
YumUrlPackagecBs#eZdZddddd�ZRS(s�Class
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�|j�jd�r(|td�}n|tj|�s@|}ndd}i}xl|jj�D][}|j}|j |j
j kr\|j|j
jkr\|j|j
jkr\|j
}Pq\q\Wtjj|�} tj�}
|
dkr�d|j}
nd|
| f}
yptd|j
jd|j
jd|j
jd|d|�}|dk r\||j_n|j||
d | �}Wn,tk
r�}tjd
||f��nXtj|||�dS(Nsfile:s%s/../s%s/%st bandwidthtretrytthrottletprogress_objtproxiesR�sCannot
download %s:
%s(RR�R�R=t
re_remote_urlR:trepostlistEnabledR�tproxytconftproxy_usernametproxy_passwordt
proxy_dictRYRZR[tgetCacheDirtcachedirR R�tretriesR�toptst
user_agentturlgrabR
R�RfR�RN(
RMtybRLR�tuaR�tcbtpdR3RWR�tugR'((s0/usr/lib/python2.7/site-packages/yum/packages.pyRN�s< N(RRRSRTR:RN(((s0/usr/lib/python2.7/site-packages/yum/packages.pyR��s(LRTRQRYtos.pathR=R�tretfnmatchR_R�t
subprocessRRRRtrpmUtils.miscutilsRRRR�R�R�t constantstoperatorRR�R*t
uses_fragmentR
turlgrabber.grabberR R
RlR�R:tImportErrorR|RRRRR2RKRLRUtobjectRoR�R�R�R�R�RR�R�R�RRMR9RNRKRLR<R;R:t_RPMVERIFY_CAPSt_RPMVERIFY_CONTEXTSRR2RTRcR^RkRjR�R�(((s0/usr/lib/python2.7/site-packages/yum/packages.pyt<module>s�
"88� � 1��) �
HJ8 ��