Current File : //proc/2/task/2/root/usr/lib/python2.7/site-packages/yum/packages.pyc
�
�v_c@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 ��