Ńņ ¾[c @s_ddkZddkZddkZddkZddkZddklZlZddklZddk l Z d„Z e Z d„Zd„Zdd „Zd „Zd „Zd „Zd „Zd„Zd„ZddgZdeifd„ƒYZddd„Zddd„ƒYZdefd„ƒYZdefd„ƒYZddd„ƒYZdS( i’’’’N(twrite32utFNAME(t URLGrabError(terrorcCsti|IJdS(N(tsyststderr(tnumtmsg((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pytlog scCs|S(N((R((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyt_scCsŠt|ƒ}d}|idjo d}n1||iƒjp||iƒjo d}n|o#tdtdƒ||fƒ‚ndS(sŽcheck a header by opening it and comparing the results to the name and arch we believe it to be for. if it fails raise URLGrabError(-1)iii’’’’s1Header cannot be opened or does not match %s, %s.N(t Header_WorkthdrtNonetnametarchRR (t headerfileR Rthtfail((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyt checkheaders  & #icCsÆtidƒti|tiƒ}yti|ƒWntij o}d}nXd}ti|ƒtidƒ|o,|pt dt dƒ|ƒ‚q«dSn|SdS(sdtake a package, check it out by trying to open it, return 1 if it's good return 0 if it's nottmd5iitdefaulti’’’’sRPM %s fails md5 checkN( ttst sigCheckingtostopentO_RDONLYt hdrFromFdnotrpmRtcloseRR (tpackaget urlgraberrortfdnotetgood((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyt checkRpmMD5%s    cCsųtidƒti|tiƒ}yti|ƒ}Wnxtij oi}t|ƒdjodSt|ƒdjodSt|ƒdjodSt|ƒdjodSn9Xt |ƒ\}}|d joti |ƒ~d S~ti |ƒd S( sÜ take a package, check it's sigs, return 0 if they are all fine, return 1 if the gpg key can't be found, 2 if the header is in someway damaged, 3 if the key is not trusted, 4 if the pkg is not gpg or pgp signedRspublic key not availaiableispublic key not availablespublic key not trustediserror reading package headeriieii( RRRRRRRRtstrt getSigInfoR(RRR R Rtsiginfo((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pytcheckSig;s*     cCsud}|i|ƒ}|djo"d}|idƒ\}}}nd}d}d}d}|||f}||fS(sEchecks if a computerhand back signature information and an error codesŽ%|DSAHEADER?{%{DSAHEADER:pgpsig}}:{%|RSAHEADER?{%{RSAHEADER:pgpsig}}:{%|SIGGPG?{%{SIGGPG:pgpsig}}:{%|SIGPGP?{%{SIGPGP:pgpsig}}:{(none)}|}|}|}|s(none)it,ietMD5R (tsprintftsplit(R tstringR%Rtsigtypetsigdatetsigidt infotuple((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyR$Ws cCs\g}|ti}|djon5t|ƒtijo|i|ƒn|i|ƒ|S(N(RtRPMTAG_PROVIDENAMER ttypettypestListTypetextendtappend(theadert provnamestprovides((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyt getProvidesgs   c Cs½|\}}}|\}}}d„}||ƒ}||ƒ}||ƒ}||ƒ}||ƒ}||ƒ}ti|||f|||fƒ} tdd||||||| fƒ| S(NcSs7t|ƒtijo|djot|ƒ}n|S(N(R1R2t StringTypeR R#(targ((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyt rpmOutToStrvs#is%s, %s, %s vs %s, %s, %s = %s(Rt labelCompareR( t.0t.1te1tv1tr1te2tv2tr2R<trc((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyt compareEVRrs       $&cCs›|o|titiBtiB@o|d}n|ti@o|d}n|ti@o|d}n|ti@o|d}|d|}q—n|S(Nt tt=s %s(Rt RPMSENSE_LESStRPMSENSE_GREATERtRPMSENSE_EQUAL(R tversiontflags((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyt formatRequire…s cCsHytitiƒ}Wn+tij o}tdtdƒƒnX|S(NisFCould not open RPM database for reading. Perhaps it is already in use?(RtTransactionSettconft installrootRterrorlogR (tdbR ((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyt openrpmdb“s tGzipFileRcBseZd„ZRS(cCs³|iidƒ|iidƒ|id }d}|o t}n|iit|ƒƒt|itdƒƒ|iidƒ|iidƒ|o|ii|dƒndS(Ns‹siż’’’iss’t(tfileobjtwritetfilenameRtchrRtlong(tselftfnameRP((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyt_write_gzip_headerŸs  (t__name__t __module__Ra(((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyRXžstrbi cCst|||ƒS(N(RX(R\tmodet compresslevel((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyt _gzipOpen®st RPM_Base_WorkcBskeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z RS( cCs d|_dS(N(R R (R_((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyt__init__²scCs?|idjo$tdtdƒƒtidƒn|i|S(Nis-Got an empty Header, something has gone wrongi(R R RUR Rtexit(R_ttag((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyt_getTagµscCs#|idƒdjodSdSdS(Nt sourcepackageii(Rl(R_((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pytisSource¼scCs |idƒS(NR (Rl(R_((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyR ĀscCs |idƒS(NR(Rl(R_((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyRÅscCs |idƒS(Ntepoch(Rl(R_((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyRoČscCs |idƒS(NRO(Rl(R_((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyROĖscCs |idƒS(Ntrelease(Rl(R_((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyRpĪscCs:|idƒ}|idƒ}|idƒ}|||fS(NRoRORp(Rl(R_R tvtr((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pytevrŃscCs^|idƒ}|idƒ}|idƒ}|idƒ}|idƒ}|||||fS(NR RoRORpR(Rl(R_tnR RqRrta((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pytnevra×s c CsČ|iƒ\}}}}}|djo d}n|iƒod|||||f}nd||||||f}|ot|dƒ} nt|dƒ} | i|iidƒƒ| iƒ|S(Nt0s%s/%s-%s-%s-%s.src.hdrs%s/%s-%s-%s-%s.%s.hdrtwi( RvR RnRgRR[R tunloadR( R_t headerdirtcompressR RotvertrelRtheaderfnt headerout((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyt writeHeaderßs    ( RbRcRiRlRnR RRoRORpRsRvR€(((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyRh±s          R cBseZdZd„ZRS(s‡for operating on hdrs in and out of the rpmdb if the first arg is a string then it's a filename otherwise it's an rpm hdrcCsxt|ƒtijoOygti|dƒ}yti|iƒƒ}Wn5tij o&}t dt dƒ|ƒd}nXWn×t j oi}t|dƒ}yti|iƒƒ}WqWtij o&}t dt dƒ|ƒd}qWXndt j o&}t dt dƒ|ƒd}n3tj o&}t dt dƒ|ƒd}nX|iƒn|}||_dS(NRrisDamaged Header %s(R1R2R:tgzipRRt headerLoadtreadRRUR R tIOErrort ValueErrort zlibErrorRR (R_R6tfdRR ((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyRiös0  (RbRct__doc__Ri(((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyR ņstRPM_WorkcBseZd„ZRS(cCsŽtitiƒti|tiƒ}yti|ƒ|_Wn>ti j o/}t dt dƒ||fƒd|_nXti |ƒdS(NisError opening rpm %s - error %s(Rt setVSFlagsRt_RPMVSF_NOSIGNATURESRRRRR RRUR R R(R_trpmfnR‡R ((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyRis(RbRcRi(((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyR‰st Rpm_Ts_WorkcBs>eZdZdd„Zd„Zdddd„Zd„ZRS(sļThis should operate on groups of headers/matches/etc in the rpmdb - ideally it will operate with a list of the Base objects above, so I can refer to any one object there not sure the best way to do this yet, more thinking involvedt/cCs‡y/tio!tidjo ti}q.nWntj o }nXti|ƒ|_dddddddd d d d g |_dS( NRŽt addInstalltaddErasetruntchecktorderRtcloseDBtdbMatchtsetFlagsRŠt setProbFilter(RSRTt NameErrorRRRRtmethods(R_tdbPathR ((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyRi!s cCs.||ijot|i|ƒSt|‚dS(N(R™tgetattrRtAttributeError(R_t attribute((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyt __getattr__.scCs[g}|djo-|djo |djo|iiƒ}nī|djo|ii||ƒ}nČ|djo)|iiƒ}|i|ti|ƒn’|djo)|iiƒ}|i|ti|ƒn\|djo)|iiƒ}|i|ti|ƒn&|iiƒ}|i|ti|ƒx'|D]}t |ƒ}|i |ƒq4W|S(s(hands back a list of Header_Work objectstglobtregextstrcmpN( R RR•tpatternRt RPMMIRE_GLOBt RPMMIRE_REGEXtRPMMIRE_STRCMPtRPMMIRE_DEFAULTR R5(R_RktsearchtmirethwlistthdrlistR thdrobj((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pytmatch4s*'     cCs‚|djo|iititiBƒnS|djo|iitiƒn.|djo|iitiƒn t|‚dS(sApass type of check you want to occur, default is to have them offRtnoneRN(RRŠRt RPMVSF_NOMD5tRPMVSF_NEEDPAYLOADR‹tRPMVSF_DEFAULTRœ(R_tsig((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyRSs   N(RbRcRˆRiRžR R¬R(((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyRs  (((RR2RRRRRturlgrabber.grabberRtzlibRR†RRUR RR"R&R$R9RGRQRWt__all__RXRgRhR R‰R(((s5/usr/lib/python2.6/site-packages/rpmUtils/oldUtils.pyts2              A