PNG  IHDRQgAMA a cHRMz&u0`:pQ<bKGDgmIDATxwUﹻ& ^CX(J I@ "% (** BX +*i"]j(IH{~R)[~>h{}gy)I$Ij .I$I$ʊy@}x.: $I$Ii}VZPC)I$IF ^0ʐJ$I$Q^}{"r=OzI$gRZeC.IOvH eKX $IMpxsk.쒷/&r[޳<v| .I~)@$updYRa$I |M.e JaֶpSYR6j>h%IRز if&uJ)M$I vLi=H;7UJ,],X$I1AҒJ$ XY XzI@GNҥRT)E@;]K*Mw;#5_wOn~\ DC&$(A5 RRFkvIR}l!RytRl;~^ǷJj اy뷦BZJr&ӥ8Pjw~vnv X^(I;4R=P[3]J,]ȏ~:3?[ a&e)`e*P[4]T=Cq6R[ ~ޤrXR Հg(t_HZ-Hg M$ãmL5R uk*`%C-E6/%[t X.{8P9Z.vkXŐKjgKZHg(aK9ڦmKjѺm_ \#$5,)-  61eJ,5m| r'= &ڡd%-]J on Xm|{ RҞe $eڧY XYrԮ-a7RK6h>n$5AVڴi*ֆK)mѦtmr1p| q:흺,)Oi*ֺK)ܬ֦K-5r3>0ԔHjJئEZj,%re~/z%jVMڸmrt)3]J,T K֦OvԒgii*bKiNO~%PW0=dii2tJ9Jݕ{7"I P9JKTbu,%r"6RKU}Ij2HKZXJ,妝 XYrP ެ24c%i^IK|.H,%rb:XRl1X4Pe/`x&P8Pj28Mzsx2r\zRPz4J}yP[g=L) .Q[6RjWgp FIH*-`IMRaK9TXcq*I y[jE>cw%gLRԕiFCj-ďa`#e~I j,%r,)?[gp FI˨mnWX#>mʔ XA DZf9,nKҲzIZXJ,L#kiPz4JZF,I,`61%2s $,VOϚ2/UFJfy7K> X+6 STXIeJILzMfKm LRaK9%|4p9LwJI!`NsiazĔ)%- XMq>pk$-$Q2x#N ؎-QR}ᶦHZډ)J,l#i@yn3LN`;nڔ XuX5pF)m|^0(>BHF9(cզEerJI rg7 4I@z0\JIi䵙RR0s;$s6eJ,`n 䂦0a)S)A 1eJ,堌#635RIgpNHuTH_SԕqVe ` &S)>p;S$魁eKIuX`I4춒o}`m$1":PI<[v9^\pTJjriRŭ P{#{R2,`)e-`mgj~1ϣLKam7&U\j/3mJ,`F;M'䱀 .KR#)yhTq;pcK9(q!w?uRR,n.yw*UXj#\]ɱ(qv2=RqfB#iJmmL<]Y͙#$5 uTU7ӦXR+q,`I}qL'`6Kͷ6r,]0S$- [RKR3oiRE|nӦXR.(i:LDLTJjY%o:)6rxzҒqTJjh㞦I.$YR.ʼnGZ\ֿf:%55 I˼!6dKxm4E"mG_ s? .e*?LRfK9%q#uh$)i3ULRfK9yxm܌bj84$i1U^@Wbm4uJ,ҪA>_Ij?1v32[gLRD96oTaR׿N7%L2 NT,`)7&ƝL*꽙yp_$M2#AS,`)7$rkTA29_Iye"|/0t)$n XT2`YJ;6Jx".e<`$) PI$5V4]29SRI>~=@j]lp2`K9Jaai^" Ԋ29ORI%:XV5]JmN9]H;1UC39NI%Xe78t)a;Oi Ҙ>Xt"~G>_mn:%|~ޅ_+]$o)@ǀ{hgN;IK6G&rp)T2i୦KJuv*T=TOSV>(~D>dm,I*Ɛ:R#ۙNI%D>G.n$o;+#RR!.eU˽TRI28t)1LWϚ>IJa3oFbu&:tJ*(F7y0ZR ^p'Ii L24x| XRI%ۄ>S1]Jy[zL$adB7.eh4%%누>WETf+3IR:I3Xה)3אOۦSRO'ٺ)S}"qOr[B7ϙ.edG)^ETR"RtRݜh0}LFVӦDB^k_JDj\=LS(Iv─aTeZ%eUAM-0;~˃@i|l @S4y72>sX-vA}ϛBI!ݎߨWl*)3{'Y|iSlEڻ(5KtSI$Uv02,~ԩ~x;P4ցCrO%tyn425:KMlD ^4JRxSهF_}شJTS6uj+ﷸk$eZO%G*^V2u3EMj3k%)okI]dT)URKDS 7~m@TJR~荪fT"֛L \sM -0T KfJz+nإKr L&j()[E&I ߴ>e FW_kJR|!O:5/2跌3T-'|zX ryp0JS ~^F>-2< `*%ZFP)bSn"L :)+pʷf(pO3TMW$~>@~ū:TAIsV1}S2<%ޟM?@iT ,Eūoz%i~g|`wS(]oȤ8)$ ntu`өe`6yPl IzMI{ʣzʨ )IZ2= ld:5+請M$-ї;U>_gsY$ÁN5WzWfIZ)-yuXIfp~S*IZdt;t>KūKR|$#LcԀ+2\;kJ`]YǔM1B)UbG"IRߊ<xܾӔJ0Z='Y嵤 Leveg)$znV-º^3Ւof#0Tfk^Zs[*I꯳3{)ˬW4Ւ4 OdpbZRS|*I 55#"&-IvT&/윚Ye:i$ 9{LkuRe[I~_\ؠ%>GL$iY8 9ܕ"S`kS.IlC;Ҏ4x&>u_0JLr<J2(^$5L s=MgV ~,Iju> 7r2)^=G$1:3G< `J3~&IR% 6Tx/rIj3O< ʔ&#f_yXJiގNSz; Tx(i8%#4 ~AS+IjerIUrIj362v885+IjAhK__5X%nV%Iͳ-y|7XV2v4fzo_68"S/I-qbf; LkF)KSM$ Ms>K WNV}^`-큧32ŒVؙGdu,^^m%6~Nn&͓3ŒVZMsRpfEW%IwdǀLm[7W&bIRL@Q|)* i ImsIMmKmyV`i$G+R 0tV'!V)֏28vU7͒vHꦼtxꗞT ;S}7Mf+fIRHNZUkUx5SAJㄌ9MqμAIRi|j5)o*^'<$TwI1hEU^c_j?Е$%d`z cyf,XO IJnTgA UXRD }{H}^S,P5V2\Xx`pZ|Yk:$e ~ @nWL.j+ϝYb퇪bZ BVu)u/IJ_ 1[p.p60bC >|X91P:N\!5qUB}5a5ja `ubcVxYt1N0Zzl4]7­gKj]?4ϻ *[bg$)+À*x쳀ogO$~,5 زUS9 lq3+5mgw@np1sso Ӻ=|N6 /g(Wv7U;zωM=wk,0uTg_`_P`uz?2yI!b`kĸSo+Qx%!\οe|އԁKS-s6pu_(ֿ$i++T8=eY; צP+phxWQv*|p1. ά. XRkIQYP,drZ | B%wP|S5`~́@i޾ E;Չaw{o'Q?%iL{u D?N1BD!owPHReFZ* k_-~{E9b-~P`fE{AܶBJAFO wx6Rox5 K5=WwehS8 (JClJ~ p+Fi;ŗo+:bD#g(C"wA^ r.F8L;dzdIHUX݆ϞXg )IFqem%I4dj&ppT{'{HOx( Rk6^C٫O.)3:s(۳(Z?~ٻ89zmT"PLtw䥈5&b<8GZ-Y&K?e8,`I6e(֍xb83 `rzXj)F=l($Ij 2*(F?h(/9ik:I`m#p3MgLaKjc/U#n5S# m(^)=y=đx8ŬI[U]~SцA4p$-F i(R,7Cx;X=cI>{Km\ o(Tv2vx2qiiDJN,Ҏ!1f 5quBj1!8 rDFd(!WQl,gSkL1Bxg''՞^ǘ;pQ P(c_ IRujg(Wz bs#P­rz> k c&nB=q+ؔXn#r5)co*Ũ+G?7< |PQӣ'G`uOd>%Mctz# Ԫڞ&7CaQ~N'-P.W`Oedp03C!IZcIAMPUۀ5J<\u~+{9(FbbyAeBhOSܳ1 bÈT#ŠyDžs,`5}DC-`̞%r&ڙa87QWWp6e7 Rϫ/oY ꇅ Nܶըtc!LA T7V4Jsū I-0Pxz7QNF_iZgúWkG83 0eWr9 X]㾮݁#Jˢ C}0=3ݱtBi]_ &{{[/o[~ \q鯜00٩|cD3=4B_b RYb$óBRsf&lLX#M*C_L܄:gx)WΘsGSbuL rF$9';\4Ɍq'n[%p.Q`u hNb`eCQyQ|l_C>Lb꟟3hSb #xNxSs^ 88|Mz)}:](vbۢamŖ࿥ 0)Q7@0=?^k(*J}3ibkFn HjB׻NO z x}7p 0tfDX.lwgȔhԾŲ }6g E |LkLZteu+=q\Iv0쮑)QٵpH8/2?Σo>Jvppho~f>%bMM}\//":PTc(v9v!gոQ )UfVG+! 35{=x\2+ki,y$~A1iC6#)vC5^>+gǵ@1Hy٪7u;p psϰu/S <aʸGu'tD1ԝI<pg|6j'p:tպhX{o(7v],*}6a_ wXRk,O]Lܳ~Vo45rp"N5k;m{rZbΦ${#)`(Ŵg,;j%6j.pyYT?}-kBDc3qA`NWQū20/^AZW%NQ MI.X#P#,^Ebc&?XR tAV|Y.1!؅⨉ccww>ivl(JT~ u`ٵDm q)+Ri x/x8cyFO!/*!/&,7<.N,YDŽ&ܑQF1Bz)FPʛ?5d 6`kQձ λc؎%582Y&nD_$Je4>a?! ͨ|ȎWZSsv8 j(I&yj Jb5m?HWp=g}G3#|I,5v珿] H~R3@B[☉9Ox~oMy=J;xUVoj bUsl_35t-(ՃɼRB7U!qc+x4H_Qo֮$[GO<4`&č\GOc[.[*Af%mG/ ňM/r W/Nw~B1U3J?P&Y )`ѓZ1p]^l“W#)lWZilUQu`-m|xĐ,_ƪ|9i:_{*(3Gѧ}UoD+>m_?VPۅ15&}2|/pIOʵ> GZ9cmíتmnz)yߐbD >e}:) r|@R5qVSA10C%E_'^8cR7O;6[eKePGϦX7jb}OTGO^jn*媓7nGMC t,k31Rb (vyܴʭ!iTh8~ZYZp(qsRL ?b}cŨʊGO^!rPJO15MJ[c&~Z`"ѓޔH1C&^|Ш|rʼ,AwĴ?b5)tLU)F| &g٣O]oqSUjy(x<Ϳ3 .FSkoYg2 \_#wj{u'rQ>o;%n|F*O_L"e9umDds?.fuuQbIWz |4\0 sb;OvxOSs; G%T4gFRurj(֍ڑb uԖKDu1MK{1^ q; C=6\8FR艇!%\YÔU| 88m)֓NcLve C6z;o&X x59:q61Z(T7>C?gcļxѐ Z oo-08jہ x,`' ҔOcRlf~`jj".Nv+sM_]Zk g( UOPyεx%pUh2(@il0ݽQXxppx-NS( WO+轾 nFߢ3M<;z)FBZjciu/QoF 7R¥ ZFLF~#ȣߨ^<쩡ݛкvџ))ME>ώx4m#!-m!L;vv#~Y[đKmx9.[,UFS CVkZ +ߟrY٧IZd/ioi$%͝ب_ֶX3ܫhNU ZZgk=]=bbJS[wjU()*I =ώ:}-蹞lUj:1}MWm=̛ _ ¾,8{__m{_PVK^n3esw5ӫh#$-q=A̟> ,^I}P^J$qY~Q[ Xq9{#&T.^GVj__RKpn,b=`żY@^՝;z{paVKkQXj/)y TIc&F;FBG7wg ZZDG!x r_tƢ!}i/V=M/#nB8 XxЫ ^@CR<{䤭YCN)eKOSƟa $&g[i3.C6xrOc8TI;o hH6P&L{@q6[ Gzp^71j(l`J}]e6X☉#͕ ׈$AB1Vjh㭦IRsqFBjwQ_7Xk>y"N=MB0 ,C #o6MRc0|$)ف"1!ixY<B9mx `,tA>)5ػQ?jQ?cn>YZe Tisvh# GMމȇp:ԴVuږ8ɼH]C.5C!UV;F`mbBk LTMvPʍϤj?ԯ/Qr1NB`9s"s TYsz &9S%U԰> {<ؿSMxB|H\3@!U| k']$U+> |HHMLޢ?V9iD!-@x TIî%6Z*9X@HMW#?nN ,oe6?tQwڱ.]-y':mW0#!J82qFjH -`ѓ&M0u Uγmxϵ^-_\])@0Rt.8/?ٰCY]x}=sD3ojަЫNuS%U}ԤwHH>ڗjܷ_3gN q7[q2la*ArǓԖ+p8/RGM ]jacd(JhWko6ڎbj]i5Bj3+3!\j1UZLsLTv8HHmup<>gKMJj0@H%,W΃7R) ">c, xixј^ aܖ>H[i.UIHc U1=yW\=S*GR~)AF=`&2h`DzT󑓶J+?W+}C%P:|0H܆}-<;OC[~o.$~i}~HQ TvXΈr=b}$vizL4:ȰT|4~*!oXQR6Lk+#t/g lԁߖ[Jڶ_N$k*". xsxX7jRVbAAʯKҎU3)zSNN _'s?f)6X!%ssAkʱ>qƷb hg %n ~p1REGMHH=BJiy[<5 ǁJҖgKR*倳e~HUy)Ag,K)`Vw6bRR:qL#\rclK/$sh*$ 6덤 KԖc 3Z9=Ɣ=o>X Ώ"1 )a`SJJ6k(<c e{%kϊP+SL'TcMJWRm ŏ"w)qc ef꒵i?b7b('"2r%~HUS1\<(`1Wx9=8HY9m:X18bgD1u ~|H;K-Uep,, C1 RV.MR5άh,tWO8WC$ XRVsQS]3GJ|12 [vM :k#~tH30Rf-HYݺ-`I9%lIDTm\ S{]9gOڒMNCV\G*2JRŨ;Rҏ^ڽ̱mq1Eu?To3I)y^#jJw^Ńj^vvlB_⋌P4x>0$c>K†Aļ9s_VjTt0l#m>E-,,x,-W)سo&96RE XR.6bXw+)GAEvL)͞K4$p=Ũi_ѱOjb HY/+@θH9޼]Nԥ%n{ &zjT? Ty) s^ULlb,PiTf^<À] 62R^V7)S!nllS6~͝V}-=%* ʻ>G DnK<y&>LPy7'r=Hj 9V`[c"*^8HpcO8bnU`4JȪAƋ#1_\ XϘHPRgik(~G~0DAA_2p|J묭a2\NCr]M_0 ^T%e#vD^%xy-n}-E\3aS%yN!r_{ )sAw ڼp1pEAk~v<:`'ӭ^5 ArXOI驻T (dk)_\ PuA*BY]yB"l\ey hH*tbK)3 IKZ򹞋XjN n *n>k]X_d!ryBH ]*R 0(#'7 %es9??ښFC,ՁQPjARJ\Ρw K#jahgw;2$l*) %Xq5!U᢯6Re] |0[__64ch&_}iL8KEgҎ7 M/\`|.p,~`a=BR?xܐrQ8K XR2M8f ?`sgWS%" Ԉ 7R%$ N}?QL1|-эټwIZ%pvL3Hk>,ImgW7{E xPHx73RA @RS CC !\ȟ5IXR^ZxHл$Q[ŝ40 (>+ _C >BRt<,TrT {O/H+˟Pl6 I B)/VC<6a2~(XwV4gnXR ϱ5ǀHٻ?tw똤Eyxp{#WK qG%5],(0ӈH HZ])ג=K1j&G(FbM@)%I` XRg ʔ KZG(vP,<`[ Kn^ SJRsAʠ5xՅF`0&RbV tx:EaUE/{fi2;.IAwW8/tTxAGOoN?G}l L(n`Zv?pB8K_gI+ܗ #i?ޙ.) p$utc ~DžfՈEo3l/)I-U?aԅ^jxArA ΧX}DmZ@QLےbTXGd.^|xKHR{|ΕW_h] IJ`[G9{).y) 0X YA1]qp?p_k+J*Y@HI>^?gt.06Rn ,` ?);p pSF9ZXLBJPWjgQ|&)7! HjQt<| ؅W5 x W HIzYoVMGP Hjn`+\(dNW)F+IrS[|/a`K|ͻ0Hj{R,Q=\ (F}\WR)AgSG`IsnAR=|8$}G(vC$)s FBJ?]_u XRvύ6z ŨG[36-T9HzpW̞ú Xg큽=7CufzI$)ki^qk-) 0H*N` QZkk]/tnnsI^Gu't=7$ Z;{8^jB% IItRQS7[ϭ3 $_OQJ`7!]W"W,)Iy W AJA;KWG`IY{8k$I$^%9.^(`N|LJ%@$I}ֽp=FB*xN=gI?Q{٥4B)mw $Igc~dZ@G9K X?7)aK%݅K$IZ-`IpC U6$I\0>!9k} Xa IIS0H$I H ?1R.Чj:4~Rw@p$IrA*u}WjWFPJ$I➓/6#! LӾ+ X36x8J |+L;v$Io4301R20M I$-E}@,pS^ޟR[/s¹'0H$IKyfŸfVOπFT*a$I>He~VY/3R/)>d$I>28`Cjw,n@FU*9ttf$I~<;=/4RD~@ X-ѕzἱI$: ԍR a@b X{+Qxuq$IЛzo /~3\8ڒ4BN7$IҀj V]n18H$IYFBj3̵̚ja pp $Is/3R Ӻ-Yj+L;.0ŔI$Av? #!5"aʄj}UKmɽH$IjCYs?h$IDl843.v}m7UiI=&=0Lg0$I4: embe` eQbm0u? $IT!Sƍ'-sv)s#C0:XB2a w I$zbww{."pPzO =Ɔ\[ o($Iaw]`E).Kvi:L*#gР7[$IyGPI=@R 4yR~̮´cg I$I/<tPͽ hDgo 94Z^k盇΄8I56^W$I^0̜N?4*H`237}g+hxoq)SJ@p|` $I%>-hO0eO>\ԣNߌZD6R=K ~n($I$y3D>o4b#px2$yڪtzW~a $I~?x'BwwpH$IZݑnC㧄Pc_9sO gwJ=l1:mKB>Ab<4Lp$Ib o1ZQ@85b̍ S'F,Fe,^I$IjEdù{l4 8Ys_s Z8.x m"+{~?q,Z D!I$ϻ'|XhB)=…']M>5 rgotԎ 獽PH$IjIPhh)n#cÔqA'ug5qwU&rF|1E%I$%]!'3AFD/;Ck_`9 v!ٴtPV;x`'*bQa w I$Ix5 FC3D_~A_#O݆DvV?<qw+I$I{=Z8".#RIYyjǪ=fDl9%M,a8$I$Ywi[7ݍFe$s1ՋBVA?`]#!oz4zjLJo8$I$%@3jAa4(o ;p,,dya=F9ً[LSPH$IJYЉ+3> 5"39aZ<ñh!{TpBGkj}Sp $IlvF.F$I z< '\K*qq.f<2Y!S"-\I$IYwčjF$ w9 \ߪB.1v!Ʊ?+r:^!I$BϹB H"B;L'G[ 4U#5>੐)|#o0aڱ$I>}k&1`U#V?YsV x>{t1[I~D&(I$I/{H0fw"q"y%4 IXyE~M3 8XψL}qE$I[> nD?~sf ]o΁ cT6"?'_Ἣ $I>~.f|'!N?⟩0G KkXZE]ޡ;/&?k OۘH$IRۀwXӨ<7@PnS04aӶp.:@\IWQJ6sS%I$e5ڑv`3:x';wq_vpgHyXZ 3gЂ7{{EuԹn±}$I$8t;b|591nءQ"P6O5i }iR̈́%Q̄p!I䮢]O{H$IRϻ9s֧ a=`- aB\X0"+5"C1Hb?߮3x3&gşggl_hZ^,`5?ߎvĸ%̀M!OZC2#0x LJ0 Gw$I$I}<{Eb+y;iI,`ܚF:5ܛA8-O-|8K7s|#Z8a&><a&/VtbtLʌI$I$I$I$I$I$IRjDD%tEXtdate:create2022-05-31T04:40:26+00:00!Î%tEXtdate:modify2022-05-31T04:40:26+00:00|{2IENDB`Mini Shell

HOME


Mini Shell 1.0
DIR:/lib/python2.7/site-packages/yum/
Upload File :
Current File : //lib/python2.7/site-packages/yum/packages.pyc
�
�v_c@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZddl
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(tflagToStringtstringToVersiontcompareVerOnly(t*(t
itemgettertmedia(t
URLGrabbertURLGrabErrortgetcCs_|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.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(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!tusercommandsR"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
��Zd�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
RRtarcht
_checksums(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyRN�s					cCs!|jdkr|jS|jSdS(Nt0(RtnvraR/(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(RRsR0(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(Rtvrtevr(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(Rtvratevra(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(Rtnvrtnevr(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(RR
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(RR
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*RR
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*RR
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(RR*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(RR*R
RRp(RM((s0/usr/lib/python2.7/site-packages/yum/packages.pyt_envraGscCs
|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(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|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__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:R�R*RR(RMReR�((s0/usr/lib/python2.7/site-packages/yum/packages.pytverEQ�s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.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.pytreturnSimple�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*RpRR
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�Rmtui_from_repoR�(((s0/usr/lib/python2.7/site-packages/yum/packages.pyR��s		tRpmBasecBsEeZdZd�Zd�Zd�Zd�Zd�Zed�Z	d�Z
d�Zd	�Zd
�Z
d�Zded
�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��scCst|j|j|j�S(N(t
PackageEVRRR
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:R3R4RR*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:RR�trelRRtrangeCompareR (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.pytprovides_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�tprimary_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*RR
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(RR�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(RRRRR�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	�Zd
�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*RpRR(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(RR
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.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||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_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*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�scCstjj|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	Csytj|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.pytrequiresList�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*tflagsRR�R�RtdatetvaluetauthorRettypetpkgidtNOitYESiN(#R�R0R*RR
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*RpRR�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�|	|jks�|	|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*RpRR�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*RpRR�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�Zd	�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*RptdoepochRR
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(RR*R
RRp(RMR8((s0/usr/lib/python2.7/site-packages/yum/packages.pyRihscCs2|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}nt|�}|S(NRRr(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@rd}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
d6dd
6dd6dd6dd6dd6dd6dd6dd6}t||j||j�}|sxudddgD]a}t||�}t||�}|dkr�|dks�t�q�nt||�}|r�Pq�q�Wn|S(NiR�itsymlinkiReiR�tuseriRiR�itgenchecksumitmtimei	tmissingi
spermissions-missingiRit	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.pyRsiiiiiiiiitYUMVerifyPackageFilecBsgeZd�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��Zd�Z
edd�dd�dd��Zed��Zedd��ZRS(!cCss||_d|_d|_d|_d|_d|_d|_d|_d|_	t
|_t�|_
d|_dS(N(tfilenameR:treadlinkRtdevR
RR�tdigestR�Rtverify_ftypeR�t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|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 devicesblock 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:RRmRRRR
RRR�R'R�tstaticmethodR0R�(((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
iiR	RX((RRNt_RPMVERIFY_FILESIZER�t_RPMVERIFY_RDEVt_RPMVERIFY_MODER�RR&Rt_RPMVERIFY_MTIMERRR�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�tdd
|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�Rsmtime 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(GRMtfiFromHeaderRYRZROR�RQRotRPM_CHECKSUM_TYPESR^R:RtlistR=RR RRtlexiststlstatRdtpwdtgetpwuidR_tST_UIDR�tgrptgetgrgidtST_GIDRR0tst_modeRt
verify_devR�R\RRRRbR�tverify_readlinkRtverify_mtimeR@RcRtverify_userR
tverify_groupRR�R&t
verify_digestR�Rtverify_sizeR=ReR�RfRRRsRtRuR�RR`terrnotEACCES(,RMRatdepstscriptt
fake_problemsRbtfasttcallbacktfailfastRPR�tprelink_cmdthave_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	�Zedd
��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*RR�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(RMtfotbinindextsigindextbindatatsigdatatsigindexsizetsigsizetdisttoboundaryR�thdrindexthdrdatathdrindexsizethdrsizeR�((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
jkr\|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	bandwidthtretrytthrottletprogress_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	��