Current File : //proc/3/root/usr/lib/python2.7/site-packages/yum/yumRepo.pyc
�
�v_c@s�ddlZddlZddlZddlZddlZejjd�ddlZddlZddl m
Z
ddl mZddlm
Z
ddlZddl mZddlZddlZddlmZddlZddlZddlZddlmZdd lmZdd
lmZddlmZddlTddlZddlZddl 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(tURLGrabError(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
RRtFalsetTrue(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�Zd�Z
RS(s;imports/handles package objects from an mdcache dict objectcCs&tjj|�||_i|_dS(N(tpackageSacktPackageSackt__init__tpctadded(tselftpackageClass((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||jf�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
addPackagetappendtindexesBuiltR!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*tfilelists_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+tcacheHandlertstoredirtrepoidR9R@tprimaryRARBtothers/gen/%s.sqlites %s: Check uncompressed DB faileds.xmltcacheds%s: Decompress DB failed(thasattrtsqlitecachectRepodataParserSqlitetcachedirR.RMRt
getPrimaryXMLt
getPrimarytgetFileListsXMLtgetFileliststgetOtherXMLtgetOtherdataREt_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]$scCsld}tjj|�rhy|j||dt�Wn*tk
r^|jsetj |�qeqhX|}n|S(Ntopenchecksum(
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
YumRepositorycBs eZdZd�Zd�Zd�Zee�Zd�Zee�Z d�Z
d�Zd�Zee�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
6dd6dd6|_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_urlstenablegroupstgroupsfilenamet
repoMDFilet_repoXMLt_oldRepoMDDataRbRt_retry_no_cachetmirrorlistparsedtyumvart_proxy_dicttmetadata_cookie_fnt_metadataCurrentt _metalinktgroups_addedthttp_headerstrepo_config_agetbasecachedirtbase_persistdirtcostt
copy_localt retrievedt_preloaded_repomdR9tmulti_callbacktfailure_objtmirror_failure_objtinterrupt_callbackt_callbacks_changedt mediafunctgpg_import_functgpgca_import_functconfirm_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__�scCs.|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_objscallbacksconfirm_funcsgroups_addedsinterrupt_callbacksidsmirror_failure_objsrepo_config_agesgroupsfilenames
copy_localsbasecachedirshttp_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|jr5tjd|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(Rtproxy_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__headersListFromDictMscCs'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}ntjj}�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
roundrobintprogress_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�|difp�|\}}}|j
||||��n|S(
Niitcodeiii�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
d6|jd
6|jd6t
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
sslclientcerttsslclientkeyRtoptsRXRYRZR[RRt
proxy_dict(RRbRd((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRH�s*
cCs0|js|jr)|j�t|_n|jS(N(R�R�RR(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_getgrabfunc�s
cCs0|js|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>|jgD]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.txtsmetalink.xmlN(RwRxR�R�R.R�tsetAttributetgeteuidRVR�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.pyRhscCs|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.pytbaseurlSetups 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|jrl|jt|jj ���t
|_n|jr�|jr�|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,
$ cCs g}d}x�|D]�}|dkr+qntj||j�}|ddkr]|d}ny%tj|�\}}}}} }
Wn"tttfk
r�}d}nX|dkr�|}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(NRtsmetalink.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�RHthttp_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$cKs|dkr|j}n|dks0|dkrFtjd|j�n|jdkr�tjj|�rk|Stjd||jf�n|r�t j
|�\}
}}}}n|jr�|jr�d}|r�|
dkr�|r�t
|�}q�ny\|jd|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.(trelativepathtlocalPkgtbasepatht_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|_tS(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.xmlsmetalink.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|jr�|jr�|jr�|j r�t
jtj
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�}tj
|�|r�dStjd||f�n.tjk
rtj
|�|rdS�nXytj||�Wn4tj
|�|rMdStjd||f�nX|S(s* Call _getFile() for the repomd.xml file. told_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( trepoMDObjecttRepoMDR.R!tRepoMDErrorRR�R"R4(RR�tparse_can_failR(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt
_parseRepoXMLscCs�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_localtnew_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�NRRR�told_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�scCsk|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�tj
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�sc 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|dkrRq(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
jj
|�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_eqsR@RARBR�R�RRRcs.old.tmps.sqlite(s
primary_dbsfilelists_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(RR�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�|jr�tjdkr_t dd|��n|j
d}yP|jddddd|d d
|jddddd
|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�tInstanceTypeRt
repo_gpgcheckt_override_sigchecksRtgpgmeRRRVR�R4R�tvalid_detached_sigR�R�R�R!tYumBaseErrorRRR.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��scCs|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|ddd
|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
�}ytjj
||�}WnJtk
r}tjd||jdtj|jd �f�d}nX|j||�\}}|r||jr�|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(Nsverifying mdisfailed to load repomd.xmlsverifying %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
RRRRRRtstaticmethodR!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 , cCsRtjdtjdd�g}ttjd�r=tj}nddl}|}tj|�d}|dkr{d|}n|}y|j |d |�}WnBt
k
r�}d
||jdtj
|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
RSRtImportErrorRRtsimplefilterRt getLoggerR�R#RRR�R�R�R�(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt<module>sn
��������-%