403Webshell
Server IP : 182.53.201.61  /  Your IP : 216.73.217.175
Web Server : Apache/2.2.15 (Fedora)
System : Linux km10.dyndns.org 2.6.31.5-127.fc12.i686.PAE #1 SMP Sat Nov 7 21:25:57 EST 2009 i686
User : apache ( 48)
PHP Version : 5.3.3
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/python2.6/site-packages/yum/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python2.6/site-packages/yum/sqlitesack.pyc
7Jc@s~ddkZddkZddkZddkZddklZlZlZlZddk	Z	ddk
Z
ddklZddk
ZddkZddkZddkZddklZddklZlZddkZddkZdZdZdZd	Zd
ZdeeefdYZd
eifdYZdZ dZ!dZ"dZ#dZ$dZ%dS(iN(t
PackageObjecttRpmBasetYumAvailablePackaget
parsePackages(t
executeSQL(t
seq_max_split(tto_utf8t
to_unicodecs>fd}i|_i|_|iii|S(s8This decorator converts sqlite exceptions into RepoErrorcsy||SWn|tiij
oj}tidjo?t|dotit|i	qytit|ntit|nXdS(Nitmessage(
tsqlutilstsqlitetErrortsyst
hexversionthasattrtErrorst	RepoErrortstrR(targstkwargste(tfunc(s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytnewFunc+s(t__name__t__doc__t__dict__tupdate(RR((Rs2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytcatchSqliteException)s

cCs
ti|S(N(tmisct
share_data(tvalue((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_share_data=scCsm||jotS|ptS|o2|o+|ddjo|d|djotS||otStS(Nit?t*(R R!(tTruetFalse(tmatchtregexp_matchtn((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_parse_pkg_nAs
4
c		Cs|d}|p
td||jotS|oG|o@|ddjo/|d|djo|d|djotSd|jod||f|d<d||||f|d	<d
||f|d<d|||f|d
<d|||||f|d<d|||||f|d<nt||d|d	|d|d
|d|dg}||jotS|ptSx |D]}||otSq}WtS(NR&sNothing in epochiR R!tnameArchs%s.%ss%s-%s-%s.%stnameVerRelArchs%s-%stnameVers%s-%s-%st
nameVerRels%s:%s-%s-%s.%stenvras%s-%s:%s-%s.%stnevra(R R!(tAssertionErrorR"R#tset(	R$R%tdataRtvtrtaR&titem((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt
_parse_pkgMs2

*
!

	cCston|djo(t|||||||otSn|djo t|||dotSnp|djot|||otSnG|djoId	|jo"d
|d|||f|d	<n||d	jotSn|djoRd
|jo%d|d||||f|d
<nt|||d
otSn|djo|d|jotSnk|djoId	|jo"d
|d|||f|d	<n|d	|jotSn|djoLd
|jo%d|d||||f|d
<n|d
|jotSn|djo||djotSn|djo|d|jotSnn|djo|dotSnM|djo|dptSn,|djotStptd|dStS(NteqR$sname.eqs
name.matchR&sarch.eqs
arch.matchsnevr.eqtnevrs%s-%s:%s-%ssnevra.eqsnevra.matchR-s%s-%s:%s-%s.%ssname.insnevr.insnevra.ins	pkgtup.eqtpkgtups	pkgtup.intmarkedtwashedR!sBad excluder: (R6smatch(sname.eqs
name.match(sarch.eqs
arch.match(snevra.eqsnevra.match(R#R5R"R'R.tNone(texcluderR$R%R0RR1R2R3((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_excluder_matchlsf
	
	
	

"	

%	
	

"	

%	
	
	
	
	
tYumAvailablePackageSqlitecBseZdZeddZddZedZdZ	dZ
dZdZd	Z
d
dZdZd
d
ZedZdZRS(cCshdd6dd6dd6d	d6|_|i|_|i|_||_d|_t|_d|_	|i
||idjo
d|_n|i|_|i
|_|i|_|i|i|i|i
|if|_d|_d|_dS(
Nt	obsoletest	conflictstrequirestprovidest0(((((tprcotsacktidtrepoidtrepoR;tstateR#t_loadedfilest_filest_read_db_objtepochtpkgIdtversiontvertreleasetreltnametarchR8t
_changelogt_hash(tselfRHtdb_obj((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt__init__s&

				

'	tfgetcCs
|iS((t
_loadFiles(RW((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt<lambda>sc
Cs|o-y||SWq4ttfj
od	SXnxZddddddgD]@}yt||t||WqMttfj
oqMXqMWy@|d|_t|d}||dtf}|g|_Wnttfj
onXd	S(
swread the db obj. If asked for a specific item, return it.
           otherwise populate out into the object what existsRSRTRMRORQtpkgKeyRNt
checksum_typeN(t
IndexErrortKeyErrorR;tsetattrRRNR"t
_checksums(RWRXR4R^t	check_sum((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyRLs$
	
cGs=t|i|d|i}|i}t||||S(s6 Exec SQL against an MD of the repo, return a cursor. tdb(tgetattrRERHtcursorR(RWtMDtsqlRtcachetcur((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_sql_MDscCshdd6dd6dd6dd6d	d
6dd6d
d6dd6dd6dd6dd6dd6dd6dd6dd6dd 6}|id!o|id!o
t|n|}|i|o||}ny)|id"d#||ifi}WnDtij
o5}t	|id$ot
t	|nnX|d%}|d&jo|djo
d'}n|d-jo|djo
d*}n|h	d+d6d+d6d+d6d+d6d+d6d+d(6d+d)6d+d6d+d,6jot|}nt
||||S(.Ntsize_packagetpackagesizetsize_archivetarchivesizetsize_installedt
installedsizet
time_buildt	buildtimetrpm_header_startthdrstarttrpm_header_endthdrendt
location_basetbasepatht
location_hreftrelativepatht	time_filetfiletimetrpm_packagertpackagert	rpm_grouptgroupt
rpm_buildhostt	buildhostt
rpm_sourcerpmt	sourcerpmt
rpm_vendortvendortrpm_licensetlicenseRNtchecksum_valuet__tprimarys'SELECT %s FROM packages WHERE pkgId = ?sno such columniRMRCtsummarytdescriptiontiturl(RR(t
startswithtendswithtAttributeErrorthas_keyRkRNtfetchoneRRRR`R;RRa(RWtvarnametdb2simplemaptdbnameR2RR((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt__getattr__sR

 
	


c	Cs|io|iSh}|ii|idd|idd|if}x|D]}|d}t|d}t|d}xb|oZ|o|d|i	}n
|i	}t
|i	}|i|gi|qWqSWt
|_||_|iS(Ntmdtypet	filelistssjSELECT dirname, filetypes, filenames FROM   filelist JOIN packages USING(pkgKey) WHERE  packages.pkgId = ?tdirnamet	filetypest	filenamest/(RJRKREtpopulateRHRkRNtdecodefiletypelisttdecodefilenamelisttpopRt
setdefaulttappendR"(	RWtresultRjtobRRRtfilenametfiletype((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyR[ s,
	
"		cCsg}|ip|iii|ipDy|ii|iddWqmtij
o||_dSXn|idd|i	f}xT|D]L}|d}t
|d}t
|d}|i|t||fqW||_dSdS(NRt	otherdatatothersoSELECT date, author, changelog FROM   changelog JOIN packages USING(pkgKey) WHERE  pkgId = ? ORDER BY date DESCtdatetauthort	changelog(
RUREtotherdbRRHRRRRkRNRRR(RWRRjRtc_datetc_authortc_log((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_loadChangelog<s&
	
	
 	cCs|i|ifS(N(R^RN(RW((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytreturnIdSumUscCs|i|iS(N(RRU(RW((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytreturnChangelogXs
tfilecCs|iti||S(N(R[RtreturnFileEntries(RWtftype((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyR\s
cCs|iti|S(N(R[RtreturnFileTypes(RW((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyR`s
cCs4d}|id||i|f}td|S(Ns=SELECT name as fname FROM files WHERE pkgKey = ? and type = ?RcSs|dS(tfname((tx((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyR\gs(RkR]tmap(RWRRhRj((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytsimpleFilesdscCst|}t|i|tod|}|id||if}g|i|<xv|D]j}t|dt|dt|dt|dt|dff}|i|it|q\Wnti|||S(NsDSELECT name, version, release, epoch, flags FROM %s WHERE pkgKey = ?RRStflagsRMRORQ(	Rt
isinstanceRDttupleRkR]RRt
returnPrco(RWtprcotypet	printableRhRjRtprco_set((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyRis


"cCsd}|id||if}g}x|D]}d}|did
jo
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 = ?RRCtpretTRUEit1RSRRMRORQ(Ri(RkR]tlowerRR(RWRhRjRARRR((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_requires_with_preys


N(Rt
__module__RYtpropertytfilesR;RLRRkRR[RRRRRRR#RR(((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyR>s			3					tYumSqlitePackageSackcBseZdZdZedZdZdZdZdZ	edZ
dZd	d
ZdZ
dZd
ZdZdZdZdZdZdZdZedZedZdZdZd<dZddZd<edZ e!dZ"dZ#dZ$ed Z%eed!Z&ed"Z'ed#Z(eed$Z)ed%Z*ed&Z+ed'Z,ed(Z-d<d=d)Z.d<d>d*Z/egd+Z0ed,Z1d-Z2d.Z3d/Z4d0Z5ed1Z6ed<d<ed2Z7ed<d<ed3Z8ed4Z9d<d<ed5Z:ed6Z;d<d<ed7Z<d<d<ed8Z=d<ed9Z>ed<d<d<d<d<d:Z?ed;Z@RS(?s~ Implementation of a PackageSack that uses sqlite cache instead of fully
    expanded metadata objects to provide information cCstii||h|_h|_h|_h|_t|_t|_	h|_
hhd6hd6|_h|_h|_
h|_t|_d|_g|_h|_t|_dS(NRBRA(tyumRepotYumPackageSackRYt	primarydbtfilelistsdbRtexcludesR/t	_excludest_exclude_whitelistt
_all_excludest
_search_cachet_key2pkgt_pkgname2pkgkeyst_pkgtup2pkgst_pkgnames_loadedR;t
_arch_allowedt_pkgExcludert_pkgExcludeIdsR#t_pkgobjlist_dirty(RWtpackageClass((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyRYs&					
						cGs7t||d|}|i}t||||S(s6 Exec SQL against an MD of the repo, return a cursor. Rd(ReRfR(RWRgRHRhRRiRj((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyRkscCs#d}|id||idS(s- Give a count of pkgIds in the given repo DB s!SELECT count(pkgId) FROM packagesRi(RkR(RWRgRHRh((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_sql_MD_pkg_numscsYtdptio1tfdi}|_t_niS(s{ If the pkgobjlist is dirty (possible pkgs on it which are excluded)
            then clean it, and return the clean list. t
pkgobjlistcsi|S((t_pkgExcluded(R(RW(s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyR\s(RR.RtfilterRR#(RWtpol((RWs2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_clean_pkgobjlists
	
c	Cst}x8|iiD]'\}}||ijot}PqqW|odSt|dot|iSd}x(|iD]}|t|i|7}q~Wd}x'|iD]}||i	d|7}qW||S(NiRR(
R"RtitemsRR#RtlenRRR(RWtall_excludedRHRitexclude_numtpkg_num((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt__len__s&	

cCst|do
|`nt|do
|`nt|do
|`nt|_h|_h|_t|_	h|_
hhd6hd6|_ti
dS(Nt_memoize_requirest_memoize_providesRRBRA(RRRRR#RRRR/RRRRtunshare_data(RW((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytdropCachedDatas


				
cCs|ix;|ii|ii|iiD]}|iq4Wh|_h|_h|_h|_t|_t|_	h|_
g|_h|_t
|_tii|dS(N(RRtvaluesRRtcloseRR/RRRRRR#RRR(RWtdataobj((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyRs"
								cCsdS(N((RW((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytbuildIndexessterrorcCsdS(N((RWtfailure((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt
_checkIndexesscs|ii||f||ijof|i|i|ddj	o<|ii}tfd|}||ii<qndS(st Exclude a package so that _pkgExcluded*() knows it's gone.
            Note that this doesn't update self.exclude. cst|tjS((RF(R(tpo(s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyR\sN(RtaddRRR;RR8R(RWRHR]tpos((Rs2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt
_delPackageRKs
cCs|ii|iph|i|i<nd|i|i|i<|i|if|ijo |ii|i|ifn|i|i|it|_	dS(Ni(
RRRHRNR]RtdiscardRR"R(RWtobj((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt
delPackages cCskt|i|<||ijo|i|=n||ijo|i|=n||ijo|i|=ndS(s% Exclude all packages from the repo. N(R"RRRR(RWRH((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_delAllPackagess
cCsB||ijotS||ijo||i|jotStS(N(RR"RR#(RWRHRN((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt	_excluded%s
$cCs(||ijotS||f|ijS(N(RR"R(RWRHR]((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_pkgKeyExcluded.sc
Cs||f|ijotS|i||otS|idj	o%||ijo|i||tS|iptSh|id6|||||fd6td6}|i}|i}|i}|i}x|iD]\}	}
}}|	dj	o|	|i	joqn|
i
dd}
t|
djotptd|
qn|
\}}toq|djo;t
||||||||o|i||tSq|d	jo+t
||||||||oPqq|d
joC|doqt
||||||||ot|d<qq|djoC|dpqt
||||||||ot|d<qqtptd|
qW|ii||ftS(
s Main function to use for "can we use this package" question.
                . Tests repo against allowed repos.
                . Tests pkgKey against allowed packages.
                . Tests arch against allowed arches.
                . Tests addPackageExcluder() calls.
        R&R8R9t.iisBad excluder: texcludetincludetmarktwashN(RR#RR"RR;RRRRFtsplitRR.R=R(RWRHR]R&RR1R2R3R0RGR<R$R%texSPLITtexTtexM((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_pkgExcludedRKNEVRA4sZ 
0

"	
"	
"
"c	Cs4|\}}}}}|i|||||||S(sb Helper function to call _pkgRKNEVRAExcluded.
            Takes a repo, pkgKey and a package tuple(R
(	RWRHR]R8R&R3RR1R2((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_pkgExcludedRKTusc	CsW|d|d|d|d|df\}}}}}|i|||||||S(si Helper function to call _pkgRKNEVRAExcluded.
            Takes a repo, pkgKey and a dict of package dataRSRTRMRORQ(R
(	RWRHR]R0R&R3RR1R2((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_pkgExcludedRKD{s*cCs|i|i|i|iS(sR Helper function to call _pkgRKNEVRAExcluded.
            Takes a package object. (RRHR]R8(RWR((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyRscGs|dj	o||ijodSd}d}tonn|ido.t|djpt|di}n0|ido(t|djpt|d}n|ido]t|djpt|di}ti|ot	i
ti|i
}qn|idot|djptn]|idot|djptn/|id	ot|djptn|ii||||f|dj	ot|i|i|<ndS(
s Add an "excluder" for all packages in the repo/sack. Can basically
            do anything based on nevra, changes lots of exclude decisions from
            "preload package; test; delPackage" into "load excluder".
            Excluderid is used so the caller doesn't have to track
            "have I loaded the excluder for this repo.", it's probably only
            useful when repoid is None ... if it turns out utterly worthless
            then it's still not a huge wart. Ns.eqiis.ins.matchs.*s.markeds.washed(R;RR#RRR.RRtre_globtretcompiletfnmatcht	translateR$RR(RWRGt
excluderidR<RR$R%((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytaddPackageExcluders4#
c	Cs\|o|i||odS|ii|ph|i|<h|i|<n|i|i|pd}|id|||fi}|djo d||f}ti|n|o|i	|||odS|i
||}||i||<|ii|i
gi||i|i|dg}|i|n|i||S(s: Lookup a pkg by it's pkgKey, if we don't have it load it sXSELECT pkgKey, pkgId, name, epoch, version, release, arch FROM packages WHERE pkgKey = ?Rs"pkgKey %s doesn't exist in repo %sRSN(RR;RRRRkRRRRtpcRRR8R(	RWRHR]RRhR0tmsgRtpkgkeys((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt
_packageByKeys&
!
cCs|o|i|||odS||ijoh|i|<h|i|<n|d|ii|hjop|i||}||i||<|ii|igi	||i|i|dg}|i	|n|i||dS(s= Like _packageByKey() but we already have the data for .pc() R]RSN(
RR;RRtgetRRRR8R(RWRHR]R0RRR((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_packageByKeyDatas
 cCs|i|||odS||ijoh|i|<h|i|<n|d|ii|hjo|i||diS|d|d|d|d|dfS(sb Like _packageByKeyData() but we don't create the package, we just
            return the pkgtup. R]RSRTRMRORQN(RR;RRRR8(RWRHR]R0((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_pkgtupByKeyDatas
 cCsg}x|iD]y}|ii|hi|g}|pqnxA|D]9}|i||}|djoqLn|i|qLWqW|S(s2 Load all pkgnames from cache, with a given name. N(RRRRR;R(RWtpkgnametretRHRtpkgkeytpkg((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_packagesByNames
!
cCs|ii|o||i|jodSng|i|<|ii|ph|i|<n|djotid||fn|djo||i|<nS|djo||i|<n5|djo||i|<ntid||f|i|i	|dS(NsTried to add None %s to %stmetadataRRs&Sorry sqlite does not support %s in %s(
taddedRRR;RRRRRR(RWRHtdatatypeRtcallback((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytaddDicts 	




tlikecCs|i|dS(NRB(t
searchPrco(RWRSt
query_type((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt	searchAllscCs|djo
g}nxi|D]a}|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(R;RRR(RWRHRjtpkgst	have_dataRR((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_sql_pkgKey2pos


cCsjd}d|jp
d|jo@d}|idd}|idd}|idd}n||fS(	s< Apply SQLite escaping, if needed. Returns pattern and esc. Rt_t%s ESCAPE "!"t!s!!s!%s!_(treplace(tpatterntesc((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_sql_escscCsyg}xl|D]d}d|jogS|i|\}}|idd}|idd}|i||fq
W|S(s^ Converts patterns to SQL LIKE format, if required (or gives up if
            not possible). t[R!R-R R,(R2R/R(RWtpatternsRR0R1((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt
_sql_esc_glob*s
cCs9t}x,|iD]!}||ijot}PqqW|S(s6 Are we going to skip every package in all our repos? (R"R!RR#(RWtskip_allRH((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt	_skip_all9s
	cCsd}ti|p
d}ng}xj|iiD]Y\}}||ijoq6n|i}t|d||f|i|||q6Wti|S(Ntglobt=s1select DISTINCT pkgKey from files where name %s ?(	RR
RRRRfRR+tunique(RWRSt	querytypetresultstrepRiRj((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_search_primary_filesBs
cs|iogSt}td}tii|}tii||pti|ot}td}ntip
tn|ddjo|d }ng}ti	|o"ti|p|i
|Snt|idjoNxK|i
iD]6\}}||ijoq
n|i|ddq
WnxO|iD]D}|id|}	|id|}
|	|
jo
tiqUqUWg}d	}|pE|i\}
}d
|}|i||id|
dnpE|i\}
}d|}|i||id|
dnd
joxw|iiD]f\}}||ijoq^n|i}|i|t|d|f||i|||q^Wti|Sx|iiD]\}}||ijoqn|i}t|d||f|d|g|i|||otiti|nfd}|idd|t|d|||i|||qWti|}|S(sYsearch primary if file will be in there, if not, search filelists, use globs, if possibleR8R9iRiRRRRs(dirname = ? and filenames LIKE ? %s and R-s+dirname GLOB ? and filenames LIKE ? %s and R!sQSELECT pkgKey FROM filelist
                                   WHERE dirname %s ?sselect pkgKey from filelist where                     %s length(filetypes) = 1 and                     dirname || ? || filenames                     %s ?csi|id}pt|jStfd|}x#|D]}i|odSqFWdS(NRcsd|fS(s%s/%s((tf(tsql_dirname(s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyR\sii(RtintRR$(R@t
sql_filenamesRtfnsR$(Rtname_ret	file_glob(R@s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytfilelist_globbers	RFisselect pkgKey from filelist where                              %s length(filetypes) > 1                              and filelist_globber(dirname,filenames)(R7R"tostpathRtbasenameRR
R#tre_primary_filenameR>RRRRRRRRRR2RRfRR+R:RRRRtcreate_function(RWRStstrictR8R;RR)RHRitpri_pkgstfil_pkgst
sql_paramst
dirname_checkR0R1R=RjRF((RRDREs2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytsearchFilesRs











c
Cs|iogSg}t|djo|S|idd}|i|\}}d|d||f}x(|dD]}d||||f}qyWxI|iiD]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 (	R7RR/R2RRRfRR+(
RWtfieldstsearchstringRR1RhR?R=RiRj((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytsearchPrimaryFieldss"

cCs"|iogSg}|p|o|St|tit|joh}xK|D]C}|i||}x(|D] }|i|dd||<qyWqZWx:t|dtidt	D]}|i
|||fqW|Sd}d}	g}
x|D]|}|idd}|i|\}}d	|d||f}
x(|dD]}d
|
|||f}
qKW|
i
|
qW|di
|
|	}x|iiD]w\}}|i}t||xO|D]G}|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 DESCRRs''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(R7Rt	constantstPATTERNS_MAXRURtsortedtoperatort
itemgetterR"RR/R2tjoinRRRfRRR;(RWRSt
searchstringsRttotRTtmatchesRtunionstringtendunionstringtselectstsR1RhR?ttotalstringR=RiRjRR((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt"searchPrimaryFieldsMultipleStringssR
 "

c	Cs{|iohS|o
tnh}xH|iiD]7\}}|i}t|dx|D]}t|dt|dt|dt|dt|df}|i||d|oqhnt|dt|d	t|d
t|dt|df\}}	}
}}t|}t||	|
||ff}
|i|gi	|
qhWq<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.pkgKeyRSRTRMRORQR]tonametoflagstoepochtoversiontorelease(
R7tNotImplementedErrorRRRfRRRRR(RWtnewestR?R=RiRjRRVR&R?RR1R2tval((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytreturnObsoletess4





"!cCsUxN|iiD]=\}}|i}t|d|fx|D]}|SWqWdS(Ns&select * from packages where pkgId = ?(RRRfR(RWRNR=RiRjR((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytgetPackageDetails=scCsg}t|djo|Stt|}x[|iiD]J\}}|i}t|d|fx|D]}|i|qsWq@W|S(Nis(select * from packages where pkgId in %s(RRRRRRfRR(RWt
pkgId_listR)tpkgid_queryR=RiRjR((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_getListofPackageDetailsEs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 %sRSRRMRORQiR](RRRRRfRRRRRaRe(
RWRtmemoizeR=RiRjRRoRVR((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_search_get_memoizeUs(!cCs;|iohSt|}|djo
d}nt|ttdtfjo||tii|f}n-t|t	t
fjo|||f}nt|}t|}|i|i
|o|i||Sh}to|ii}t}ng}t}|i|}	x|iiD]\}
}|
|ijoq2nh}x_|	i|
|fgD]E}
|
\}}tii||o|i|gi|qtqtWxJ|iD]<\}}|i|
|}|djoqn|||<qWq2Wx?|D]7\}
}|
|ijoqn|i}t|d||fh}x|D]}
t|
dt|
dt|
dt|
dt|
dff}t|}tii||o!|i|
dgi|qhqhWxJ|iD]<\}}|i|
|}|djoqn|||<qWqW|d	jp|dd
jo!|p||i||<n|Sti|pWx3|i|dtD]}|ddfg||<qW|p||i||<n|Sx>|i|D]-}|ddfg||<||i||<qW|S(Nisselect * from %s where name=?RSRRMRORQR]RBRRL( R7RR;ttypeRtunicodetrpmUtilst	miscutilststringToVersionRtlistRRRR"RRR#RwRRtrangeCompareRRt	iteritemsRRfRRRJRQR>(RWRRSRROtreqRtprimarydb_itemstpreloadRvR=RittmpRRRoR]thitsRRj((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_searchls


"
!



%

cCs|id|||S(NRB(R(RWRSRRO((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytgetProvidesscCs|id|||S(NRA(R(RWRSRRO((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytgetRequiressc
Cs|iogSt|d}g}t|}g}xL|D]D}|p||ijo|i|i|q@|i|q@W|p|Sti}t	||jo5x-t
||D]}|i|i|qW|Sg}d}x|D]}	|idqW|di|}xR|i
iD]A\}
}|i}t||||i|
||dtq2W|iig}
|D]
}	|
|	q~
|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 R*(R7RR/RtextendRRRYtPATTERNS_INDEXED_MAXRRtsearchNamesR^RRRfRR+R"R(RWtnamestloaded_all_namest
returnListt
user_namesRtmax_entriestpat_sqlstqsqlRSRHRiRjt_[1]((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyRs@
	+c	Cs2|iogSt|}t}d}ti|pt}d}ng}xY|iiD]H\}}|i}t	|d||f|f|i
|||q`W|djo|Sti|p|S|i|i
|ti|o|oti|S|i|i|ti|S(s?return list of packages having prcotype name (any evr and flag)R8R9s.select DISTINCT pkgKey from %s where name %s ?RB(R7RR"RR
R#RRRfRR+tre_filenameRR>RJR:RQ(	RWRSRR8R;R<R=RiRj((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyR&s.


cCs|i|dS(s9return list of packages providing name (any evr and flag)RB(R&(RWRS((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytsearchProvidesNscCs|i|dS(s9return list of packages requiring name (any evr and flag)RA(R&(RWRS((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytsearchRequiresRscCs|i|dS(s:return list of packages obsoleting name (any evr and flag)R?(R&(RWRS((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytsearchObsoletesVscCs|i|dS(s@return list of packages conflicting with name (any evr and flag)R@(R&(RWRS((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytsearchConflictsZscCsdGHdd1dY}|}|d|d|d|d|df|_||_|d	|_|o|Sh|d
d6|dd
6|_h|dd6dd6|dd6|_hdd6|dd6|d	d6|_h|dd6|dd6|_h|dd6|dd6|d d!6|_h	|d"d"6|d#d#6|d$d%6|d&d'6|d(d)6|d*d+6|d,d,6|d-d.6|d/d06|_|S(2Nsdie die die die die db2classt	tmpObjectcBseZRS((RR(((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyRasRSRMRORQRTRNRttstartRvtendRzthrefRRRxtbasetYEStpkgidR^RxRrtbuildR|RRltpackageRntarchiveRpt	installedRRR~RRRRRRRRRRRR((	R-RERNthdrangetlocationtchecksumttimetsizetinfo(RWRdt
nevra_onlyRty((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytdb2class_s&	,	
&*'cCs|ptii||||Sg}xR|iiD]A\}}|i}t|d||i|||dtq7W|pt	i
d|nti|S(NsYselect pkgId,pkgKey,name,epoch,version,release,arch from packages where name=? and arch=?R*sNo Package Matching %s.%s(
RRtreturnNewestByNameArchRRRfRR+R"RtPackageSackErrorRtnewestInList(RWtnaTupR4tignore_casetallpkgR=RiRj((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyRwscCs|iogS|ptii||||Sg}xU|iiD]D\}}|i}t|d|f|i|||dt	qIW|pt
id|nti
|S(NsNselect pkgId,pkgKey,name,epoch,version,release,arch from packages where name=?R*sNo Package Matching %s(R7RRtreturnNewestByNameRRRfRR+R"RRRR(RWRSR4RRR=RiRj((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyRs
cCsD|iogggfSg}g}t|}x|D]}ti|o"thdd6|d6}|}nthdd6|d6}|}xs|iiD]b\}}	|	i}
t|
||i	||
}t
|o|i|n|i|qWq:Wti
|}ti
|}ti
|}|||fS(NR8toptqR9(R7R}RR
tPARSE_QUERYRRRfRR+RtremoveRR:(RWtpkgspecstmatchedt
exactmatcht	unmatchedtptquerytmatchresR=RdRjtpmatches((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytmatchPackageNamess0



c
Cs\|d
jo
g}ndddddddg}t}x)|D]!}ti|ot}Pq?q?Wti}|pdg}ti}nt||jo
g}n|o|i	|}ng}t}	xN|D]F}ti
|o|i|dft}	q|i|d	fqW|o |	o|o|||tfS|}|||tfS(szSetup need_full and patterns for _yieldSQLDataList, also see if
           we can get away with just using searchNames(). RStsql_nameArchtsql_nameVerRelArchtsql_nameVertsql_nameVerRelt	sql_envrat	sql_nevraR8R9N(R;R#Rtre_full_search_neededR"RYRZRRR5R
R(
RWRGR4RRSt	need_fulltpattpat_maxRt	need_glob((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_setupPkgObjLists>

				


ccsx|iiD]\}}|djp||ijo|i}d}g}	g}
xk|D]c\}}xT|D]L}
|o|	id|
|fn|	id|
|f|
i|qqWq^W|	otdi|	}nt|||
x|D]}||fVqWqqWdS(s^Yields all the package data for the given params. Excludes are done
           at this stage. s^select pkgId, pkgKey, name,epoch,version,release,arch 
                          from packagess%s LIKE ?%ss%s %s ?s OR N(	RRR;RFRfRt_FULL_PARSE_QUERY_BEGR^R(RWRGR4RSRRHRiRjRRtpat_dataR0tresttfieldR((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_yieldSQLDataLists*c
Csg}|i|||}|\}}}}|o|i|Sx`|i||||D]F\}	}
|i|	|
d|
}|djoq[n|i|q[W|o&|djo||_t|_n|o?|djo2|ii	g}|D]}||i
q~n|S(sjBuilds a list of packages, only containing nevra information.
           Excludes are done at this stage. R]N(RRRRR;RRR/RRRS(
RWRGR4RRR0RRSRRHRRR((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt_buildPkgObjLists$
	2cCs|iogSt|d}|o|i}n%|i|||}t|d}|o<|o5t}t|||dd}|d|d}n|djo|o|}n|Sg}x2|D]*}||ijoqn|i|qW|S(sReturns a list of packages, only containing nevra information. The
           packages are processed for excludes. Note that the packages are
           always filtered to those matching the patterns/case. RR:srepo-pkgkeyiiN(	R7RRRR#RR;RGR(RWRGR4Rtinternal_pkgoblistRRR((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytreturnPackagess.
	
c
Cs|iogSt|d}|otii|||Sd}g}|i|||}|\}}}}	x`|i||||D]F\}
}|i|
|d|}|djoqn|i	|qW|S(sReturns a list of pkg tuples (n, a, e, v, r), optionally from a
           single repoid. Note that the packages are always filtered to those
           matching the patterns/case. RR]N(
R7RRRt
simplePkgListR;RRRR(
RWR4RRRGRR0RRSRRHRR8((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyRBs$

c
Cs|iogSg}|ox|id|gD]}t}x`d|fd|fd|fd|fgD]4\}	}
|
o!t||	|
jot}PqlqlW|o|i|q5q5W|St}x.|||||fD]}|o
t}qqW|o|Sd}
xd|fd|fd|fd|fd|fgD]T\}	}
|
oA|
dd	jo|
d
|	|
f}
q|
d|	|
f}
qBqBWxO|iiD]>\}}|i}t	||
|i
|||dtqW|S(
s6return list of pkgobjects matching the nevra requestedRRMRORTRQsGselect pkgId,pkgKey,name,epoch,version,release,arch from packages WHERERSitWHEREs AND %s = "%s"s
 %s = "%s"R*(R7RR"ReR#RRRRfRR+(RWRSRMRPRRRTRRR$tcoltvartemptytargRR=RiRj((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytsearchNevra]sJ
	
c	Cs
|idjot||_n|ii||_td|}di|}x|iiD]\}}|i}|i	i
dpd|ijoqint}t|dx*|D]"}|d|jot
}PqqW|p|i|dSqiWdS(sBexcludes incompatible arches - archlist is a list of compat archescSsd|S(s'%s'((R((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyR\st,s-sourcetsrcs"SELECT DISTINCT arch FROM packagesiN(RR;R/tintersectionRR^RRRfRFRR#RR"R(	RWtarchlistt	sarchlistt
arch_queryR=RiRjthas_archtrow((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytexcludeArchss($
	
N(NNN(NNN(ARRRRYRRkRRRRRRRRRRRRR
RRRRR"RRRRR;R$R(R#R+tstaticmethodR2R5R7R>RQRURgRpRqRtRwRRRRR&RRRRRRRRRRRRRRR(((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyRs											
				A				&	
	
			y4%[-S				&#,cCs
di|S(NR(R^(tfilenamelist((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytencodefilenamelistscCs|idd}|idS(Ns//R(R/R(tfilenamestring((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyRscCsDd}hdd6dd6dd6}x|D]}|||7}q(W|S(NRR?Rtdtdirtgtghost((tfiletypelistRt	ft2stringR((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pytencodefiletypelistscCs>hdd6dd6dd6}g}|D]}|||q&~S(NRR?RRRR((tfiletypestringt	string2ftRR((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyRss
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
(&RGtos.pathRRtpackagesRRRRRRR	RtrpmUtils.miscutilsRzRYR\tyum.miscRtyum.i18nRRRRRRR'R5R=R>RRRRRRRR(((s2/usr/lib/python2.6/site-packages/yum/sqlitesack.pyt<module>sB"					D%					

Youez - 2016 - github.com/yon3zu
LinuXploit