Spade

Mini Shell

Directory:~$ /proc/self/root/usr/lib/python2.7/site-packages/yum/
Upload File

[Home] [System Details] [Kill Me]
Current File:~$ //proc/self/root/usr/lib/python2.7/site-packages/yum/yumRepo.pyc

�
8M�bc@s�ddlZddlZddlZddlZddlZejjd�ddlZddlZddl	m
Z
ddl	mZddlm
Z
ddlZddl	mZddlZddlZddlmZddlZddlZddlZddlmZdd	lmZdd
lmZddlmZddlTddlZddlZddl Z
ddl!Z!ddl"Z"ddl#Z#ddl$Z$ddl%Z%ddl&Z&e'Z(y9ddl)Z)e*e)d
�p�e*e)d�r�e+Z)nWne,k
r
e+Z)nXd�Z-d�Z.e!j/dej0�ej1d�Z2ej1d�Z3dej4fd��YZ5deej6fd��YZ7e+d�Z8dfd��YZ9dS(i����Ntmedia(t
URLGrabber(tdefault_grabber(t
format_number(tURLGrabError(t
Repository(tconfig(tmisc(tcomps(t_(t*tgettsetcCs3ts
dSytj|d|�}WndSX|S(Nsuser.yum.checksum.(txattrtNoneR(tfilenametchktypetret((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_xattr_get_chksumQscCs4ts
dSytj|d||�WntSXtS(Nsuser.yum.checksum.(R
RRtFalsetTrue(RRtchksum((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_xattr_set_chksum\stignores	yum.Repossyum.verbose.RepostYumPackageSackcBsteZdZd�Zd�Zd�Zd
d�Zd�Zdd
dd�Z	d	�Z
d
�Zd�Zd�Z
RS(s;imports/handles package objects from an mdcache
dict
objectcCs&tjj|�||_i|_dS(N(tpackageSacktPackageSackt__init__tpctadded(tselftpackageClass((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRos	cCsTy|j�Wn?tjk
rO}tjdt|�t|�|jf�nXdS(NsException %s %s in %s
ignored(tclosetErrorst	RepoErrortverbose_loggertdebugtreprtstrt__del__(Rte((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR'tscCs
i|_dS(N(R(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR
zsc
Cs�||jkr)||j|kr)dSnt|�}|dkrd}x||D]t}|d7}|rz|j|||�n||}|j||�}	||	_|j|j||	�|j|	�qNW||jkr�g|j|<n|j|jd�d|_	n�|dkr�||jkrRd|j|krRt
jd||jf�qRnd}xu|D]m}|d7}|r�|j|||�n||}||jkr_x%|j|D]}	|	j
|�q�Wq_q_W|j|j|�d|_	ndS(Ntmetadataiit	filelistst	otherdatas$%s
md for %s imported before
primary(R*R+(RtlentprogressbarRtidt_addToDictAsListtpkgsByIDt
addPackagetappendtindexesBuiltR!R"tui_idtimportFromDict(
Rtrepotdatatypetdataobjtcallbackttotaltcurrenttpkgidtpkgdicttpo((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytaddDict}sH


		


cCs�x�|D]�}||jj|g�kr.qn|dkrCd}n-|dkrXd}n|dkrd}nq|j||�r|j||�s�|j|dtdd	�q�qqWd	S(
s& Just schedule the metadata downloads R)t
primary_dbR*tfilelists_dbR+tother_dbtasynctfailfuncN(RRt_check_db_versiont_check_uncompressed_db_gent_retrieveMDRR(RR6tdatatitemtmydbtype((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_retrieve_async�s
			R)icCs�|dkrdddg}n	|g}t|d�s`tjd|jd|jd|�|_nx,|D]$}||jkr�||j|kr�qgq�n|dkr�d	}d
}|j}	|jj}
nc|dkr�d}d}|j	}	|jj
}
n3|dkrgd}d
}|j}	|jj}
nqg|j
||�r�|j||�}|sj|j||�}n|s�|j|�}|r�tj|jd|�|j||�}n|s�tjd|�q�n|jj|�}
n�t|_|	�}|d}tj||d|j�}|s3tjd|�n|}|jj|�}|j\}}|
||�}
|s�|j|||
|�n~
qgW|`dS(NtallR)R*R+tcacheHandlertstoredirtrepoidR9R@tprimaryRARBtothers/gen/%s.sqlites
%s: Check uncompressed DB faileds.xmltcacheds%s: Decompress DB
failed(thasattrtsqlitecachectRepodataParserSqlitetcachedirR.RMRt
getPrimaryXMLt
getPrimarytgetFileListsXMLtgetFileliststgetOtherXMLtgetOtherdataREt_check_uncompressed_dbRFRGRtunlink_fR!R"t
open_databaseRt_xml2sqlite_localtrepo_gen_decompresstcachetrepoXMLtgetDatatchecksumR?(RR6tmdtypeR9t	cacheonlyRHRIRJtmymdtypetrepo_get_functiontrepo_cache_functiontdb_un_fntdb_fntdobjtxmltgenRtxmldatatctypetcsum((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytpopulate�sn				
							
c
Cs�|jj|�}|j\}}tjj|�}|jd|}|d}|j||d|dt�spdSt
j||d|j�}	|	r�|j
|||	�SdS(s7return file name of db in
gen/ dir if good, None if
nott/s.sqliteRHtcheck_can_failRRN(RcRdtlocationtostpathtbasenameRVt_checkMDRRRRaRbt_check_uncompressed_db_fn(
RR6Rftmydbdatatr_basetremotetfnamet
compressed_fnRkR((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRFs
	c	Csl|jj|�}|j\}}tjj|�}|jd|}tj|dt	�}|j
|||�S(s8return file name of uncompressed db is good, None if
notRttfn_only(RcRdRvRwRxRyRVRt
decompressRR{(	RR6RfR|R}R~RR�Rk((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR]$scCsld}tjj|�rhy|j||dt�Wn*tk
r^|jsetj	|�qeqhX|}n|S(Ntopenchecksum(
RRwRxtexiststcheckMDRRRbRR^(RR6RfRktresult((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR{.s
		cCs
|j|�S(N(RE(RR6Rf((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRE>sN(t__name__t
__module__t__doc__RR'R
RR?RKRsRFR]R{RE(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRms			,	T		
	t
YumRepositorycBs	eZdZd�Zd�Zd�Zee�Zd�Zee�Z	d�Z
d�Zd�Zee�Z
d�Zd	�Zd
�Zd�Zdyedzd�Zd�Zd�Zd�Zd�Zd�Zed�Zd�Zd�Zed�Zd�Zd�Z
ed��Z!ed��Z"d�Z#d�Z$d�Z%d�Z&ed
��Z'ed!��Z(ed"�d#��Z)ed$�d%��Z*ed&�d'��Z+ed(�d)��Z,ed*��Z-d+�Z.d,�Z/d-�Z0d.�Z1d/�Z2ed0d1�d2d3�d4d5��Z3d6�Z4ed0d7�d2d8�d4d9��Z5d:�Z6dzdzdzdzdzdzdzdzd;edzd<�Z7e7Z8dzdzed=�Z9dzd;ed>�Z:d?�Z;d@�Z<dA�Z=edB�Z>dC�Z?dzdzdzdzdD�Z@dE�ZAdzdzdF�ZBdzdG�ZCdH�ZDdI�ZEdJ�ZFdzdK�ZGedL�ZHdM�ZIeJdN��ZKdzdzdO�ZLdP�ZMdzdQ�ZNdzdR�ZOedS�ZPdzdT�ZQdU�ZRdV�ZSdzdzdW�ZTdX�ZUdzdY�ZVdZ�ZWed0d[�d2d\�d4d]��ZXd^�ZYd_�ZZed`�Z[edzeda�Z\db�Z]edc�Z^dd�Z_de�Z`df�Zadg�Zbdzdh�Zcdi�Zddj�Zedk�Zfdzdl�Zgdm�Zhdn�Zidodzdp�Zjdq�Zkdr�Zlds�Zmdt�Zndu�Zodvdwgdx�ZpRS({so
    This is an actual repository object

    Configuration attributes are pulled in from config.RepoConf.
    cCs�tjj|�tj||�d|_g|_g|_d|_d|_	d|_
d|_i|_d|_
t|_d|_i|_i|_d|_d|_d|_t|_i|_d|_d|_d|_d|_d|_idd6dd6dd	6dd
6dd6dd6|_t|_d|_d|_
d|_!d|_"d|_#t|_$d|_%d|_&d|_'d|_(t)|_*d|_+d|_,d|_-t|_.dS(
Nis
yumgroups.xmlsrepodata/repomd.xmltcachecookieti�RPR*RQtgroupt
updateinfotprestodelta(/RtRepoConfRRRtrepofilet
mirrorurlst_urlstenablegroupstgroupsfilenamet
repoMDFilet_repoXMLt_oldRepoMDDataRbRt_retry_no_cachetmirrorlistparsedtyumvart_proxy_dicttmetadata_cookie_fnt_metadataCurrentt	_metalinktgroups_addedthttp_headerstrepo_config_agetbasecachedirtbase_persistdirtcostt
copy_localt	retrievedt_preloaded_repomdR9tmulti_callbacktfailure_objtmirror_failure_objtinterrupt_callbackt_callbacks_changedt	mediafunctgpg_import_functgpgca_import_functconfirm_funcRttimestamp_checkt_sackt	_grabfunct_grabt_async(RRO((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRHsV																																						cCs`|dkrdSt|d�r+|j}nd}t|j|�}|rM|St|j|j�S(s@
Sort yum repos. by cost, and then by alphanumeric on their id.
iR�i�N(RRSR�tcmpR.(RRQtocostR((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt__cmp__�scCs.|jdkr'tjtj�|_n|jS(N(R�Rt
sqlitesacktYumSqlitePackageSacktYumAvailablePackageSqlite(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_getSack�scCst|d�rt|d�Stj|�}|s:d}ng|\}}||}d|kri|d}n8d|kr�|d}nd|kr�|d}nd}|j}xE|jD]:}d||kr�|d7}|t|j|�7}q�q�Wt|d|�|S(s@
Show self.id, but include any $releasever/$basearch/etc. data.
t__cached_ui_idR�tmetalinkt
mirrorlisttbaseurlt$Rt(	RStgetattrRt_readRawRepoFileR.tui_repoid_varsR&R�tsetattr(Rtvaltinit
section_idRtvar((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_ui_id�s*
	



	
cCs0|jdk	r|jj�ntj|�dS(N(R�RtsackR
R(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR
�scCs
d|_dS(N(RR�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt
_resetSack�scCs|j�|jr|jSdS(N(tdoProxyDictR�R(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt__getProxyDict�s
	cCs|jS(s7Returns the instance of this repository's package
sack.(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytgetPackageSack�scCs
t|d�r|jdk	StS(s;Returns true if this repository is setup and ready
for
use.tmetadata_cookieN(RSRcRR(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytready�s
cCsCd|jj�kr*|jjd�}n|jjd�}|jS(s"Returns
the location of the
group.tgroup_gzR�(Rct	fileTypesRdRv(Rtthisdata((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytgetGroupLocation�scCs|jS(N(R.(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt__str__�siicCs�ytj||||�SWn`tjtfk
r|}|r?dSd|}t|tj�rjt|�}ntj	|��nXdS(s�takes
filename, hand back Checksum of it
           sumtype = md5 or sha
           filename = /path/to/file
           CHUNK=65536 by defaults#Error opening file for checksum: %sN(
RReR!t	MiscErrortEnvironmentErrorRt
isinstancetFIPSNonCompliantErrorR&R"(RtsumtypetfiletCHUNKtchecksum_can_failtdatasizeR(tmsg((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt	_checksum�s
c!Cs�d|j}d(}x�t|�D]�}|jd#�r;q n||krMq
ntt||�tj�rnq
nt||�}|r�t|�tt�td$�fkr�d%}nt|�tj	kr�d&j
|�}n|d'||f}q W|S()Ns[%s]
R�R�t
metalink_datatgrabtgrabfuncRctcfgR�R�R�R�R�R9R�R�R�R.R�R�R�R�R�R�R�R�tquick_enable_disableR�R�turlsR�R�R�R�R	iR�s,
   s%s = %s
(!s	mediafuncssacks
metalink_datasgrabsgrabfuncsrepoXMLR�s	retrievedsmirrorlistparsedsgpg_import_funcsgpgca_import_funcsfailure_objscallbacksconfirm_funcsgroups_addedsinterrupt_callbacksidsmirror_failure_objsrepo_config_agesgroupsfilenames
copy_localsbasecachedirshttp_headerssmetadata_cookiesmetadata_cookie_fnR�s
repoMDFilestimestamp_checksurlss
mirrorurlssyumvarsrepofilesmulti_callback(R.tdirt
startswithR�R�ttypest
MethodTypettypeRtListTypetjoin(Rtoutputt
excluded_varstattrtres((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytdump�s4
+	cCso|j�ytj|ddg�WnDtk
rj}|jtjkrXtj|�qktt|��nXdS(s%Persistently enables
this
repository.tonlytenabledN(	tenableRtwriteRawRepoFiletIOErrorterrnotEACCEStloggertwarningR&(RR(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytenablePersistents
cCso|j�ytj|ddg�WnDtk
rj}|jtjkrXtj|�qktt|��nXdS(s&Persistently
disables this
repository.R�R�N(	tdisableRR�R�R�R�R�R�R&(RR(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytdisablePersistent"s
cCs9t|j�dkr5|jr5tjd|j�ndS(shself-check the
repo information  - if we don't have enough to move
           on then raise a repo erroris(Cannot find a valid baseurl for
repo:
%sN(R,R�tmediaidR!R"R4(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytcheck-scCs|jr
dSi|_d}d
}|j|kr:d}n�|jr�d|j}|j|kr�tj|j�}|j|kr�|dtj|j�7}ntjd|�j	�\}}d|||f}q�n|dk	r
||jd<||jd<||jd	<ndS(Nt_none_R�s%st:s(\w+://)(.+)s%s%s@%sthttpthttpstftp(NRR�(
R�Rtproxytproxy_usernameturllibtquotetproxy_passwordtretmatchtgroups(Rtproxy_stringtemptytauthtprototrest((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�4s&				


cCs]g}x+|jD]
}|j||j|f�qW|pFd|jksY|jd�n|S(sAConvert our dict of
headers to a list of 2-tuples for
urlgrabber.tPragmasno-cache(Rsno-cache(R�R2(RRbtheaderstkey((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt__headersListFromDictMscCs'tjdtjdd�|j�dS(Ns5setupGrab()
will go away in a future version of Yum.
t
stackleveli(twarningstwarnR!tYumFutureDeprecationWarningt
_setupGrab(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt	setupGrabXs	cs��jdkrtjj}ntjj}�j�}td�jd�jd�j	d�j
d�jdd|��_�fd	�}�j
}�jr�t||�}n�fd
�}|�j|d|��_dS(s_sets up the grabber functions with the
already stocked in urls for
           the mirror groupst
roundrobintprogress_objtmulti_progress_objtfailure_callbackR�R�tregettsimplecs|tj|�jjd�d}�jjj|�}|rxitj|�d6i|j	d6|j
d6|jd6d6}n|S(Nt@i����tmirrortmax_connectionst
preferencetprivatetkwargs(turlparseturlsplittnetloctsplitR�t_host2mcRRtto_utf8R'R(R)(turlthosttmc(R(s//usr/lib/python2.7/site-packages/yum/yumRepo.pytadd_mcns

c	s�i}|j}|jdksE|jdkr�t|dd�dkr�t|d�j�}|�jt�j�kr�t|d<q�n|jd	kr�t|d
<n�j}|r�t	|�r�|difp�|\}}}|j
||||��n|S(
Niitcodeiii�ttriestremovei����tfail(ii�((t	exceptionR�R�tretriesR,R�RRR�tcallabletupdate(tobjtactionR(R6tcbtfuntargtkarg(R(s//usr/lib/python2.7/site-packages/yum/yumRepo.pytmirror_failures	'
	*N(tfailovermethodt
urlgrabberR&t
MGRandomOrdertMirrorGroupt_default_graboptsRR9R�R�R�R�R�R�R�tmapR�(RtmgclasstugoptsR4R�RC((Rs//usr/lib/python2.7/site-packages/yum/yumRepo.pyR]s$				
		cCs�i|jd6|jd6|jd6|jd6|jd6|jd6|jd6t|jd|��d	6|j	d
6|j	d6|j
d6|jd
6|jd6t
jjd6|jd6|jd6|jd6}|jdkr�t|d<n
|j|d<|S(Nt	keepalivet	bandwidthtretrytthrottlettimeouttminratet
ip_resolveRbR�tssl_verify_peertssl_verify_hosttssl_ca_certtssl_certtssl_keyt
user_agenttusernametpasswordtftp_disable_epsvtlibproxytproxies(RLRMR:RORPRQRRttuplet#_YumRepository__headersListFromDictt	sslverifyt	sslcacertt
sslclientcerttsslclientkeyRtoptsRXRYRZR[RRt
proxy_dict(RRbRd((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRH�s*

















cCs0|js|jr)|j�t|_n|jS(N(R�R�RR(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_getgrabfunc�s
cCs0|js|jr)|j�t|_n|jS(N(R�R�RR(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_getgrab�s
cCs
|j�S(N(Rf(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt<lambda>�scCs
|j�S(N(Rg(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh�scCs{tjj|�r(tjj|�r(dSytj|dd�Wn5tk
rv}dd|d|f}tj|�nXdS(s@make the necessary directory path,
if possible, raise on failureNtmodei�s
%s: %s %s: %ssError making
cache directorys	error
was(RwRxR�tisdirtmakedirstOSErrorR!R"(RtdpathR(R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_dirSetupMkdir_p�s$c	Cs�tjj|j|j�}tjj|j|j�}tjj|d�}tjj|d�}|jd|�|jd|�|jd|�|jd|�d}tj�dkr�d	}n|jd
|d|�|jd|d
|�|jd|j	}|jd|�x1|j|jd|j
gD]}|j|�q2Wx>|jgD]0}y|j|�WqVt
jk
r�}qVXqVW|jd�r�t|_n|jd�|jd�|jd�dS(s6make
the necessary dirs, if possible, raise on
failuretpackagesRt_dir_setup_cachedirt_dir_setup_pkgdirt_dir_setup_hdrdirt_dir_setup_persistdirR�is-rot_dir_setup_gpgdirs/gpgdirt_dir_setup_gpgcadirs	/gpgcadirRtt_dir_setup_metadata_cookies/gens
repomd.xmlR�smirrorlist.txtsmetalink.xmlN(RwRxR�R�R.R�tsetAttributetgeteuidRVR�tpkgdirRnt
persistdirR!R"t_preload_md_from_system_cacheRR�(	RRVRzRythdrdirtexttcookieR�R(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytdirSetup�s6	#

cCs3d|}t||�s&|j�nt||�S(s;
Make the directory attributes call .dirSetup() if needed.
t_dir_setup_(RSRR�(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_dirGetAttr�s

cCs�d|}t||�s&|j�n|dkrit|d�sMg|_n|jjt||��nt|||�}|dkr�|j|�n|S(s;
Make the directory attributes call .dirSetup() if needed.
R�Rqt_old_pkgdirs(s_dir_setup_pkgdir(RSRR�R2R�R�Rn(RR�R�R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_dirSetAttr�s

cCs
|jd�S(NRV(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh	scCs
|jd�S(NRz(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh
scCs
|jd�S(NRy(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhscCs|jd|�S(NRy(R�(Rtx((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh
scCs
|jd�S(NR|(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhscCs|jd|�S(NR|(R�(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhscCs
|jd�S(Ntgpgdir(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhscCs|jd|�S(NR�(R�(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhscCs
|jd�S(Ntgpgcadir(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhscCs|jd|�S(NR�(R�(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhscCs
|jd�S(NR�(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhscCs'tjdtjdd�|j�dS(Ns8baseurlSetup()
will go away in a future version of Yum.
Ri(RRR!Rt
_baseurlSetup(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytbaseurlSetups	cCsF|jr
dS|jsdS|jjd�dkr6dS|j|_dS(NR�i����(R�R�tfind(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_hack_mirrorlist_for_anacondas		c	Cs�|j|j�|_|j|_g}|j�|jrl|jrl|jt|jj	���t
|_n|jr�|jr�|j|j��t
|_n|j|�|_
|j|j
|_t|j�dkrlt|d�rltjj|j�rl|jsiytj|j�Wn3ttfk
rN}tjd|j|f�qfXtjd|j�qiqln|j|_|j�dS(s�go
through the baseurls and mirrorlists and populate self.urls
           with valid ones, run  self.check() at the end to make sure it
workeditmirrorlist_files-Could not delete bad mirrorlist file: %s -
%ss-removing mirrorlist with no valid mirrors:
%sN(t_replace_and_check_urlR�t
_orig_baseurlR�R�R�textendtlistR�R�RR�t_getMirrorListR�R�R,RSRwRxR�R�RbRR^R�RlR�terrorR�R(RR�R(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�*s,
$	cCs
g}d}x�|D]�}|dkr+qntj||j�}|ddkr]|d}ny%tj|�\}}}}}	}
Wn"tttfk
r�}d}nX|dkr�|}qq|j|�qW|dk	r|r�t	j
d	tj|��qt	j
d
tj|��n|S(
NR�i����RttblahRRR�RsMYumRepo
Warning: Some mirror URLs are not using ftp, http[s] or file.
 Eg. %ssJYumRepo Error: All mirror URLs are not using ftp, http[s] or file.
 Eg. %s(R�N(shttpsftpsfileshttps(Rtparsert
varReplaceR�R+t
ValueErrort
IndexErrortKeyErrorR2R�R�RR0R�(Rturl_listtgoodurlstskippedR1tstbtptqtftoR(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�Ns*

%
cCs|js|j�n|jS(N(R�R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_geturlsls	
tfgetcCs
|j�S(N(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhqstfsetcCst|d|�S(NR�(R�(Rtvalue((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhrstfdelcCst|dd�S(NR�(R�R(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhsscCs�|js�|jdd|_|jd}|j�stj|j�}|jd|jdk�}y8t	d|j
|�}|j||dd|j�}Wqt
k
r}tjj|j�s�d	|j}tj|�ntjd
||jdtj|jd�f�t|_qXn|js�y)tj|�|_tj||j�Wq�tjk
r�}tjd
||f�t|_tj|�q�Xn|jr�tj|j�|_q�n|jS(NRtsmetalink.xmls.tmpRbRLR
ttexts%s/metalinksQCannot retrieve metalink for repository: %s. Please
verify its path and try agains*Could not get metalink %s error was
%s: %siis)Could not parse metalink %s error was 
%s(R�RVtmetalink_filenamet_metalinkCurrentRR0R�RHthttp_cachingRR9turlgrabR4RRwRxR�R!R"R�R�targst
to_unicodeRR�tMetaLinkRepoMDtshutiltmovetMetaLinkRepoErrorParseFailR^(RtlocalR1RKtugR�R(R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_getMetalinkus6	
#
1			cCs
|j�S(N(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh�scCst|d|�S(NR�(R�(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh�s	cCst|dd�S(NR�(R�R(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh�scCsZ|r"|jd�p!|jd�S|js/tSx$|jD]}|j|�s9tSq9WtS(NRtsfile:(R�R�Rt_all_urls_are_filesR(RR1((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR��s	R$cKs|dkr|j}n|dks0|dkrFtjd|j�n|jdkr�tjj|�rk|Stjd||jf�n|r�t	j
|�\}
}}}}n|jr�|jr�d}|r�|
dkr�|r�t
|�}q�ny\|jd|d|d|d|d	|d
|d|jd|jd
|d||f�
}|SWq�tjk
r~}tjtjd|f�q�Xn|r|s�|j|�rtjtjj|��}|j|j}|t|�krtjtd�tjj|�t|�tt|��f�qn|r,|
dkr,|jd|
�}td|jd	|d|	d|jd|j
d|d|d|j!|�}|d|}y:|j"t#j$|�|dt#j$|�d||f�}Wqt%k
r(}|j&||�d|||f}tj|�}||_'|�qXn�t(|j)d|
��}yg|j*j"t#j$|�|dt#j$|�d||fd	|d|	d|d|d|d|j!|�}Wnit%k
r}|j&||�d|||f}t+|dd�}tj,||�}||_'|�nX|S(s�retrieve
file from the mirrorgroup for the repo
           relative to local, optionally get range from
           start to end, also optionally retrieve from a specific
baseurls/get request for Repo %s, gave no source or destis0Caching enabled
but no local cache of %s from
%sRR�t	checkfunctrelativeR�R�R1Rtnametdiscnumtranges8Error
getting package from media; falling back to url %ssKInsufficient space in
download directory %s
    * free   %s
    * needed %sRbR R#R"R�tsizetretry_no_cacheRts*failed to
retrieve %s from %s
error was %sR�sfailure: %s from %s:
%sterrorsN(-RR�R!R"R4RbRwRxR�R+R,RR�tintR�t
MediaErrorR#tlogt
logginglevelstDEBUG_2R�tstatvfstdirnametf_bavailtf_bsizetlongR	RRHRR9R�R�R�R�RR0Rt_del_dl_fileR6R^R_R�R�tNoMoreMirrorsRepoError(RR1R�R�tstarttendR�R�R�R#RbR�R*tschemeR-RxtquerytfragidR�R�R(tdirstattavailRKR�R~terrstrRR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_getFile�s�!T!	4				

	
c
s�j}�j���j}|j��rM�j�r=�Stj��n|dkrn��fd�}n|jdk|_	z@|j
d|d|d�d|d|d|d	�j|�}Wdt|_	X|j
d
�r�j�rd}	|	��jjf}	tj|	�n|S(Ncs5�j�s1tj��tdtd���ndS(Ni����s)Package
does not match intended
download.(tverifyLocalPkgRR^RR	(R=(R�tpackage(s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�"s
s
lazy:packagesR1R�R�R�R�RbR�RCs3Downloaded
package %s, from %s, but it was
invalid.(trelativepathtlocalPkgtbasepatht_preload_pkg_from_system_cacheR�RR^RR�R�R�R�RRR6R.R!R"(
RR�R�R�RbR*R~R�RR�((R�R�s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt
getPackages2		

cCs�|j}|j�}|j}|j}||}	|j}
tjj|j�sbtj	|j�n|j
d|
d|d|d|ddd|d|dd	d
|d|	�
S(NR1R�R�R�R#R�R�R�iRbR�(R�tlocalHdrthdrstartthdrendR�RwRxR�R|RkR�R(RR�R�R#RbR~R�R�R�R�R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt	getHeader@s			
	!cCs�|jdk	r|jS|j|j|j�}|s8|S|jdd}tjj|�s_t	S|j
�|jdd}|jr�tjj|�r�t	St|_tS(s�Check if there is a
metadata_cookie and check its age. If the
        age of the cookie is less than metadata_expire time then return
true
        else return False. This result is cached, so that
metalink/repomd.xml
        are synchronized.Rts
repomd.xmlsmetalink.xmlN(
R�RtwithinCacheAgeR�tmetadata_expireRVRwRxR�RR�R�R(RtmC_deftrepomdfntmlfn((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytmetadataCurrentRs
	cCs�|jdk	r|jS|jrHtjj|j�rHtjd|�n|jr]t	|_nNtjj|j�s~t
|_n-|j|j|j
�r�t	|_n	t
|_|jS(Ns$Cannot find metalink.xml file for
%s(R�RRbRwRxR�R�R!R"RRR�R�R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�os		cCs�t|d�r�|jjd�r�|jjd�r�|jtd�}|jtd�}|dkr{|dkswt�tS|dkr�|dkr�tSn|dkr�|dkr�tSq�ntS(s8Return
whether cache_req matches metadata_expire_filter.t_metadata_cache_reqs
read-only:tfuturetpasttpresent(R�R�R�(R�R�(RSR�R�tmetadata_expire_filterR,tAssertionErrorRR(Rt
cache_filtt	cache_req((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_matchExpireFilter�s
cCs�|r|j�rd}n|dkr=tjj|�r=tSt}tjj|�r�tj|�}|d|tj�kr�t}n|dtj�kr�t}n|js�|S|dt	|j
�kr�t}q�n|S(sxcheck if any file is older than a certain amount
of time. Used for
           the cachecookie and the mirrorlist
           return True if w/i the expiration time limit
           false if the time limit has expired

           Additionally compare the file to age of the newest .repo or
yum.conf
           file. If any of them are newer then invalidate the cache
          
i����i(R�RwRxR�RRtstatttimetcheck_config_file_ageR�R�(Rtmyfiletexpiration_timetexpire_req_filterR�tcookie_info((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR��s

				cCse|j}tjj|j�s*|j}ntj|tj�rat|jd�}|j�~ndS(s/if
possible, set touch the metadata_cookie
filesw+N(	R�RwRxR�RVtaccesstW_OKtopenR
(RRtfo((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytsetMetadataCookie�s	
cCs�y1||_||_||_||_||_Wntjk
rL}�nX|jr�|jr�|jr�|j	r�t
jtj
d�t|_t|_ndS(Ns1Disabling media repo for non-media-aware
frontend(RbR�R�R�R�R!R"RR�R�R#R�R�R�RR�Rtskip_if_unavailable(RRbR�R�R�R�R(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytsetup�s				
'	cCsO|jr2tjj|�r2tjd|j�n|jsG|j�rKtSt	S(s(
Should we cache the current repomd.xml s"Cannot find repomd.xml file
for %s(
RbRwRxR�R!R"R4R�RR(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_cachingRepoXML�s
cCsk|jdif}|dkr0d|jk}nd}yvtjdddddtjj|��}|jd|j	d	|d
dd|d
dd|d|j
dkdd�}Wnmtk
r�}tj
|�|r�dStjd||f�n.tjk
rtj
|�|rdS�nXytj||�Wn4tj
|�|rMdStjd||f�nX|S(s*
Call _getFile() for the repomd.xml file.
told_repo_XMLR�tprefixtrepomdtsuffixstmp.xmlR�R�R�R�iR�R#R�RbRLR�i�sError
downloading file %s: %ssError renaming file %s to
%s(N(t
_checkRepoXMLRR�ttempfiletmktempRwRxR�R�R�R�RRR^R!R"trename(RR�R�t
grab_can_failR�ttfnameR�R(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_getFileRepoXML�sD



cCsuytj|j|�SWnWtjk
rp}|dkrJd|jk}n|rTdStjd|j|f�nXdS(s Parse the
repomd.xml file. R�s&Error importing repomd.xml from %s:
%sN(	trepoMDObjecttRepoMDR.R!tRepoMDErrorRR�R"R4(RR�tparse_can_failR(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt
_parseRepoXMLscCs�x+tj|jd�D]}tj|�qWtjj|�r�|d}tj||�|j	|t
�}|dkr|dSi|d6|d6|d6gd6|_|SdS(s= If we have an older
repomd.xml file available, save it out. s
/*.old.tmps.old.tmpR�R�t	old_localtnew_MD_filesN(
tglobRVRR^RwRxR�R�tcopy2R
RRR�(RR�RRRn((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_saveOldRepoXMLs
cCs�|jstjd|j�nd|jkr;i|_dSx"|jdD]}tj|�qIW|j}i|_d|kr�tj|d|d�n|d|_	d|kr�dSx&|dD]}tj|d|�q�WdS(	s0
If we have older data available, revert to it. s*Can't download or
revert repomd.xml for %sR�NRRR�told_MD_filess.old.tmp(
R�R!R"R4R�RR^RwRR�(RRtold_datatrevert((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_revertOldRepoXML
s
				
cCsl|j}i|_d|kr2tj|d�nd|krBdSx#|dD]}tj|d�qMWdS(s
 Done with old data, delete it.
RRNs.old.tmp(R�RR^(RRR((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_doneOldRepoXML?s		cCs�|dkr|j}n|dkr?d|j�kr?d}n|dkrq|j|dd|�rq|d7}n||jj|�fS(	NR�R�RQR*RPt_dbRc(sothers	filelistssprimary(RRcR�REtrepoDataR(RRfRc((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_get_mdtype_dataLs	
cCsN|j\}}|jdtjj|�}|rJtj|dt�}n|S(NRtR�(RvRVRwRxRyRR�R(RRHt
compressedR}R~R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_get_mdtype_fnameXs
cCs~d|jkrtS|jd}|jrz|j|jjkrztjd|jtj	|j�tj	|jj�f�t
StS(s| We check the timestamps, if any of the timestamps for the
            "new" data is older than what we have ... we revert.
R�skNot using downloaded %s/repomd.xml because it is older than what we
have:
  Current   : %s
  Downloaded:
%s(R�RR�t	timestampRcR�R�R.R�tctimeR(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_groupCheckDataMDNewer`s
		cCs�|j|jkrtS|j|jkr,tSt}xJ|jD]?}||jkrWq<n|j||j|krutSt}q<W|S(s7
Check parsed repomd.xml against metalink.repomd data.
(RRtlengthR�t	checksumstchksumsR(RcR�tdoneRe((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_checkRepoXMLMetalinkss
cCs�|dkr|j}n|dkr0|j}n|j||j�rItSxb|jjD]T}|j||�rVtjt	j
dtj|jj
�tj|j
�f�tSqVWtS(s@ Check the repomd.xml
against the metalink data, if we have it. s/Using older repomd.xml
  Latest: %s
  Using:
%sN(RR�R�R!R�Rtold_repomdsR#R�R�R�R�RRR(RRcR�R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_checkRepoMetalink�scCsk|j|�}|stS|j�|js0tS|jj}|jr[|j|jkr[tS|j	||�S(sx
Save the Old Repo XML, and if it exists check to see if it's the
            latest available given the metalink data. (
RRR�R�R�R�R�RRR!(RR�toxmlR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_latestRepoXML�s
	cCsN|jd}|jdk	r
tS|j|�r>t}|}n�t}|j|�rr|}|j}|d|_ni|j||�}|dkr�|j	r�t
|d�r�|jdkr�tj
d|j�n|j�tS|j�|jdkr	|j|�|_n|jdkr&|j�tS|r0tS|j�sJ|j�tStS(	s`
Common LoadRepoXML for instant and group, returns False if you
            should just return.
s/repomd.xmlR�R�twritesread-only:futures Can't download
repomd.xml for
%sN(swritesread-only:future(RVR�RRR�RR%R�RR�RSR�R!R"R4RR�R
R(RR�tmdtypesR�tcachingR�R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_commonLoadRepoXML�s<
		



cCs[|jdkrtS|dkr+|j}n||jkrWt|j|jkrWtSntS(NRn(tmddownloadpolicyRRRcRt	DBVERSIONt	dbversionR(RRfRc((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRE�sc	Cs�|dkrdS|s.t}|j|�}nEt}|j|�}tjj|�sstj|dt�}t}n|j	tjj
|��|j||d|d|dt�s�dS|S(s� Check that we already
have this data, and that it's valid. Given
            the DB mdtype and the main mdtype (no _db suffix).
R�R�RHRuN(RRRRwRxR�RR�RR{RyRz(RRHtdbmdtypetmmdtypet
file_checkRR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_groupCheckDataMDValid�s	cCsZ|j|�}x7|D]/\}}|j|dt�s|j�tSqW|j|�tS(s�
Retrieve any listed mdtypes, and revert if there was a failure.
            Also put any of the non-valid mdtype files from the
old_repo_XML
            into the delete list, this means metadata can change filename
            without us leaking it.
tretrieve_can_fail(t_commonRetrieveDataMD_listRGRRRt_commonRetrieveDataMD_done(RR'tdownloadingtndatatnmdtype((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_commonRetrieveDataMDs

cCsd�}|jj�}xH|jj�D]7}||kr@q(n|dkrRq(n|j|�q(W|d
krx|}ng}d|jkr�d
}n|jd}||jd<g}|jd<g}xO|D]G}|j|�\}	}
|r�|j|d	|�\}}|j|||t	�}
|
r�||||	|
�rCq�nt
j|
|
d
�|j|
�|
d}t
jj
|�r�t
j||d
�|j|�q�q�n|
d
kr�q�n||kr�q�n|j|
|	|�r�q�n|j|
|	f�|j|j|
t��q�W|S(s+ Return a list of metadata to be retrieved
cSs||dkrtS||kr
tS|j|jkr6tStjj|jd�}tjj|jd�}||krxtStS(s9
Check if two returns from _get_mdtype_data() are equal.
iN(RRReRwRxRyRvR(tomdtypetodataR6R5tornametnrname((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt
_mdtype_eqsR@RARBR�R�RRRcs.old.tmps.sqlite(s
primary_dbsfilelists_dbsother_dbsgroup_gzN(R�tkeysRcR�R2RR�RR0RRwRRxR�RR(RR'R<tall_mdtypesRftrevertsR�t
newmdfilesR4R6R5R8R9R�t	gen_local((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR2sR			




cCs7x&|D]\}}|j|t�}qW|j�dS(s$
Uncompress the downloaded metadata
N(RRR(RR4R5R6R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR3oscCs#|j|�r|j|�ndS(s�
Retrieve the new repomd.xml from the repository, then check it
            and parse it. If it fails we revert to the old version and
pretend
            that is fine. If the new repomd.xml requires new version of
files
            that we have, like updateinfo.xml, we download those too and if
any
            of those fail, we again revert everything and pretend old data
is
            good.
N(R)R7(RR�R'((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_groupLoadRepoXMLvscCs�idgd6dgd6ddddgd6ddddd	d
gd6}t�}t|j�tjkr�|j|j|j|jg��n0x-|jD]"}|j|j||g��q�W|s�d|kr�d}n|jd�t	t
|��}|S(
Nt__None__tinstantRPs
group:primaryR�R�tpkgtagssgroup:smallR*R�s
group:mains	group:all(RR�tmdpolicyR�tStringTypesR<RRtdiscardtsortedR�(Rt	md_groupsR'RF((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_mdpolicy2mdtypes�s

	% 	
cCs[y|j||j��SWntk
r:|j��nXtjd|j|jf�dS(s5retrieve/check/read in
repomd.xml from the repositorys#Bad loadRepoXML policy (for %s):
%sN(RBRKtKeyboardInterruptRR!R"R4RF(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_loadRepoXML�s

cCs*|jr|jS|jd|j�|jS(NR�(R�RMR4(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_getRepoXML�s	cCs
|j�S(N(RN(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh�scCst|d|�S(NR�(R�(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh�scCst|dd�S(NR�(R�R(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh�scCst|�tjkr!|j}n|}|jr�|jr�tjdkr_t	dd|��n|j
d}yP|jddddd|d	d
|jddddd
|j
dkdd�}Wn,t	k
r�}t	dd||f��nXtj|||j�}|rq|jrqy|j||j�Wn)tjk
rU}t	dd|��nXtj|||j�}n|s�t	dd|��q�nytj|j|�}Wn/tjk
r�}t	dd||f��nX|j�|jr|j|�rt	dd|��ndS(Ni����s?pygpgme
is not working so repomd.xml can not be verified for
%ss/repomd.xml.ascR�srepodata/repomd.xml.ascR�iR�R�s%s/signatureR#R�RbRLR�i�s1Error
finding signature for repomd.xml for %s: %ss;Gpg Keys not imported, cannot
verify repomd.xml for repo %ss1repomd.xml signature could not be verified
for %ss%Error importing repomd.xml for %s: %ss)repomd.xml does not match
metalink for
%s(R�R�tInstanceTypeRt
repo_gpgcheckt_override_sigchecksRtgpgmeRRRVR�R4R�tvalid_detached_sigR�R�R�R!tYumBaseErrorRRR.RR�R�R#(RR�tfilepathtsigfileR�R(tvalidRc((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR��sF



	cCsCtj|�}|sdS|r2|j|kr2dStj|�dS(s4 Delete a
downloaded file if it's the correct size.
N(Rtstat_ftst_sizeR^(RR�R�tsd((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR��scCs|j|||�S(s,check
the metadata type against its
checksum(Rz(RtfnRfR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR��scCs�|}|dkr'|jj|�}n|rH|j\}}|j}	n|j\}}|j}	t|�tj	kr�|j
}
n|}
|	dk	r�t|	�}	nt|
|�}|r"t
j|
�}|dk	r"|	dkr�||kr�|jdkr�dS|	|jkr||krdSq"ny|j||
d|	�}Wn3tjk
rs}
|r]dStdd|
��nX||kr�t|
||�dS|r�dStdd��dS(	s5 Internal function, use
.checkMD() from outside yum. iiR�i����sError performing
checksum: %si����s%Metadata file does not match
checksumN(RRcRdR�topensizeReR�R�R�RORR�RRRXRYR�R!R"RR(RR[RfR�RHRuR�tr_ctypetr_csumR�R�tl_csumtfsizeR(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRz�sB	'
cCs
|j|�S(s�base function to retrieve
metadata files from the remote url
           returns the path to the local metadata file of a
'mdtype'
           mdtype can be 'primary', 'filelists',
'other' or
'group'.(RG(RRf((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt
retrieveMDscs��jj��}|j\}}tjj|�}�jd|}�jj��rZ|S�j	rst
j|�ntjj|�s��j
tjj|��r��j|�dt�r�d�j�<|Sn�jdkr&|r�dStjj|�rd|}	nd|�jf}	tj|	�nt}
�jjd�}|dk	r�|jj��}|dk	r�tjj|jd�}
||
kp�|j|jk}
q�ny���fd�}d�j�f}|jdks�|
r�d}nd	}�j|t|j���jd
|d|ddd
|d|d|d�jdkd|j|�}WnVtjk
rz|rtdS�n:tk
r�}|r�dStjd|�jf�nX|SdS(s8 Internal function,
use .retrieveMD() from outside yum. RtRuis;Caching enabled and local
cache: %s does not match checksums0Caching enabled but no local cache of %s
from %sR�csLy�j|��Wn$tk
r:tj|j��nXd�j�<dS(Ni(R�RRR^RR�(R=(RfR(s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�Qs
s%s/%sR$R�R�R�R#R�R�RbRLR�s6Could
not retrieve %s matching remote checksum from
%sN(RcRdRvRwRxRyRVR�RR�RR^R�R{RzRRbRR4R!R"R�RReR�R�R�R�R�R(RRfR1R*R�R}R~RR�R�tpartialtorepomdR9tofnameR�R�R#R(((RfRs//usr/lib/python2.7/site-packages/yum/yumRepo.pyRGsl	


	
cCs
|jd�S(s]this gets
you the path to the primary.xml file, retrieving it if we
           need a new
oneRP(Ra(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRWwscCs
|jd�S(s_this
gets you the path to the filelists.xml file, retrieving it if we
           need a new
oneR*(Ra(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRY~scCs
|jd�S(NRQ(Ra(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR[�scCs�d|jj�kr|jddt�}|r{ytj|dd|j�}Wq{tk
rw}tj	|�d}q{Xn|S|jddt�S(s�gets groups and returns
group file path for the repository, if there
           is none or retrieve/decompress fails, it returns
NoneR�R1s	comps.xmlRRR�N(RcR�RGRRRaRbR�R�R�R(RR[R(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt	getGroups�s

cCs||_||_t|_dS(N(R9R�RR�(RR9R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytsetCallback�s		cCs||_t|_dS(N(R�RR�(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt
setFailureObj�s	cCs||_t|_dS(N(R�RR�(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytsetMirrorFailureObj�s	cCs||_t|_dS(N(R�RR�(RR9((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytsetInterruptCallback�s	cCs�g}g}|dk	r�y|j�}WnEtk
ro}|dkrOd}ntjd||f�g}nXxT|D]I}tjd|�s�qwn|j�}|jdd�}|j	|�qwWn||fS(s5
read the mirror list from the specified file object
s	<unknown>s+Could not read mirrorlist %s, error was 
%ss
\w+://\S+\s*$s$ARCHs	$BASEARCHN(
Rt	readlinest	ExceptionR�R�R
RtrstriptreplaceR2(RR�R1t
returnlisttcontentR(tlineR&((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_readMirrorList�s"	

cCs�|jdd|_d}t}|j|j|jdt�rft}t|jd�}d|j}n�|j}t	j	|�d}|dkr�d|}n|j
�}ytjj
||�}WnJtk
r}tjd||jdtj|jd	�f�d}nX|j||�\}}|r||jr�|r�t|jd
�}	x|D]}
|	j|
�qUW|	j�q�nL|r�tjj|j�r�tj|jd�|jt|jd��dS|S(s$retrieve
an up2date-style mirrorlist file from our mirrorlist url,
           also save the file to the local repo dir and use that if cache
expiry
           not expired

           we also s/$ARCH/$BASEARCH/ and move along
           return the baseurls from the mirrorlist file
           Rtsmirrorlist.txtR�trsfile://iR�s1Could not retrieve
mirrorlist %s error was
%s:
%sitwN(RVR�RRR�tmirrorlist_expireRR�R�R+RHREtgrabberturlopenRR�R�R�RR�RqRbR&R
RwRxR�tutime(RR�tcacheokR1R�RKR(RnRoR�Rp((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR��s:		
1

cCs~tjj|�stStjj|�r[tj|�tjtj|�tjkr[tSnytj||�WntSXtS(s&attempts
to copy the file, if
possible(	RwRxR�RR�tST_CTIMER�RR(RR[tdestfn((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt
_preload_file�s,R�cCs�t|d�stS|jdkr&tStjj|j|j�}tjj|�sWtStjj|�tjj|j	�kr�tS|d|tjj
|�}|dkr�|j	d|tjj
|�}n|j||�S(sLattempts to copy the file from the system-wide
cache,
           if
possibletold_base_cache_dirR�RtN(
RSRR|RwRxR�R.R�tnormpathRVRyRR{(RRtsubdirRztglob_repo_cache_dirR[((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_preload_file_from_system_cache�s'$cCs
|j|�S(sUattempts
to copy the metadata file from the system-wide cache,
           if
possible(R�(RR((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR{scCs�tjj|j��}tjj|j|�}|j|j�ddd|�rUtSt|d�sht	Sx6|j
D]+}|jtjj||�|�rrtSqrWt	S(sOattempts to copy the package from
the system-wide cache,
           if
possibleR~s	packages/RzR�(RwRxRyR�R�RyR�RRSRR�R{(RtpkgtpnameRztopkgdir((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�s	!cCs�g}dGHy|jj�}Wn<tjk
r\}tddt|��}|j|�|SXxp|D]h}d|GHy|j|�Wqdtjk
r�}d|}td|t|��}|j|�qdXqdW|S(Nsverifying
mdisfailed to load repomd.xmlsverifying %ss.%s metadata missing or does
not match
checksumi(RcR�R!R"tRepoVerifyProblemR&R2Ra(Rtproblemstmd_typesR(tprbtmd_typeR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt
_verify_md"s"

	
cCs�dGHg}|j�}|dk	r5tj|�}nytj�}|j|�WnJtjtj	fk
r�}d}t
t|t|��}|j|�n8X|j
dkr�d}t
t|d�}|j|�n|S(Nsverifying compsscomps file failed to
addisno groups in
compsR�(ReRRR�RtCompstaddR!tGroupsErrortCompsExceptionR�tREPO_PROBLEM_COMPSR&t
compscount(RR�tgrpfiletcR(R�R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt
_verify_comps7s"cCsgS(N((R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_verify_packagesSstrepodataRcCs|g}d|kr(|j|j��nd|krV|jrV|j|j��qVnd|krx|j|j��n|S(s}download/verify
the specified items
           @items = ['repodata', 'comps'] can include:
repodata, comps, packages
       
R�RRo(R�R�R�R�R�(RtitemsR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytverifyVs	iN(qR�R�R�RR�R�tpropertyR�R�R4R
R�t_YumRepository__getProxyDictReR�R�R�R�RRR�R�R�RRR�RR_RRRHRfRgR�R�RnRR�R�RVRzRyR|R�R�R�R�R�R�R�R�R�R�R�R�R�t_YumRepository__getR�R�R�R�R�R�R�R�R�RR
RRRRRRtstaticmethodR!R#R%R)RER0R7R2R3RBRKRMRNRcR�R�R�RzRaRGRWRYR[ReRfRgRhRiRqR�R{R�R{R�R�R�R�R�(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�As�	=	
	
															<				'									$				$		
h)			#		*			
		-
	S						,	
0	Z								,						cCsRtjdtjdd�g}ttjd�r=tj}nddl}|}tj|�d}|dkr{d|}n|}y|j	|d	|�}WnBt
k
r�}d
||jdtj
|jd�fGHd}nX|dk	rN|j�}	xT|	D]I}
tjd|
�rq�n|
j�}|jd
d�}|j|�q�Wn|S(Ns9getMirrorList() will go away
in a future version of Yum.
RiRvi����iR�sfile://R]s1Could not retrieve mirrorlist %s
error was
%s: %sis\s*(#|$)s$ARCHs	$BASEARCH(RRR!RRSRERuR
R+RvRR�RR�RRjR
RRlRmR2(R�tpdictRnturlresolverR
R�R1R�R(RoRpR&((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt
getMirrorListgs2	
)

R�cBseZdZed�ZRS(s9 Holder for each
"problem" we find with a repo.verify().
cCs(||_||_||_||_dS(N(R�tmessagetdetailstfake(RR�R�R�R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�s			(R�R�R�RR(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR��s(:RwR
R�R�R+t
uses_fragmentR2R
R!turlgrabber.grabberRRturlgrabber.progressRturlgrabber.mirrorRERRRtreposRR�RTR�tyumRRRR	t	constantsR�tloggingR�RR
R�R�R�RRtskip_old_DBMD_checkR
RSRtImportErrorRRtsimplefilterRt	getLoggerR�R#RRR�R�R�R�(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt<module>sn
 


		��������-%