KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17
System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64
User : nobody ( 99)
PHP Version : 5.2.17
Disable Function : NONE
Directory :  /proc/21573/root/usr/lib/python2.4/site-packages/yum/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //proc/21573/root/usr/lib/python2.4/site-packages/yum/packages.pyo
m
Pc@sIdZdkZdkZdkZdkZdkZdkZdkZdkZdk	l
Z
dkZ	dkZ	dkl
Z
lZdkZdkZdkZdkTdkZeiiddkZdkZdZdZedZd	d
dZdfd
YZdfdYZdefdYZ defdYZ!dfdYZ"de e!fdYZ#de#fdYZ$dfdYZ%dfdYZ&dd	>Z'dd>Z(dd>Z)dd >Z*dd!>Z+dd">Z,dd#>Z-dd$>Z.ed%Z/d	e/_0d&e$fd'YZ1d(e$fd)YZ2dS(*sA
Classes and functions dealing with rpm package representations.
N(s
RpmUtilsError(sflagToStringsstringToVersion(t*tmediacCs_|i|i|i}}}|i|i|i}}}tii
|||f|||fS(s4
    Compare two Package or PackageEVR objects.
    N(tpo1tepochtversiontreleasete1tv1tr1tpo2te2tv2tr2trpmUtilst	miscutilst
compareEVR(RR	RRRRRR
((t0/usr/lib/python2.4/site-packages/yum/packages.pytcomparePoEVR.scCs}|i|i|i}}}|i|i|i}}}||jotSn||jotSn||jotSntS(sA
    Compare two Package or PackageEVR objects for equality.
    N(
RRRRRRRR	R
RRtFalsetTrue(RR	RRRRRR
((RtcomparePoEVREQ5s


cCsPh}xC|D];}
|
i\}
}}}}|p@|
i
}
|i
}|i
}|i
}|i
}n|
}d|
|f}d|
|||f}d|
|f}d|
||f}d||
|||f}	d|
||||f}xR||||||	|gD]5}|i|pg||<n||i|
qWq
W|S(stake 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.%sN(tpkgdicttpkgstpkgtpkgtuptntatetvtrt	casematchtlowertnametnameArchtnameVerRelArchtnameVert
nameVerReltenvratnevratitemthas_keytappend(RRRR"RRR R&R$R%RR'RRRR#R!((RtbuildPkgRefDict@s0
is$repo-epoch-name-version-release-archcCst|t|}g}	g}
g}x|D]}|p|i
}n|i|o|	i||||=q.t
i|o|i}ti|}
ti|
}d}x@|D]8}|i|o"|
i||||=d}qqW|p|i|q#q.|i|q.Wt
i|}|djo"t
i|
}
t
i|	}	n@|djo%d}||
}
||	}	ntd||	|
|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-pkgkeycCsDh}x1|D])}d|ii|if}|||<q
W|iS(Ns%s%s(tuRRtrepotidtpkgKeytmarktvalues(RR/R+R((Rt	pkguniquessBad value for unique: %sN(R*RtboolRRt
exactmatchtmatchedt	unmatchedtusercommandstcommandRR(textendtmisctre_globtkeysttrylisttfnmatcht	translatetrestringtretcompiletregextfounditR'tmatchR)tuniqueR1t
ValueError(RR6RRER<RBRCRR'R3R?R5R7R4R1((Rt
parsePackagesbsH

	
tFakeSackcBs tZdZdZdZRS(s, Fake PackageSack to use with FakeRepositorycCsdS(N((tself((Rt__init__scCsdS(sNdelete a pkgobject, do nothing, but make localpackages work with --skip-brokenN((RItobj((Rt
delPackages(t__name__t
__module__t__doc__RJRL(((RRHs	tFakeRepositorycBs;tZdZdZdZdZdZdZRS(s8Fake repository class for use in rpmsack package objectscCst}d|jotii|}t}n|ido|d }t}ng}|o|i	dnx8|D]0}t|djo
d}n|i	|qxWdi||_dS(s? Set the repoid, but because it can be random ... clean it up. t/s.rpmiit?tN(Rt	pathbasedtrepoidtostpathtbasenameRtendswithtbytesR)tbytetordtjoinRIR-(RIRURZRTR[((Rt_set_cleanup_repoids"




cCs|i|t|_dS(N(RIR^RURHtsack(RIRU((RRJs
cCs>|i|ijodSn |i|ijodSndSdS(Niii(RIR-tother(RIR`((Rt__cmp__s
cCs
t|iS(N(thashRIR-(RI((Rt__hash__scCs|iS(N(RIR-(RI((Rt__str__s(RMRNROR^RJRaRcRd(((RRPs				t
PackageObjectcBstZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZeddZdZRS(sZBase Package Object - sets up the default storage dicts and the
       most common returnscCs:d|_d|_d|_d|_d|_g|_dS(N(tNoneRIR RRRtarcht
_checksums(RI((RRJs					cCsb|idjo&d|i|i|i|if}n)d|i|i|i|i|if}|S(Nt0s%s-%s-%s.%ss%s:%s-%s-%s.%s(RIRR RRRgtout(RIRj((RRds&(cCsH|pdSnt|i|i}|djot||}n|S(s< Compare package to another one, only rpm-version ordering. iiN(R`tcmpRIR tretR(RIR`Rl((RtverCMPs
cCs|i|}|djot|i|i}n|djo9t|do)t|dot|i|i}n|S(s4 Compare packages, this is just for UI/consistency. iRUN(RIRmR`RlRkRgthasattrRU(RIR`Rl((RRas
-cCsI|ptSn|i|ijotSn|i|ijotSntS(se Compare packages for yes/no equality, includes everything in the
            UI package comparison. N(R`RRIRRUR(RIR`((Rt__eq__scCs||jptSntS(N(RIR`RR(RIR`((Rt__ne__s
cCsF|ptSnt|i|i}|djotSnt||S(s< Compare package to another one, only rpm-version equality. iN(R`RRkRIR RlR(RIR`Rl((RtverEQs
cCs|i|djS(s; Uses verCMP, tests if the other _rpm-version_ is <  ours. iN(RIRmR`(RIR`((RtverLTscCs|i|djS(s; Uses verCMP, tests if the other _rpm-version_ is <= ours. iN(RIRmR`(RIR`((RtverLEscCs|i|djS(s; Uses verCMP, tests if the other _rpm-version_ is >  ours. iN(RIRmR`(RIR`((RtverGTscCs|i|djS(s; Uses verCMP, tests if the other _rpm-version_ is >= ours. iN(RIRmR`(RIR`((RtverGE!scCs)d|iit|tt|fS(Ns<%s : %s (%s)>(RIt	__class__RMtstrthexR-(RI((Rt__repr__%scCs&tidtiddt||S(Ns8returnSimple() will go away in a future version of Yum.
t
stackleveli(twarningstwarntErrorstYumFutureDeprecationWarningtgetattrRItvarname(RIR((RtreturnSimple(s	cCs|iS(N(RIRh(RI((RtreturnChecksums-stfgetcCs
|iS(N(RIR(RI((Rt<lambda>0scCs6x/|iD]$\}}}|o||fSq
q
WdS(N(RIt	checksumstcsumtypetcsumtcsumid(RIRRR((RtreturnIdSum2s
(RMRNRORJRdRmRaRoRpRqRrRsRtRuRyRRtpropertyRR(((RRes"							
									tRpmBasecBstZdZdZdZdZdZdZedZ	dZ
dZd	Zd
Z
ddZd
ZdZdZddZeddZeddZeddZeddZeddZeddZeddZeddZeddZeddZeddZeddZeddZ edd Z!edd!Z"edd"Z#edd#Z$d$Z%edd%Z&RS(&s2return functions and storage for rpm-specific datacCsh|_g|id<g|id<g|id<g|id<h|_g|id<g|id<g|id<g|_g|_d|_dS(Nt	obsoletest	conflictstrequirestprovidestfiletdirtghost(RItprcotfilest
_changelogtlicensesRft_hash(RI((RRJ:s	



	


		cCsI|ptSn|i|ijotSn|i|ijotSntS(N(R`RRIRRUR(RIR`((RRoJscCs||jptSntS(N(RIR`RR(RIR`((RRpRs
cCst|i|i|iS(N(t
PackageEVRRIRRR(RI((Rt	returnEVRWscCs[|idjoDd|ii|i|i|i|i|i	f}t||_n|iS(Ns%s - %s:%s-%s-%s.%s(RIRRfR,R-RR RRRgtmystrRb(RIR((RRcZs1cCsjg}|ii|o|i|}n|o5g}x$|D]}|iti	|q>W|Sn|S(s9return list of provides, requires, conflicts or obsoletesN(
tprcosRIRR(tprcotypet	printabletresultsR)R9tprco_tuple_to_string(RIRRRRR((Rt
returnPrcoasc
Csm|ii|pdSnt|i|djo ||i|jodSqnt|dp1hdd	<dd	<dd	<dd	<|_n|i|d	jot	|i||i|<n||i|jodSnt
o~|\}}\}
}}|d	j	o|i||SqixB|i|D]-\}}\}}	}||jodSq4q4WndS(
sBreturns 1 or 0 if the pkg contains the requested tuple/tuple rangeiiit_prco_lookupRRRRN(RIRR(Rtlent	prcotupleRnRfRtsetRtreqntreqftreqetreqvtreqrtinPrcoRangeRRtfRRR(
RIRRRRRRRRRRRR((Rt	checkPrcops*1

cCst|i||S(sreturns true if the package has a the prco that satisfies 
           the reqtuple range, assume false.
           Takes: prcotype, requested prco tupleN(R2RIt
matchingPrcosRtreqtuple(RIRR((RRscCs6|\}}\}}
}g}	x|i|D]\}}\}}
}||joq.n|djo
d}n|djo_|djoR|djo
|i}n|
djo
|i}
n|djo
|i}qntii|||||
|ff}|o#|	i||||
|ffq.q.W|	S(Nt=tEQR(RRRRRRtresultRIRRRRRRRRfRtvertrelR
RtrangeCompareR4R)(RIRRRRRRRRRRRRRR4((RRs&







''cCs|iS(sreturn changelog entriesN(RIR(RI((RtreturnChangelogsRcCs4|io&|ii|o|i|Sq0ngS(s"return list of files based on typeN(RIRR(tftype(RIR((RtreturnFileEntriess

cCs
|iiS(s,return list of types of files in the packageN(RIRR;(RI((RtreturnFileTypesscCs@g}|i|}x$|D]\}}}|i|qW|S(N(	RRIRRtlistsR tflagtvertupR)(RIRR RRRR((RtreturnPrcoNamesscCs tidtidd|iS(Ns<getProvidesNames() will go away in a future version of Yum.
Rzi(R{R|R}tYumDeprecationWarningRItprovides_names(RI((RtgetProvidesNamess	RcCs0|io"|ii|o|i|SngS(N(RIRR(R(RIR((RtsimpleFilessRcCs|iddS(NRR(RIR(RI((RRscCs|iddS(NRR(RIR(RI((RRscCs|iddS(NRR(RIR(RI((RRscCs
|idS(NR(RIR(RI((RRscCs
|idS(NR(RIR(RI((RRscCs
|idS(NR(RIR(RI((RRscCs
|idS(NR(RIR(RI((RRscCs
|idS(NR(RIR(RI((RRscCs
|idS(NR(RIR(RI((RRscCs
|idS(NR(RIR(RI((RRscCs
|idS(NR(RIR(RI((RRscCs|idtS(NR(RIRR(RI((RRscCs|idtS(NR(RIRR(RI((RRscCs|idtS(NR(RIRR(RI((RRscCs|idtS(NR(RIRR(RI((RRscCs
|iS(N(RIR(RI((RRscCs
|iS(N(RIR(RI((RRscCst|do|iSnt|doS|ioItii|i\}}}}}||ijo||_|Sq~n|i|_|iS(s\ Return the "base name" of the package, atm. we can only look at
            the sourcerpm. t_base_package_name_rett	sourcerpmN(
RnRIRRR
Rt
splitFilenameRRRRRR (RIRRRRR((Rt_getBaseNames$	cCs
|iS(N(RIR(RI((RRs('RMRNRORJRoRpRRcRRRRRRRRRRRRtfilelisttdirlistt	ghostlistRRRRRtrequires_namestconflicts_namestobsoletes_namestprovides_printtrequires_printtconflicts_printtobsoletes_printt	changelogtEVRRtbase_package_name(((RR7sF						"							RcBsVtZdZdZdZdZdZdZdZdZ	dZ
RS(	sB
    A comparable epoch, version, and release representation.
    cCs1||_||_||_||_||_dS(N(	RRIRRRRRRR(RIRRR((RRJs
				cCs7tii|i|i|if|i|i|ifS(N(R
RRRIRRRR`(RIR`((RtcomparescCs"|i|djotSntS(Ni(RIRR`RR(RIR`((Rt__lt__scCs"|i|djotSntS(Ni(RIRR`RR(RIR`((Rt__gt__scCs"|i|djotSntS(Ni(RIRR`RR(RIR`((Rt__le__scCs"|i|djotSntS(Ni(RIRR`RR(RIR`((Rt__ge__scCs
t||S(N(RRIR`(RIR`((RRo#scCs||jptSntS(N(RIR`RR(RIR`((RRp&s
(RMRNRORJRRRRRRoRp(((RRs							tYumAvailablePackagecBstZdZedZdZdZdZdZdZ	dZ
edd	Zee	Z
ee
Zd
ZeeZdZeeZdZeeZd
ZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"edZ#dZ$e%dZ&dZ'dZ(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 repositorycCsti|ti||i|_||_d|_t	|_
d|_|djo)|i
||i|_|i|_n|i|i|i|i|if|_dS(N(ReRJRIRR,R-RURftstateRt_loadedfilest_verify_local_pkg_cacheRtimportFromDictRRRRR RgRR(RIR,R((RRJ1s

				

cCs|iii|dS(sremove self from package sackN(RIR,R_RL(RI((RtexcludeAscCsJ|idjo d|i|i|if}nd|i|if}|S(sAreturns a printable version string - including epoch, if it's setRis%s:%s-%ss%s-%sN(RIRRRR(RIR((RtprintVerEs
 cCs#|i}d|i|i|fS(Ns%s.%s %s(RIRRR Rg(RIR((RtcompactPrintNscCs|iS(N(RItpackagesize(RI((Rt_sizeRscCs|iS(N(RItrelativepath(RI((Rt_remote_pathUscCsc|i}|o6|ddjo|d}nti||iSnti|iid|iS(sreturns 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.iRQiN(RItbasepathtbaseturlparseturljointremote_pathR,turls(RIR((Rt_remote_urlXs	RcCs
|iS(N(RIR(RI((RRdscCst|do|iSnd}t|ip|i|_|iSn|idd}||}ti	dd||_|iS(sDReturns the name of the last person to do a commit to the changelog.t_committer_retcCsNg}x8|D]0}t|djo
d}n|i|q
Wdi|S(s6 does .encode("ascii", "replace") but it never fails. iRRRSN(RltxtvalR\R)R](RRRl((Rt	_nf2asciins
iis> .*t>N(
RnRIRRRRtpackagerRR@tsub(RIRR((Rt
_committerhs		cCs]t|do|iSnt|ip|i|_|iSn|idd|_|iS(s5Returns the time of the last commit to the changelog.t_committime_retiN(RnRIRRRt	buildtime(RI((Rt_committimescCs|iddS(sReturns the 'default' checksumiiN(RIR(RI((Rt	_checksumscCss|idjodSnti|i\}}}}}|djo)t
|djodSnt|SndS(NRi(RIRRfRturlsplittschemetnetlocRWtquerytfragidRtint(RIRRRRWR((Rt
getDiscNums!
cCs4|i}tii}tii||}|S(N(
RItlocalPkgtrpmfileR
ttransactiontinitReadOnlyTransactionttsRthdrFromPackagethdr(RIRRR((RtreturnHeaderFromPackagescCs{tii|ioRy#ti|i}|d}Wqwti	t
fj
otidqwXn
tid|S(sTreturns an rpm header object from the package object's local
           header cacheisCannot open package headersPackage Header Not AvailableN(
RVRWtexistsRItlocalHdrtrpmtreadHeaderListFromFilethlistRterrort
IndexErrorR}t	RepoError(RIRR	((RtreturnLocalHeaderscCsGt|dp0tii|i}|iid||_	n|i	S(sBreturn path to local package (whether it is present there, or not)t	localpathRQN(
RnRIRVRWRXRtrpmfnR,tpkgdirR(RIR((RRs
cCsUt|dp>tii|i}|d d}|ii	d||_
n|i
S(sWreturn path to local cached Header file downloaded from package 
           byte rangesthdrpathis.hdrRQN(RnRIRVRWRXRtpkgnamethdrnameR,thdrdirR(RIRR((RRscCsyti|i}Wntj
o
}tSnXt|dok|i	oa|i	}|i|ijoA|i|ijo.|i
|i
jo|i|ijotSqn|i\}}yti||i}Wntij
otSnX||jotSn||_	tS(s^check the package checksum vs the localPkg
           return True if pkg is good, False if notRN(RVtstatRIRtnsttOSErrorRRRnRtosttst_inotst_devtst_mtimetst_sizeRRt	csum_typeRR9tchecksumtfilesumR}t	MiscError(RIRRRRRR((RtverifyLocalPkgs$		L	
	cCs&tidtiddti|S(s1convert the prco tuples into a nicer human strings9prcoPrintable() will go away in a future version of Yum.
RziN(R{R|R}RR9Rt	prcoTuple(RIR"((Rt
prcoPrintables	cCs|iS(s.return a list of requires in normal rpm formatN(RIR(RI((RtrequiresListscCs|i|idfgS(Ni(RIt
checksum_typetpkgId(RI((RRscCst|doI|i\}}}}}||_	||_
||_||_||_
nt|do$|id|_|id|_nt|do4|id|_|id|_|id|_nt|d	oe|iid
p
d-}n,|id
djo
d-}n|id
}||_|id|_nt|d
o$|id|_|id|_nt|dosx=ddddddddgD]}t|||i |qW|i!i"dd|_!|i#i$|i dnt|do]xZ|i%D]K}
|i%|
}|i%i|pg|i%|<n|i%|i$|
qWnt|dox|i(D]}x|i(|D]}|d}
d-}}}}|ido|d}n|ido|d}n|id o|d }n|id!o|d!}n|i(|i$|
||||ffqWqWnt|d"ox|i,D]}d-}	}}|id#o|d#}	n|id$o|d$}n|id%o|d%}n|i1i$|	||fq~Wnt|d&o|i2d'}|i2d$}|i2d(}|d-jp|i6d)jo
d*}n$|i6d+jo
d,}nd*}|i7i$|||fnd-S(.s^handles an mdCache package dictionary item to populate out 
           the package informationR&ttimetbuildRtsizetpackagetarchivet	installedtlocationRRSthrefthdrangetstarttendtinfotsummarytdescriptionRtgroupt	buildhostRturltvendors
tlicenseRRR tflagsRRRRtdatetvaluetauthorRttypetpkgidtNOitYESiN(8RnRR&RRRRRRIR RRRgRR'RtfiletimeR)Rtarchivesizet
installedsizeR-R(RfR7RRR/thdrstartthdrendR'tsetattrR2R3treplaceRR)RtfnRRtrtypetrdictRRtcdictR;ttextR=RRtctypeRRtupperRh(RIRRKRMRRR=RRNR;RIRRR RR7RLRJRR'RR((RRs				



	



2
!


 

cCs\tii|i}tii|i}dti	|dt
ti	|dt
f}|S(Ns$<location xml:base="%s" href="%s"/>
tattrib(RVRWtdirnameRIt
remote_urlRRXR.R9tto_xmlRtmsg(RIR.RRT((Rt_return_remote_locationQs.cCsd}}|iotiti|i}n|iotiti|i}n|id\}}}d|i
|i|i|i
|i||titi|ititi|i|||i|i|i|i|if}||i7}|S(NRSis3
  <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"/>
(RR7RIR9t
to_unicodeRSRRRRR RgRRRR3R4RBRRR)RCRTRU(RIR7RTRRRR((Rt_dump_base_itemsYs


cCszd}|io|dti|i7}n|d7}|io|dti|i7}n|d7}|io|dti|i7}n|d7}|io|dti|i7}n|d	7}|io|d
ti|i7}n|d|i	|i
f7}||id7}||i7}||id
7}||id7}||i
t7}|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:header-range start="%s" end="%s"/>RRRs
  </format>(RTRIR9R9RSR8R5R6RRERFt	_dump_pcot_dump_requirest_dump_filesR(RIRT((Rt_dump_format_itemsvs.









c
Csd}t||}|od|}nx|D]\}}\}	}}dt
i|dt}|o]|d|7}|	o|d|	7}n|o|d|7}n|o|d|7}qn|d	7}||7}q1W|o|d
|7}n|S(NRSs
    <rpm:%s>
s      <rpm:entry name="%s"RPs flags="%s"s epoch="%s"s	 ver="%s"s	 rel="%s"s/>
s
    </rpm:%s>(RTRRItpcotypetmylistR R:RRRR9RSRt	pcostring(
RIR\R^R]R RR:RRTR((RRXs(
cCssh}|djo|id}nx@|D]8}|djoq-nti|od||<q-q-W|iS(NRi(	treturnst
list_of_filesRfRIRR'R9tre_primary_filenameR;(RIR`R'R_((Rt_return_primary_filess

cCs\h}xI|idD]8}|djoqnti|od||<qqW|iS(NRi(R_RIRR'RfR9tre_primary_dirnameR;(RIR'R_((Rt_return_primary_dirss
cCsd}|p1|id}|id}|id}n4|i}|id|id}|i}x%|D]}|dt
i|7}qxWx%|D]}|dt
i|7}qWx%|D]}|dt
i|7}qW|S(	NRSRRRR`s    <file>%s</file>
s    <file type="dir">%s</file>
s!    <file type="ghost">%s</file>
(RTtprimaryRIRRtdirstghostsRbRdRIR9RS(RIReRRfRTRgRI((RRZs$cCs
tdS(N(tNotImplementedError(RI((Rt_requires_with_presc
Cs#|i}d}|o
d}nx|D]\}}\}	}}}|i
doq*ndti|dt
}|o]|d|7}|	o|d|	7}n|o|d|7}n|o|d	|7}qn|o|d
|7}n|d7}||7}q*W|o|d7}n|S(sreturns deps in formatRSs
    <rpm:requires>
srpmlib(s      <rpm:entry name="%s"RPs flags="%s"s epoch="%s"s	 ver="%s"s	 rel="%s"s	 pre="%s"s/>
s    </rpm:requires>N(RIRiR]RTR R:RRRtpret
startswithR9RSRt
prcostring(
RIRjR]R RlRR:RRTR((RRYs2

cCs|ipdSnd}|p
|i}n|i| }x[t|D]M\}}}|dt	i
|dtt	i
t|t	i
|f7}qFW|S(NRSs
s0<changelog author="%s" date="%s">%s</changelog>
RP(
RIRRTt
clog_limittclogstreversedRR=tcontentR9RSRRw(RIRmRnR=RRpRT((Rt_dump_changelogs



BcCsOd}|ti|i7}|ti|i7}|d7}ti|S(Ns
<package type="rpm">s
</package>(RTR9RVRIRWR[tto_utf8(RIRT((Rtxml_dump_primary_metadatas

cCs^d|i|i|i|i|i|if}|ti	|i
7}|d7}ti|S(NsV
<package pkgid="%s" name="%s" arch="%s">
    <version epoch="%s" ver="%s" rel="%s"/>
s</package>
(RIRR RgRRRRTR9RVRZRr(RIRT((Rtxml_dump_filelists_metadata
s.
icCs[d|i|i|i|i|i|if}|dti	|i
|7}ti|S(NsV
<package pkgid="%s" name="%s" arch="%s">
    <version epoch="%s" ver="%s" rel="%s"/>
s%s
</package>
(
RIRR RgRRRRTR9RVRqRmRr(RIRmRT((Rtxml_dump_other_metadatas. (-RMRNRORfRJRRRRRRRR)RRRRt	committerRt
committimeRRRRR
RRR!R#R$RRRURWR[RXRbRdRRZRiRYRqRsRtRu(((RR-sP									
		
					!				X			"		
					tYumHeaderPackagecBstZdZdZdZedZdZdZdZ	dZ
dZd	Zd
Z
ddZd
ZdZdZdZdZRS(s'Package object built from an rpm headercCsti||||_ti|id|_|id}|p
d}nti||_	ti|i
|_ti|id|_ti|id|_
|i|_|i
|_|i|i	|i|i|i
f|_|idpd|_ti|iidd|_|id	pd|_ti|i|_|iti|_|ip%d
|id|idf|_n|id|_h|_t|_d
S(sGhand in an rpm header, we'll assume it's installed and query from thereR RgtnoarchRRR3RSs
R4s%s.%sRR)N(RRJRIR,RR9t
share_dataR tthis_aRgtdoepochRRRRRRR3RHR4RtRPMTAG_SHA1HEADERR?Rt_YumHeaderPackage__mode_cacheRt _YumHeaderPackage__prcoPopulated(RIR,RR{((RRJ!s0	

'!
%	cCsb|idjo&d|i|i|i|if}n)d|i|i|i|i|if}|S(NRis%s-%s-%s.%ss%s:%s-%s-%s.%s(RIRR RRRgR(RIR((RRd>s&(cCs4|ip|it|_nti|||S(N(RIRt
_populatePrcoRRRRR(RIRR((RRGs


cCs|iS(N(RIR(RI((Rt_get_hdrMsc	CsWhdtid<dtid<dtid<dtid<}|i}x|D]}|ttd	|}t
ti|}|d
joqan|ttd
|}t
t
ii|}t
ti|}|ttd|}t
t
ii|}t
d|}||}t
tit||||i|<qaWd
S(s;Populate the package object with the needed PRCO interface.tOBSOLETERtCONFLICTRtREQUIRERtPROVIDERs
RPMTAG_%sNAMEsRPMTAG_%sFLAGSsRPMTAG_%sVERSIONcCs4ti|dti|dti|dfS(Niii(R9RzR(R((RRdsN(R9Rzttag2prcoRIRRttagRRR tmapRftlstR
RtflagToStringRtstringToVersiontversRtzipR(	RIRRRRRRRR ((RRPs$N
		
cCsTtidtiddyt||SWn#tj
otid|nXdS(Ns6tagByName() will go away in a furture version of Yum.
RzisUnknown header tag %s(	R{R|R}R~RRIRtAttributeErrorR (RIR((Rt	tagByNamejs	cCsB|ido'|idotd||fn|i|S(Nt__s%s has no attribute %s(tthingRkRYRRIR(RIR((Rt__getattr__rs cCs4|id}|djo
d}n
t|}|S(NRRi(RIRttmpepochRfRRw(RIRR((RR|{s



cCs|iS(N(RIR(RI((RR
scCs	|id}|id}|id}t|||}|ipx|D]\}}}|djp
|djo?|iidpg|id<n|idi
|qJn|ii|pti||i|<n|i|o<|iidpg|id<n|idi
|qJ|djo<|iidpg|id<n|idi
|qJ|d@o?|iidpg|id<n|idi
|qJn|iidpg|id<n|idi
|qJWt|_ndS(	Nt	filenamest	fileflagst	filemodesRSRRi@R(RIRRRRRt	filetupleRRItmodeRRfR(R)R~RtS_ISDIRR(RIRRRRRRRI((Rt
_loadFiless>




RcCs|iti||S(s"return list of files based on typeN(RIRRRR(RIR((RRs
cCstt|iddjoVtti|idddti|idddti|idddSngS(Nt
changelognameit
changelogtimeterrorsRHt
changelogtext(RRIRRR9RV(RI((RRs
!cCs
tdS(N(Rh(RI((RRscCs|idS(NR)(RIR(RI((RRscCs9|dj	o(|titiBtiB@odSq5ndS(sncheck the flags for a requirement, return 1 or 0 whether or not requires
           is a pre-requires or a notiiN(RRfRtRPMSENSE_PREREQtRPMSENSE_SCRIPT_PREtRPMSENSE_SCRIPT_POST(RIR((Rt_is_pre_reqs

cCs|iti}|iti}tt|}t|i
|}|iti}tt
|}|dj	ot||||}nti|}|S(s%returns requires with pre-require bitN(RIRRtRPMTAG_REQUIRENAMER tRPMTAG_REQUIREFLAGSRRRRRRjtRPMTAG_REQUIREVERSIONRRRfRR9RER](RIRjRR]R RR((RRis
(RMRNRORJRdRRRRRRR|R
RRRRRRRi(((RRxs"												$	
			
t_CountedReadFilecBs tZdZdZdZRS(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(tfpRIt	read_size(RIR((RRJs	cCs+|ii|}|it|7_|S(N(RIRtreadR)RlRR(RIR)Rl((RRs(RMRNRORJR(((RRs	t_PkgVerifyProbcBs#tZdZedZdZRS(s8 Holder for each "problem" we find with a pkg.verify(). cCs:||_||_d|_d|_||_||_	dS(N(
R>RIRTtmessageRftdatabase_valuet
disk_valuetftypest
file_typestfake(RIR>RTRR((RRJs					cCs,|djodSnhdd<dd<dd<dd<d	d<d
d<dd
<dd<dd<dd<dd<dd<dd<dd<}t||i||i}|pkxhdddgD]S}t||}t||}|djoqnt||}|oPqqWn|S(NiR>tsymlinkiRiR)ituserR5iRitgenchecksumitmtimeitmissingi	spermissions-missingi
Rit	missingokiRi
RRR(R`Rft	type2sortRkRIR>RltattrRRty(RIR`RRlRRR((RRas 


(RMRNRORRJRa(((RRsiiiiiiiR,tYumInstalledPackagecBs/tZdZdZgeeeedZRS(s2super class for dealing with packages in the rpmdbcCst}ti|||dS(N(t_installed_repotfakerepoRxRJRIR(RIRR((RRJsc3CsI	d}	htid<tid<tid<tid<}|ii	}!h}d}'t
ii|'}$d}ttdo:|iti}|o|tjot|}qqnx|!D]~}|\
}"}}.}
}-}*}+}}}}}}|oGt%}#x,|D]$}t(i(|"|ot)}#Pq
q
W|#pqqDng} |-ti+@o| i,d	n|-ti-@o| i,d
n|-ti.@o| i,dn|-ti/@o| i,dn|-ti0@o| i,d
n|-ti1@o| i,dn|-ti2@o| i,dn|o
d}n|ti4jod||jo| i,d||n| i,d|o#t6dd| dt)g||"<qqn|-ti2@o*|o#t6dd| dt)g||"<n|-ti2@o|oqn|-ti.@o*|o#t6dd| dt)g||"<n|-ti.@o|oqng}t
ii|"o3t
i8|"}&|&i:}t<i=|&t>i?d}tAiB|&t>iCd}(|.djo|.d@}.n|	|.}|	|&iF}/|tH@oB||/jo5t6dd| }||_J|/|_K|i,|n|djoy|/djol|tL@oa|!iM}0t
iO|"}||0jo5t6dd| }|0|_J||_K|i,|qnt)})d| jo
t%})n|/djo#|djot
i>|"i:}n|/djo
t%})nt)},|/djo
t%},n|)oS|tS@oH|&iT|
jo8t6d d!| }|
|_J|&iT|_K|i,|n|,oM|tU@oB||jo5t6d"d#| }||_J||_K|i,|n|,oM|tV@oB|(|jo5t6d$d%| }||_J|(|_K|i,|n|&iF}%d| jo|%d&M}%|.d&M}.n|,oP|tX@oE|%|.jo8t6d'd(| }|.|_J|&iF|_K|i,|n|)ot|$o|tY@p|o[|tZ@oPyt[i\||"}t)}2Wnt_i`j
o
t%}2nX|oH|tZ@o=|2o5t6d)d*| }||_Jd4|_K|i,|n|2o`||joS|$oLt
ib|'d+|"g\}
}}tf|}t[i\||}|ig}n|oT|tZ@oI|2oB||jo5t6d,d-| }||_J||_K|i,|qCn|)oP|tY@oE||jo8t6d.d/| }||_J|&i:|_K|i,|q,	nyt
i>|"t)}Wn8tij
o,}1t)}|1iktkiljo
t%}qnX|ot6d0d1| }nt6d2d3| }|i,||o|||"<qqW|S(5sverify that the installed files match the packaged checksum
           optionally verify they match only if they are in the 'pattern' list
           returns a tuple cCsti|odSnti|odSnti|odSnti|odSnti|odSnti|odSndS(	s5 Given a "mode" return the name of the type of file. Rt	directoryRtfifoscharacter devicesblock devices	<unknown>N(RtS_ISREGRRtS_ISLNKtS_ISFIFOtS_ISCHRtS_ISBLK(R((Rt_ftypestreplaceds
not installedswrong colort	netshareds/usr/sbin/prelinktmd5tRPMTAG_FILEDIGESTALGOt
configurationt
documentationRR9s
public keytREADMEs
missing okisstate=sstate=<unknown>Rsstate is not normalRRsmissing but oks
ghost fileiiR>sfile type does not matchRssymlink does not matchRRsmtime does not matchRsuser does not matchR5sgroup does not matchiRsmode does not matchRschecksum not availables-yRschecksum does not matchR)ssize does not matchRsfile is missingspermissions-missings#file is missing (Permission denied)N(mRRtRPMFILE_STATE_REPLACEDtRPMFILE_STATE_NOTINSTALLEDtRPMFILE_STATE_WRONGCOLORtRPMFILE_STATE_NETSHAREDtstatemapRIRtfiFromHeadertfiRtprelink_cmdRVRWRthave_prelinkRRnRtcsum_numtRPM_CHECKSUM_TYPESRRIR)RRR:tdevtinodetlinkRtvflagsRR5RtpatternsRR4tpR=RRtRPMFILE_CONFIGR)tRPMFILE_DOCt
RPMFILE_GHOSTtRPMFILE_LICENSEtRPMFILE_PUBKEYtRPMFILE_READMEtRPMFILE_MISSINGOKtalltRPMFILE_STATE_NORMALt
fake_problemsRtproblemstlstattmy_stRt
my_st_sizetpwdtgetpwuidRtST_UIDtmy_usertgrptgetgrgidtST_GIDtmy_groupRtst_modetmy_ftypet_RPMVERIFY_RDEVtprobRRt_RPMVERIFY_LINKTOtFLinktfnltreadlinktmy_fnlt
check_contenttcheck_permst_RPMVERIFY_MTIMERt_RPMVERIFY_USERt_RPMVERIFY_GROUPtmy_modet_RPMVERIFY_MODEt_RPMVERIFY_FILESIZEt_RPMVERIFY_DIGESTR9Rtmy_csumtgen_csumR}R Rftpopen3tigRterRRtperms_okRRterrnotEACCES(3RIRtdepstscriptRRRRRRRRRRR)R5RRRRRRR	RRRRRRRRR
RRRIR4RRRRRRRRRR:RRRRR((RtverifysL	
6
-	


		
				%
		





"										

	+
		!
&			

	
(RMRNRORJRRR(((RRs	tYumLocalPackagecBstZdZeedZdZdZedZeddZ	dZ
dZd	Zedd
Z
eddZd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}|djotidn|djotidnd|_||_d|_yt	i
i||i}Wn&t
j
otid|inXt|}d|_ti||||i|_ti|i|_t|id|_t|id|_|i|_|i|i|i|i|i f|_!d|_"d|_#t$i%d|_&d|_'d|_(dS(	NsANo Transaction Set Instance for YumLocalPackage instance creations;No Filename specified for YumLocalPackage instance creationtlocals!Could not open local rpm file: %siiiRS()RRfR}R tfilenameRItpkgtypeRRR
RRRt
RpmUtilsErrorRPRtcostRxRJR?R-RVRt_statRwRBRtisSrpmRgR RRRRt	_hdrstartt_hdrendR9t_default_checksumsR%t_reldirt_baseurl(RIRRRR((RRJs2

				'			cCs@|iddjp|idodSn|idSdS(Nt
sourcepackageiRtsrcRg(RIR(RI((RR8s'cCs|iS(N(RIR(RI((RR>scCsc|djotid}n|ip4ti||i|_||idfg|_n|iS(Nii(	R%RfR9RRIRRRRh(RIR%((Rt_do_checksumAs

RcCs
|iS(N(RIR(RI((RRJscCs|i|iS(N(RIRRh(RI((RRLs
cCstS(s5 don't bother "checking" the package matches itself. N(R(RI((RR!PscCs|io|io|i|ifSnt|id}|id|id}
t	i
d|
\}|id}	t	i
d|	\}|d}||}|d}
|
djod|
}
nd||
}|i||idd	|id}
t	i
d|
\}|id}	t	i
d|	\}|d}||d}||}|i||_||_||fS(sQtakes an rpm file or fileobject and returns byteranges for location of the headerRihis>IiiiipiN(RIRRtopenRtfotseekRtbinindextstructtunpacktsigindextbindatatsigdatatsigindexsizetsigsizetdisttoboundaryREthdrindexthdrdatathdrindexsizethdrsizeRFtclose(RIR)RFRER-R/R(R&R*R'R+R.R,R#R!((Rt_get_header_byte_rangeTs8








		cCs|idS(Ni(RIR1(RI((RRscCs|idS(Ni(RIR1(RI((RRscCs|ioQ|ii|io;|ii|id}|ddjo|d}qdn
|i}|io5dti|idt	ti|dt	f}ndti|dt	}|S(NRSiRQis$<location xml:base="%s" href="%s"/>
RPs<location href="%s"/>
(RIRRRkRHtrelpathRR9RSRRT(RIRTR2((RRUs 	
5(RMRNRORfRJRRRRRRR!R1RFRERU(((RRs&						0(3RORRVtos.pathR9R@R=RR{R
Rt
rpmUtils.archtrpmUtils.miscutilsRRR}RR$t	constantsRt
uses_fragmentR)RRRRRR*RGRHRPtobjectReRRRRxRRRRRRRRRRRRRR()R}RRR9RRRRRRxRR$RRRR@RRRHRRR{RGRRRRRRReRRR*RPRRRR=R
RVR((RRRs\								
										"9	1b/ 







	

Anon7 - 2021