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/sqlitesack.pyo
m
Pc@s*dkZdkZdkZdkZdklZlZlZlZdk	Z	dk
Z
dklZdk
ZdkZdkZdkZdklZdklZlZdkZdZdZdeeefdYZd	eifd
YZdZdZd
ZdZdZ dZ!dS(N(s
PackageObjectsRpmBasesYumAvailablePackages
parsePackages(s
executeSQL(s
seq_max_split(sto_utf8s
to_unicodecs;d}i|_i|_|iii|S(s8This decorator converts sqlite exceptions into RepoErrorcsy||SWn|tiij
oj}tidjo?t	|dot
it|i
qyt
it|nt
it|nXdS(Nitmessage(tfunctargstkwargstsqlutilstsqlitetErrortetsyst
hexversionthasattrtErrorst	RepoErrortstrR(RRR(R(t2/usr/lib/python2.4/site-packages/yum/sqlitesack.pytnewFunc*sN(RRt__name__t__doc__t__dict__tupdate(RR((RRtcatchSqliteException(s
cCs
ti|S(N(tmisct
share_datatvalue(R((Rt_share_data<stYumAvailablePackageSqlitecBstZdZeddZddZedZdZ	dZ
dZd	Zd
Z
ddZd
ZddZedZdZRS(NcCshdf<df<df<df<|_|i|_|i|_||_d|_t|_	d|_
|i||i
djo
d|_
n|i|_|i|_|i|_|i|i|i
|i|if|_d|_d|_dS(Nt	obsoletest	conflictstrequirestprovidest0(tselftprcotrepotsacktidtrepoidtNonetstatetFalset_loadedfilest_filest_read_db_objtdb_objtepochtpkgIdtversiontvertreleasetreltnametarchtpkgtupt
_changelogt_hash(RR!R+((Rt__init__@s -				

'	tfgetcCs
|iS(N(Rt
_loadFiles(R((Rt<lambda>YscCs/|o0y||SWq7ttfj
od	Sq7XnxZddddddgD]@}yt||t||WqPttfj
oqPXqPWxEdgD]:}yt||||Wqttfj
oqXqWy3t|d}||dt	f}|g|_Wnttfj
onXd	S(
swread the db obj. If asked for a specific item, return it.
           otherwise populate out into the object what existsR2R3R,R.R0tpkgKeyR-t
checksum_typeN(titemR+t
IndexErrortKeyErrorR%tsetattrRRR<tTruet	check_sumt
_checksums(RR+R=RBR<((RR*[s0
	
	cGs=t|i|d|i}|i}t||||S(s6 Exec SQL against an MD of the repo, return a cursor. tdbN(tgetattrRR"tMDR!tcachetcursortcurt
executeSQLtsqlR(RRFRKRRGRI((Rt_sql_MDws
cCs+hdd<dd<dd<dd<d	d
<dd<d
d<dd<dd<dd<dd<dd<dd<dd<dd<dd <}|id!o|id!o
t|n|}|i|o||}ny)|id"d#||i	fi
}WnDti
j
o5}t|id$ott|nnX|d%}|d&jo|djo
d'}n|d-jo|djo
d*}n|hdd+<dd+<dd+<dd+<dd+<d(d+<d)d+<dd+<d,d+<jot|}nt||||S(.Ntpackagesizetsize_packagetarchivesizetsize_archivet
installedsizetsize_installedt	buildtimet
time_buildthdrstarttrpm_header_startthdrendtrpm_header_endtbasepatht
location_basetrelativepatht
location_hreftfiletimet	time_filetpackagertrpm_packagertgroupt	rpm_groupt	buildhostt
rpm_buildhostt	sourcerpmt
rpm_sourcerpmtvendort
rpm_vendortlicensetrpm_licensetchecksum_valueR-t__tprimarys'SELECT %s FROM packages WHERE pkgId = ?sno such columniR,Rtsummarytdescriptiontiturl(RnRo(tdb2simplemaptvarnamet
startswithtendswithtAttributeErrortdbnamethas_keyRRLR-tfetchonetrRRRR
R?RR%RR@(RRsRRRzRrRw((Rt__getattr__s. 
	


^c	Cs|io|iSnh}|ii|idd|idd|if}x|D]}|d}t|d}t|d}xb|oZ|o|d|i}n
|i}t|i}|i|gi|qWqVWt|_||_|iS(Ntmdtypet	filelistssjSELECT dirname, filetypes, filenames FROM   filelist JOIN packages USING(pkgKey) WHERE  packages.pkgId = ?tdirnamet	filetypest	filenamest/(RR(R)tresultR"tpopulateR!RLR-RItobR~tdecodefiletypelistRtdecodefilenamelistRtpoptfilenameRtfiletypet
setdefaulttappendRA(	RRIRRRRR~RR((RR9s,
	
"		cCsg}|ip|iii|ipGy|ii|iddWqpti	j
o||_dSqpXn|i
dd|if}xT|D]L}|d}t|d}t|d}|i|t||fqW||_dSndS(NR|t	otherdatatothersoSELECT date, author, changelog FROM   changelog JOIN packages USING(pkgKey) WHERE  pkgId = ? ORDER BY date DESCtdatetauthort	changelog(RRR5R"totherdbRxR!RRRRLR-RIRtc_datetto_utf8tc_authortc_logRR(RRRIRRRR((Rt_loadChangelogs&
	
	
 	cCs|i|ifS(N(RR<R-(R((RtreturnIdSumscCs|i|iS(N(RRR5(R((RtreturnChangelogs
tfilecCs|iti||S(N(RR9tRpmBasetreturnFileEntriestftype(RR((RRs
cCs|iti|S(N(RR9RtreturnFileTypes(R((RRs
cCs4d}|id||i|f}td|S(Ns=SELECT name as fname FROM files WHERE pkgKey = ? and type = ?RmcCs|dS(Ntfname(tx(R((RR:s(RKRRLR;RRItmap(RRRIRK((RtsimpleFilesscCst|}t|i|tod|}|id||if}g|i|<xv|D]j}t|dt|dt|dt|dt|dff}|i|it|q\Wnt
i|||S(NsDSELECT name, version, release, epoch, flags FROM %s WHERE pkgKey = ?RmR2tflagsR,R.R0(Rtprcotypet
isinstanceRR ttupleRKRLR;RIRtprco_setRRt
returnPrcot	printable(RRRRIRRRK((RRs

J"cCsd}|id||if}g}x|D]}d}|diddgjo
d}nt	|dt	|d	t	|d
t	|dt	|df|f}|i|q.W|S(s%returns requires with pre-require bitsNSELECT name, version, release, epoch, flags,pre FROM requires WHERE pkgKey = ?RmRtpretTRUEit1R2RR,R.R0N(RKRRLR;RIRRRtlowerRRR(RRRIRRRKR((Rt_requires_with_pres
M(Rt
__module__R7tpropertytfilesR%R*RRLR{R9RRRRRRR'RR(((RR?s			3					tYumSqlitePackageSackcBstZdZdZedZdZdZdZedZ	dZ
dd	Zd
ZdZ
dZd
ZdZdZdZdZedZddZeedZedZdZdZeedZedZedZeedZ edZ!edZ"edZ#ed Z$eeeefd!Z%eeeefd"Z&egd#Z'ed$Z(d%Z)d&Z*d'Z+d(Z,ed)Z-eeeed*Z.eeeed+Z/ed,Z0eeeed-Z1eeed.Z2eeeeeed/Z3ed0Z4RS(1s~ Implementation of a PackageSack that uses sqlite cache instead of fully
    expanded metadata objects to provide information cCs}tii||h|_h|_h|_h|_t	|_
h|_hdh<dh<|_h|_
d|_dS(NRR(tyumRepotYumPackageSackR7RtpackageClasst	primarydbtfilelistsdbRtexcludestsett	_excludest
_all_excludest
_search_cachet_key2pkgR%t
_arch_allowed(RR((RR7!s						cGs7t||d|}|i}t||||S(s6 Exec SQL against an MD of the repo, return a cursor. RDN(
RERRFR!RGRHRIRJRKR(RRFR!RKRRGRI((RRL1s
cCs#d}|id||idS(s- Give a count of pkgIds in the given repo DB s!SELECT count(pkgId) FROM packagesRmiN(RKRRLR!Ry(RRFR!RK((Rt_sql_MD_pkg_num:scCst}x8|iiD]'\}}||ijot}PqqW|odSnd}x(|i
D]}|t|i
|7}q`Wt|dot|i
|Snd}d}x'|iD]}||id|7}qW||S(Nit
pkgobjlists!SELECT count(pkgId) FROM packagesRm(RAtall_excludedRRtitemsR!RGRR'texclude_numRtlenR
Rtpkg_numRKR(RRRGR!RRKR((Rt__len__?s(	

cCst|do
|`nt|do
|`nt|do
|`nh|_hdh<dh<|_tidS(Nt_memoize_requirest_memoize_providesRRR(	R
RRRRRRRtunshare_data(R((RtdropCachedDataUs


	cCs|ix;|ii|ii|iiD]}|iq4Wh|_h|_h|_h|_t	|_
h|_ti
i|dS(N(RRRtvaluesRRtdataobjtcloseRRRRRR(RR((RRcs
*					cCsdS(N((R((RtbuildIndexeststerrorcCsdS(N((Rtfailure((Rt
_checkIndexesyscCsa|ii|iph|i|i<nd|i|i|i<|ii|i|ifdS(Ni(	RRRxtobjR!R-RtaddR;(RR((Rt
delPackagescCsMt|i|<||ijo|i|=n||ijo|i|=ndS(s% Exclude all packages from the repo. N(RARRR!RR(RR!((Rt_delAllPackagess
cCsH||ijotSn||ijo||i|jotSntS(N(R!RRRARR-R'(RR!R-((Rt	_excludeds
$cCs+||ijotSn||f|ijS(N(R!RRRAR;R(RR!R;((Rt_pkgKeyExcludedscCs,|idj	o||ijotSntS(sB Test the arch for a package against the archlist we were passed. N(RRR%tpkgarchRAR'(RR((Rt_pkgArchExcludeds cCs)|i|i|ip|i|iS(N(RRtpoR!R;RR3(RR((Rt_pkgExcludedscCs|ii|ph|i|<n|i|i|pud}|id|||fi}|djo d||f}ti|n|i
|||i||<n|i|i||iodSn|i||S(s: Lookup a pkg by it's pkgKey, if we don't have it load it sRSELECT pkgKey, pkgId, name, epoch, version, release FROM packages WHERE pkgKey = ?Rms"pkgKey %s doesn't exist in repo %sN(RRRxR!R;RKRLRytdataR%tmsgRRtpcRR3(RR!R;RKRR((Rt
_packageByKeys!
!cCs~|i|dodSn|d|ii|hjo/|i||}||ii	|h|<n|i||dS(s= Like _packageByKey() but we already have the data for .pc() R3R;N(RRRR%RtgetR!RRRR;(RR!R;RR((Rt_packageByKeyDatas cCs|ii|o ||i|jodSq@ng|i|<|ii|ph|i|<n|djoti	d||fn|djo||i
|<nS|djo||i|<n5|djo||i|<nti	d||f|i|i
|dS(NsTried to add None %s to %stmetadataR}Rs&Sorry sqlite does not support %s in %s(RtaddedRxR!tdatatypeRRR%RRRRRR(RR!RRtcallback((RtaddDicts 




tlikecCs|i|dS(NR(Rt
searchPrcoR2(RR2t
query_type((Rt	searchAllscCs|djo
g}nx|D]}|i||doqn|o|i||d|}n|i
||d}|djoqn|i|qW|S(sB Takes a cursor and maps the pkgKey rows into a list of packages. R;N(tpkgsR%RIRRRR!t	have_dataRtpkgRR(RR!RIRRRR((Rt_sql_pkgKey2pos


cCsjd}d|jp
d|jo@d}|idd}|idd}|idd}n||fS(
s< Apply SQLite escaping, if needed. Returns pattern and esc. Rpt_t%s ESCAPE "!"t!s!!s!%s!_N(tesctpatterntreplace(RR((Rt_sql_escscCs|g}xo|D]g}d|jogSn|i|\}}|idd}|idd}|i||fq
W|S(s^ Converts patterns to SQL LIKE format, if required (or gives up if
            not possible). t[t*Rt?RN(trettpatternsRRRRRR(RRRRR((Rt
_sql_esc_globs
cCs9t}x,|iD]!}||ijot}PqqW|S(s6 Are we going to skip every package in all our repos? N(RAtskip_allRRR!RR'(RR!R((Rt	_skip_all
s
	cs |iogSntd}|ptiot	d}nddjod ng}	t|idjoNxK|i
iD]6\}}||ijoqn|i|ddqWnxO|iD]D}|id|}|id|}||jo
tiqqWx|iiD]\}}||ijoq4n|i}o
d	}
ntii}d
|}
t|d|
|fdf|i |||	d}|i"d
d|t|d|
|i |||	q4Wti#|	}	|	S(sYsearch primary if file will be in there, if not, search filelists, use globs, if possibletglobt=iRiR|R}RmRpsdirname = "%s" and sselect pkgKey from filelist where                     %s length(filetypes) = 1 and                     dirname || ? || filenames                     %s ?cs`|id}td|}oti|}ntd|}t
|S(NRcsd|fS(Ns%s/%s(R~tf(R(R~(RR:Pscs
|jS(N(R2R(R(R2(RR:Ts(RtsplitRRtfnsRtfnmatchtfilterR2tmatchesR(R~RRRR(R2R(R~Rtfilelist_globberNsRisselect pkgKey from filelist where                              %s length(filetypes) > 1                              and filelist_globber(dirname,filenames)N($RRRARt	querytypetstrictRtre_globR2R'RRRRRR!RGRRRtpri_pkgstfil_pkgsRRtrepRHRIt
dirname_checktostpathR~RJRRtcreate_functiontunique(RR2RR
RR~RIRRGRRR!RRR	((R2RRtsearchFilessT





	c
Cs|iogSng}t|djo|Sn|idd}|i|\}}d|d||f}x(|dD]}d||||f}qWxI|iiD]8\}	}|i}t|||i|	||qW|S(s7search arbitrary fields from the primarydb for a stringit's''s>select DISTINCT pkgKey from packages where %s like '%%%s%%'%s is%s or %s like '%%%s%%'%s N(RRRRtfieldstsearchstringRRRRKRRRRRGRHRIRJR(
RRRRIRRGRRRKR((RtsearchPrimaryFieldscs$

cCsL|iogSng}t|djo|Snt|tit|joh}xK|D]C}|i
||}
x(|
D] }|i
|dd||<qWqcWx:t|dtidtD]}|i|||fqW|Snd}d}g}
x|D]|}|idd}|i|\}}d	|d||f}x(|dD]}d
||||f}qWW|
i|qW|di|
|}	x|iiD]\}}|i"}t$||	xm|D]e}|i&||doqn|i'||d}|djoqn|i||d
fqWqW|S(ssearch arbitrary fields from the primarydb for a multiple strings
           return packages, number of items it matched as a list of tuplesiitkeytreverses*select pkgKey, SUM(cumul) AS total from ( s$)GROUP BY pkgKey ORDER BY total DESCRs''s@select pkgKey,1 AS cumul from packages where %s like '%%%s%%'%s s%s or %s like '%%%s%%'%s s UNION ALL R;ttotalN(*RRRRRt
searchstringst	constantstPATTERNS_MAXttotRRRRRtsortedtoperatort
itemgetterRARtunionstringtendunionstringtselectstsRRRRKRtjointtotalstringRRRRGRHRIRJRRRRR%(RRRR RRIRGRRR%R"RRRR!RKRRR#RR((Rt"searchPrimaryFieldsMultipleStringszsX
 "

c	Cs|iohSn|o
tnh}
x`|iiD]O\}}|i	}t|dx'|D]}|i
||doqkn|i|doqknt|dt|dt|dt|dt|df}t|dt|d	t|d
t|dt|df\}}}
}}	t|}t|||
||	ff}|
i|gi|qkWq?W|
S(
Nsselect packages.name as name,                packages.pkgKey as pkgKey,                packages.arch as arch, packages.epoch as epoch,                packages.release as release, packages.version as version,                obsoletes.name as oname, obsoletes.epoch as oepoch,                obsoletes.release as orelease, obsoletes.version as oversion,                obsoletes.flags as oflags                from obsoletes,packages where obsoletes.pkgKey = packages.pkgKeyR;R3R2R,R.R0tonametoflagstoepochtoversiontorelease(RRtnewesttNotImplementedErrorRRRRRGRHRIRJRRRRRtnRRtvRztvalRR(RR,RIR0RRRGRR.RzRRR/R((RtreturnObsoletess,

GV!cCsXxQ|iiD]@\}}|i}t|d|fx|D]
}|SqBWqWdS(Ns&select * from packages where pkgId = ?(
RRRRRGRHRIRJR-R(RR-RIRGRR((RtgetPackageDetailsscCsg}t|djo|Sntt|}x[|iiD]J\}}|i}t
|d|fx|D]}|i|qvWqCW|S(Nis(select * from packages where pkgId in %s(RRt
pkgId_listR
Rtpkgid_queryRRRRRGRHRIRJRR(RR3RGRIR4RRR((Rt_getListofPackageDetailssc
	CsCt|d|ph}x|iiD]\}}||ijoq*n|i	}t|d|x|D]}t
|dt
|dt
|dt
|dt
|dff}t
|}||df}t
|d	}	|	|f}|i|gi|qqWq*Wt|d||nt|d|S(
Nt	_memoize_sselect * from %sR2RR,R.R0iR;(R
RRtmemoizeRRRRGRRHRIRJRRR0RtpkgkeyRRR@RE(
RRRIR0RGRRR7RR8((Rt_search_get_memoizes$J!c	Cs|iohSnt|}|djo
d}nt|ttdt	fjo||t
ii|f}
n-t|ttfjo|||f}
nt|}t|
}
|i|i|
o|i||
Snh}to|ii}	t}n"g}	t}|i|}x|iiD]\}}||ijoq8nh}x_|i!||fgD]E}|\}}t
ii%|
|o|i&|gi'|qzqzWxd|i(D]V\}
}|i+||
oqn|i,||
}|djoqn|||<qWq8WxY|	D]Q\}}||ijoq5n|i.}t0|d||fh}x|D]}t|dt|dt|dt|dt|dff}t|}t
ii%|
|o!|i&|dgi'|qqWxd|i(D]V\}
}|i+||
oq,n|i,||
}|djoq,n|||<q,Wq5W|d	jp|dd
jo$|p||i||
<n|Snt1i2|pZx3|i3|dtD]}|ddfg||<qW|p||i||
<n|Snx|iiD]\}}||ijoqFn|i.}t0|d|fxl|D]d}|i+||doqn|i,||d}|djoqn|ddfg||<qWqFW||i||
<|S(
Nisselect * from %s where name=?R2RR,R.R0R;RRRs0select DISTINCT pkgKey from files where name = ?(5RRt
to_unicodeR2RR%ttypeR.R
tunicodetrpmUtilst	miscutilststringToVersiontreqRtlistRRRRxRRARRtprimarydb_itemsR'tpreloadR9R7RRGRttmpRRR8R0trangeCompareRRt	iteritemsR;thitsRRRRHRIRJRtre_primary_filenameRR(RRR2RR.RGRRDRIRBR@R7RCR;R8RGRR0RRR((Rt_search	s


"
!



J%


cCs|id|||S(NR(RRIR2RR.(RR2RR.((RtgetProvidesrscCs|id|||S(NR(RRIR2RR.(RR2RR.((RtgetRequiresuscCs|iogSng}t|doct|}xL|iD]A}	|	i|joqAn|i	|	oqAn|i
|	qAW|Snti}t||joGt}x-t||D]}|i|i|qWt|Sng}d}x|D]}|i
dqW|di|}xX|iiD]G\}}|i}
t|
|t||i||
|dtq>W|S(syreturn a list of packages matching any of the given names. This is 
           only a match on package name, nothing elseRs^select pkgId,pkgKey,name,epoch,version,release,arch
                      from packages where sname = ?s OR RN(RRt
returnListR
RtnamesRRR2RRRtPATTERNS_INDEXED_MAXtmax_entriesRt
seq_max_splitRtsearchNamesRAtpat_sqlstqsqlR$RRR!RGRHRIRJRRA(RRMR2R!RGRORRRSRLRRI((RRQxsB

		c	Cs|iogSnt|}t}d}ti|pt	}d}ng}xY|iiD]H\}}|i}t|d||f|f|i|||qcW|djo|Sn|ddjo%|pti|do|SnxS|iiD]B\}}|i}t|d||f|i|||q
Wti|o|oti|Sn|i|i|ti|S(	s?return list of packages having prcotype name (any evr and flag)RRs.select DISTINCT pkgKey from %s where name %s ?RiRs1select DISTINCT pkgKey from files where name %s ?N(RRR:R2RARRRRR'tresultsRRRRGRHRIRJRRRHRtextendR(	RR2RRRRGRTRRI((RRs8


.cCs|i|dS(s9return list of packages providing name (any evr and flag)RN(RRR2(RR2((RtsearchProvidesscCs|i|dS(s9return list of packages requiring name (any evr and flag)RN(RRR2(RR2((RtsearchRequiresscCs|i|dS(s:return list of packages obsoleting name (any evr and flag)RN(RRR2(RR2((RtsearchObsoletesscCs|i|dS(s@return list of packages conflicting with name (any evr and flag)RN(RRR2(RR2((RtsearchConflictsscCsdGHdfdY}|}|d|d|d|d|df|_||_|d	|_|o|Snhd
|d<d|d
<|_hd|d<dd<d|d<|_	hdd<d|d<d|d	<|_
hd|d<d|d<|_hd|d<d|d<d |d!<|_hd"|d"<d#|d#<d$|d%<d&|d'<d(|d)<d*|d+<d,|d,<d-|d.<d/|d0<|_
|S(1Nsdie die die die die db2classt	tmpObjectcBstZRS(N(RR(((RRZ
sR2R,R.R0R3R-tstartRVtendRXthrefR\RRptbaseRZtpkgidtYESR;R<tbuildRTRR^tpackageRNtarchiveRPt	installedRRRnRoR_R`RaRbRcRdReRfRqRgRhRiRj(RZtyRDtnevraRR"R-t
nevra_onlythdrangetlocationtchecksumttimetsizetinfo(RRDRgReRZ((Rtdb2classs	,	
#,,#0~cCs|ptii||||Sng}xR|ii	D]A\}}|i}t|d||i|||dtq:W|ptid|nti|S(NsYselect pkgId,pkgKey,name,epoch,version,release,arch from packages where name=? and arch=?RsNo Package Matching %s.%s(tnaTupRRtreturnNewestByNameArchRRtignore_casetallpkgRRRRGRHRIRJRRARtPackageSackErrorRtnewestInList(RRoRRqRGRIRrR((RRp scCs|iogSn|ptii||||Sng}xU|i	i
D]D\}}|i
}t|d|f|i|||dtqOW|ptid|nti|S(NsNselect pkgId,pkgKey,name,epoch,version,release,arch from packages where name=?RsNo Package Matching %s(RRR2RRtreturnNewestByNameRRqRrRRRRGRHRIRJRRARRsRRt(RR2RRqRGRrRRI((RRu6s
cCsO|iogggfSng}g}t|}x|D]}ti	|o&t
hdd<d|<}	|}n#t
hdd<d|<}	|}xs|i
iD]b\}
}|i}t||	|i|
|}t|o|i|n|i|qWq=Wti|}ti|}ti|}|||fS(NtopRtqR(RRtmatchedt
exactmatchRAtpkgspecst	unmatchedtpRRtPARSE_QUERYtquerytmatchresRRRRDRHRIRJRtpmatchesRtremoveRUR(RRzRIRR{RDR|RRyR~RRx((RtmatchPackageNamesOs0



cCs||djo
g}ng}dddddddg}t}x)|D]!}ti|ot	}PqEqEWt
i}|pdg}t
i
}nt||jo
g}n|o|i|}nXg}xH|D]@}ti|o|i|dfq|i|d	fqW|}xC|iiD]2\}}|djp||ijo	|i}d
}g}g}xk|D]c\}
}xT|D]L}	|o|id|	|fn|id|	|f|i|
qWq|W|ot#d
i$|}nt%|||xL|D]@}|i'||d|}
|
djoqn|i|
qWq.q.W|p
||_)n|S(smBuilds a list of packages, only containing nevra information. No
           excludes are done at this stage. R2tsql_nameArchtsql_nameVerRelArchtsql_nameVertsql_nameVerRelt	sql_envrat	sql_nevraRRs^select pkgId, pkgKey, name,epoch,version,release,arch 
                          from packagess%s LIKE ?%ss%s %s ?s OR R;N(*RR%RLRR't	need_fulltpatRtre_full_search_neededRARRtpat_maxRNRRqRRRDRRRRR!RGR$R#RHRIRSRRtpat_dataRtresttfieldt_FULL_PARSE_QUERY_BEGR$RJRRRR(RR$RRqRRRDRRIRRRGRRRRR!RSRRRRL((Rt_buildPkgObjListmsj

			



cCs|iogSnt|do
|i}n|i|||}t|do6|o/t|||dd}|d|d}ng}xV|D]N}|dj	o||ijoqn|i|oqn|i
|qW|S(sReturns a list of packages, only containing nevra information. The
           packages are processed for excludes. Note that patterns is just
           a hint, we are free it ignore it. RRsrepo-pkgkeyiiN(RRR
RRR$RRqt
parsePackagesRLRR%RR(RR$RRqRRRL((RtreturnPackagess&


cCsI|iogSng}t}
x.|||||fD]}
|
o
t}
q7q7W|
o|Snd}	xd|fd|fd|fd|fd|fgD]T\}}|oA|	ddjo|	d	||f}	q|	d
||f}	qqWxO|iiD]>\}}|i}t||	|i|||dtqW|S(
s6return list of pkgobjects matching the nevra requestedsGselect pkgId,pkgKey,name,epoch,version,release,arch from packages WHERER2R,R.R3R0itWHEREs AND %s = "%s"s
 %s = "%s"RN(RRRLRAtemptyR2R,R/R1R3targR'RwtcoltvarRRRRGRHRIRJR(RR2R,R/R1R3RRLRGRwRRRRRI((RtsearchNevras0
4
c	Cs|idjot||_n|ii||_td|}di|}x|i
iD]\}}|i}|iidpd|ijoqint}t|dx*|D]"}|d|jot}PqqW|p|i|dSqiqiWdS(sBexcludes incompatible arches - archlist is a list of compat archescCsd|S(Ns'%s'(R(R((RR:st,s-sourcetsrcs"SELECT DISTINCT arch FROM packagesiN(RRR%RtarchlisttintersectionRt	sarchlistR$t
arch_queryRRRRGRHRIR#RuR'thas_archRJtrowRAR(	RRRRIRRGRRR((RtexcludeArchss*$
	
(5RRRR7RRLRRRRRRRRRRRRRRR%RRR'RtstaticmethodRRRRRR&R1R2R5R9RIRJRKRQRRVRWRXRYRnRpRuRRRRR(((RRs^																			P6*i)V				B!cCs
di|S(NR(R$tfilenamelist(R((RtencodefilenamelistscCs|idd}|idS(Ns//R(tfilenamestringRR(R((RRscCsJd}hdd<dd<dd<}x|D]}|||7}q.W|S(NRpRRtdirtdtghosttg(Rt	ft2stringtfiletypelistR(RRRR((Rtencodefiletypelists!cCsDhdd<dd<dd<}g}|D]}|||q,~S(NRRRRRR(t	string2ftt_[1]tfiletypestringR(RRRR((RRs!s
select pkgKey from packages
where name %(op)s '%(q)s'
   or name || '.' || arch %(op)s '%(q)s'
   or name || '-' || version %(op)s '%(q)s'
   or name || '-' || version || '-' || release %(op)s '%(q)s'
   or name || '-' || version || '-' || release || '.' || arch %(op)s '%(q)s'
   or epoch || ':' || name || '-' || version || '-' || release || '.' || arch %(op)s '%(q)s'
   or name || '-' || epoch || ':' || version || '-' || release || '.' || arch %(op)s '%(q)s'
s
SELECT pkgId,pkgKey,name,epoch,version,release,arch,
  name || "." || arch AS sql_nameArch,
  name || "-" || version || "-" || release || "." || arch AS sql_nameVerRelArch,
  name || "-" || version AS sql_nameVer,
  name || "-" || version || "-" || release AS sql_nameVerRel,
  epoch || ":" || name || "-" || version || "-" || release || "." || arch AS sql_envra,
  name || "-" || epoch || ":" || version || "-" || release || "." || arch AS sql_nevra
  FROM packages
  WHERE
("R
tos.pathRRtpackagest
PackageObjectRtYumAvailablePackageRRRRRJtrpmUtils.miscutilsR=RRtyum.miscRPtyum.i18nRR:RRRRRRRRRRR}R(RRR:RRRRRRRRRJRRRRRRR}RRRRPRRR=RR
((RRs6						
				
									

Anon7 - 2021