PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /usr/lib/python2.7/site-packages/yum
Viewing File: /usr/lib/python2.7/site-packages/yum/packages.pyc
� � v_c@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z m 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 t d|�|||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-archs repo-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 �Z edd ��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.pyt returnIdSum�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�Z d �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�R R 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�tsett inPrcoRangeR�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.pyt simpleFiles�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.pyt obsoletedBy�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�Z d �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(t packagesize(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(tbasepathturlparseturljoint remote_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( tlocalPkgRt transactiontinitReadOnlyTransactionRthdrFromPackageRR�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�t Sn|j �\}}y%t j||j�d|j�}Wntjk r�tSX||kr�tS||_t S(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�R RFR�(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 �}|d krd-}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"tinfotsummaryt descriptionR4tgroupt buildhostR�turltvendors tlicenseR�R�R*tflagsR R�R�RtdatetvaluetauthorRettypetpkgidtNOitYESiN(#R�R0R*R R RpRRtR<tfiletimeR�R%t archivesizet installedsizeRxR R: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 |d 7}|d |j|jf7}||j d �7}||j �7}||j d�7}||j d�7}||j t �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| |j ks�| 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�is libc.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 e d�Z d �Z d �Zd �Zd �Zd �Zd�Zd�Zde d�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 ||||�}nt j |�}|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 d 6d d 6dd6dd6dd6dd6dd6dd6dd6}t||j||j�}|sxudddgD]a}t||�}t||�}|dkr�|dks�t�q�nt||�}|r�Pq�q�Wn|S(NiR�itsymlinkiReiR�tuseriRiR�it genchecksumitmtimei tmissingi spermissions-missingi Ri 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��Z edd�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:t verify_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(c Cs�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 installeds wrong colort netshareds <unknown>i i i R RX((RRNt_RPMVERIFY_FILESIZER�t_RPMVERIFY_RDEVt_RPMVERIFY_MODER�RR&Rt_RPMVERIFY_MTIMER RR�t rpmfile_typesRQtRPMFILE_CONFIGtaddt RPMFILE_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�sc Cs t|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_repot get_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'|j gd(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:iR schecksum 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 t verify_userR t verify_groupRR�R&t verify_digestR�Rt verify_sizeR=ReR�RfRRRsRtRuR�RR`terrnotEACCES(,RMRatdepstscriptt fake_problemsRbtfasttcallbacktfailfastRPR�t prelink_cmdt have_prelinkRitcsum_numtpfstpfR�Rtproblemstmy_stt my_st_sizetmy_userR'tmy_grouptmy_ftypeR�tprobtmy_fnlt check_contentt check_permstmy_modetpf_modet perm_maskR�t digest_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�Z d �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,t k 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 j kr\|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:trepost listEnabledR�tproxytconftproxy_usernametproxy_passwordt proxy_dictRYRZR[t getCacheDirtcachedirR 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:t ImportErrorR|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  ��