Anons79 Mini Shell

Directory : /proc/self/root/lib/python2.7/site-packages/dnf/
Upload File :
Current File : //proc/self/root/lib/python2.7/site-packages/dnf/base.pyo

�
�[/\c@`s,dZddlmZddlmZddlmZddlmZddlZddlZddlZ	ddl
mZddlm
Z
mZmZdd	lmZdd
lmZddlmZddlmZydd
lmZWn!ek
r
dd
lmZnXddlZddlZddl
ZddlZddlZddl Zddl!Zddl"Zddl#Zddl$Zddl%Zddl&Zddl'Zyddl(Ze)Z*Wnek
r�e+Z*nXddl,Zddl-Zddl.Zddl/Zddl0Zddl1Zddl2Zddl3Zddl4Zddl5Zddl6Zddl7ZddlZddl8ZddlZddl9Z9ddl:Z:ddl;Z;ddl<Z<ddl=Z=ddl>Z>ddl?Z?ddl@Z@ddlAZAe;jBd�ZCdeDfd��YZEd�ZFdS(u
Supplies the Base class.
i(tabsolute_import(tdivision(tprint_function(tunicode_literalsN(t
CompsQuery(t_tP_tucd(t_parse_specs(t
SwdbInterface(tmisc(treduce(tSequenceudnftBasec	B`s�eZdzd�Zd�Zd�Zd�Zd�Zd�Ze	d��Z
ed�Zd�Z
ed	��Zed
��Zed��Zejd��Zeejjd
�d���Zed��Zed��Zed��Zejd��Zd�Zd{d|dzd�Zd�Zd�Zed�Ze e d�Z!d�Z"d�Z#dzd�Z$eeed�Z%d�Z&ie'j(d6e'j)d6e'j*d 6e'j+d!6e'j,d"6e'j-d#6e'j.d$6Z/e0e'd%�r�e'j1e/d&<nie'j2e'j3Bd$6Z4ed'��Z5ed(��Z6e6jd)��Z6ed*�Z7d+�Z8ed,d-�d.d/�d0d1�d2d3�Z9d4�Z:d5�Z;d6�Z<d7�Z=d8�Z>ed9�Z?d}d:�Z@d;�ZAd<�ZBd=�ZCdzd>�ZDd?�ZEdzdzd@�ZFe dzdA�ZGdB�ZHdC�ZIdDdzdzedzdE�ZJdzdF�ZKdG�ZLdH�ZMdI�ZNdJ�ZOdze dzdK�ZPdL�ZQiejjRdM6ejjSdN6ejjTdO6ejjUdP6ZVe	dQ��ZWdze dR�ZXe dzdzdS�ZYdT�ZZdU�Z[dV�Z\dW�Z]dX�Z^dY�Z_dze dZ�Z`d[�Zad\�Zbd]�Zce d^�Zddzdze dzd_�Zedze dzd`�Zfeda�Zge db�Zhdc�Zidd�Zjde�Zkdzdf�Zldzdg�Zmdzdh�Zndzdi�Zodzdzdzdzdj�Zpdzdzdk�Zqdzdzdzedl�Zrdm�Zsedn�Ztdo�Zuee dp�Zvdze dq�Zwdzdzdr�Zxds�Zydzdtdu�Zzdzdv�Z{dw�Z|dx�Z}dy�Z~RS(~cC`s*t|_|p|j�|_d|_d|_d|_d|_d|_	d|_
tjj
�|_d|_t�|_t�|_tjj�|_tjj�|_tjj�|_ttjg�|_tjj �|_!t|_"t|_#d|_$g|_%t|_&t�|_'d|_(dS(N()tFalset_closedt_setup_default_conft_conftNonet_goalt_repo_persistort_sackt_transactiont_priv_tst_compstdnftcompstTransactionBuncht_comps_transt_historytsett
_tempfilest_trans_tempfilestcallbacktDepsolvet_ds_callbacktloggingtLoggingt_loggingtrepodicttRepoDictt_repostrpmtRPMPROB_FILTER_OLDPACKAGEt_rpm_probfiltertplugintPluginst_pluginst_trans_successt_trans_install_sett_tempfile_persistort_update_security_filterst_allow_erasingt_repo_set_imported_gpg_keystoutput(tselftconf((s,/usr/lib/python2.7/site-packages/dnf/base.pyt__init__Zs0													cC`s|S(N((R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyt	__enter__uscG`s|j�dS(N(tclose(R7texc_args((s,/usr/lib/python2.7/site-packages/dnf/base.pyt__exit__xscC`s|j�dS(N(R;(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyt__del__{scC`s?|jr|jj|�n|jjr+n|jj|�dS(N(RR tupdateR8tdestdirR(R7tfiles((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_add_tempfiles~s
	cC`s�|j�|j}|jj|�tdtd|jdt�}|jrWt|d<ny|jj	|dt|�Wn\t
jk
r�}tj
td�j|j|��tjjtd�j|j���nXdS(Ntload_fileliststload_prestotload_updateinfou
load_othertbuild_cacheuloading repo '{}' failure: {}u"Loading repository '{}' has failed(tloadt_hawkey_repot_repot
initHyRepotdicttTruetdeltarpmtload_metadata_otherRt	load_repothawkeyt	ExceptiontloggertdebugRtformattidRt
exceptionst	RepoError(R7trepothrepotmdload_flagste((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_add_repo_to_sack�s
				
"	cC`sDtjj�}|j}d|kr@tjj|j�|d<n|S(Nu
releasever(RR8tConft
substitutionsR*tdetect_releasevertinstallroot(R8tsubst((s,/usr/lib/python2.7/site-packages/dnf/base.pyR�s
	cC`set|jj�}d|kr�tr�g|jj�D]}|jr4|j^q4}|jj	|j
||jj|jjt
|jj�}|r�tjtjjj|d��ndSg}g}|sZx�|jj�D]|}|j|kr�q�nt|j�dkr�|jj�jdt�}	xVt|j�D]E}
tjj|
�}|	j|j|jdtdt
dt
��}	q2W|	jd|j�|j|	j�|jf�n|jj�jdt�}xVt|j �D]E}
tjj|
�}|j|j|jdtdt
dt
��}q�W|jd|j�|r�|j||jf�q�q�Wnd|krQ|jj�jdt�}t|jj�dkr�x\t|jj�D]E}
tjj|
�}|j|j|jdtdt
dt
��}q�Wn|jj�jdt�}xYt|jj �D]E}
tjj|
�}|j|j|jdtdt
dt
��}q&W|rtrg|jj�D]}|jr�|j^q�}|jj	|j
||jj|jjt
|jj�}|rtjtjjj|d��qn|r5|jj!|�|jj"t�n|r�|jj#|�q�n�|r�tr�g|jj�D]}|jrn|j^qn}|jj	|j
||jj|jjt
|jj�}|r�tjtjjj|d��q�n|r1x:|D]/\}}|jj!|�|jj"t|�q�Wn|rax'|D]\}}|jj#|�q>WndS(	Nuallitemptyt
with_nevrat
with_providestwith_filenamestreponameumain($RR8tdisable_excludestWITH_MODULEStrepostiter_enabledtmodule_hotfixesRUtsacktfilter_modulest_moduleContainerR`tmodule_platform_idRtdebug_solverRRtwarningRtmoduletmodule_basetformat_modular_solver_errorstlentincludepkgstquerytfiltermRLtsubjecttSubjecttuniontget_best_querytappendtapplytexcludepkgstadd_includestset_use_includestadd_excludes(R7t	only_maintdisabledtit
hot_fix_repost
solver_errorst
repo_includest
repo_excludestrt
incl_querytincltsubjt
excl_querytexclt
include_queryt
exclude_queryRwtrepoid((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_setup_excludes_includes�s�.	%% (%
.	 
.	 cC`s�|jrm|jjrmg|jj�D]}|jj�r&|j^q&}|jjj	|�|jj
�n|jr�|jj
�ndS(N(RR8t	cacheonlyRiRjRIt	isExpiredRUtexpired_to_addR?tsaveR2(R7R�texpired((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_store_persistent_data�s4	cC`s|jS(N(R(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyR�scC`s|jS(N(R(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyR8�scC`s|jS(N(R)(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyRiscC`s
d|_dS(N(RR)(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyRisu
_priv_rpmconncC`stjjj|jj�S(N(RR*t
connectiont
RpmConnectionR8R`(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_rpmconnscC`s|jS(N(R(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyRlscC`sq|jdkr$tjjd��n|jjdkrgtjjt	|j
j|j
jd�|j_n|jjS(NuSack was not initializeduarch(
RlRRRVtErrorRntlibdnfRrtModulePackageContainerRR8R`R^(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyRns	(cC`s|jS(N(R(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyttransactionscC`s%|jrtd��n||_dS(Nutransaction already set(Rt
ValueError(R7tvalue((s,/usr/lib/python2.7/site-packages/dnf/base.pyR�$s	cC`stjj|jj�|_dS(N(Rt	persistort
RepoPersistorR8tcachedirR(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_activate_persistor+scC`s?|jjr(|jj|j||�n|jj||�dS(u&Load plugins and run their __init__().N(R8tpluginsR/t_loadt	_run_init(R7t
disabled_globtenable_pluginstcli((s,/usr/lib/python2.7/site-packages/dnf/base.pytinit_plugins.scC`s|jj�dS(u#Run plugins pre_configure() method.N(R/t_run_pre_config(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pytpre_configure_plugins5scC`s|jj�dS(uRun plugins configure() method.N(R/t_run_config(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pytconfigure_plugins:sc
C`s_|jj}|j}|r
tjj�rGtd�}tj|�t	Stjj
�t	krytd�}tj|�t	S|dkr�td�}tj|�t	S|j�}|dk	r�||kr�tjtd��t	Sx*|j
j�D]}|jjd�q�Wn|j
j�s0tjtd��t	Sx�|j
j�D]�}|j�\}}	|	dkr�tjtd�|j�q@|s�|	dkr�tjtd	�|j�|jj�q@|r|	|krtd
�}tj||j|	�|jj�q@tjtd�|j|	�q@W|r2t|_n|jdt	d
t�tjtd��tS(NuCMetadata timer caching disabled when running on metered connection.u:Metadata timer caching disabled when running on a battery.iu Metadata timer caching disabled.u"Metadata cache refreshed recently.iuThere are no enabled repos.u4%s: will never be expired and will not be refreshed.u&%s: has expired and will be refreshed.uC%s: metadata will expire after %d seconds and will be refreshed nowu!%s: will expire after %d seconds.tload_system_repotload_available_reposuMetadata cache created.(R8tmetadata_timer_syncRRtutilton_metered_connectionRRRtinfoRton_ac_powertsince_last_makecacheRRitvaluesRItsetMaxMirrorTriest_any_enabledRjt_metadata_expire_inRURStexpireRLtreset_last_makecachet	fill_sack(
R7ttimertperiodR�tmsgR�RXR�tis_cachet
expires_in((s,/usr/lib/python2.7/site-packages/dnf/base.pytupdate_cache?sT	


cC`s.tjjd�}|jdtdt�|jdk	rcx)|jj�D]}|j�|_	qGWntj
j|�|_tj
j|jj|jj�}|�.|tk	r�y|jjdt�Wq�tk
r�|dkr��q�q�Xn|r�g}d}tj�}|jjr)tjjj�nx�|jj�D]�}	y�|j|	�|	jj�|krv|	jj�}n|	jj�|kr�|	jj�}nt j!t"d�|	j#tj$j%|	jj&���Wq9tj'j(k
r#}
|	jj)�|	j*tkr	�n|j+|
�|	j,�q9Xq9Wx$|D]}
t j-t"d�|
�q/W|jj.�r�|dkr�|dkr�t j/t"d	�t0j1d
t2|��tj$j%|��q�q�n|jj3�j,�WdQX|j}|jj4|j5|j6�|j7�|�tj8j9|j�|_:|j;j<�|jS(u'Prepare the Sack and the Goal objects. u
sack setupRltgoalRFuautoiu%s: using metadata from %s.u%s, ignoring this repo.u-Last metadata expiration check: %s ago on %s.tsecondsN(=RR$tTimertresetRLR)RR�t_init_hawkey_repoRHRlt_build_sackRtlocktbuild_metadata_lockR8R�texit_on_lockRR�tIOErrorttimetgpgkey_dns_verificationtdnssectRpmImportedKeystcheck_imported_keys_validityRiRjR\RItgetTimestamptgetAgeRRRSRRUR�tnormalize_timetgetMaxTimestampRVRWR�tskip_if_unavailableR}tdisableRqR�R�tdatetimet	timedeltatinttallt
_configuretinstallonlypkgstinstallonly_limitR�R�tGoalRR/trun_sack(R7R�R�R�RXR�terrorstmtstageR�R[R8((s,/usr/lib/python2.7/site-packages/dnf/base.pyR�tsf!


	


	

cC`stjj|jj�|_|jjs�|j|j�|j	r�|j
j|jj��|jj
�|jr�|j|j
�q�q�|jjj|j
�n|jjr�tjtd��tjtd�d�n|jdk	r�|jj�n|j�|j�t|_	dS(NuRThe downloaded packages were saved in cache until the next successful transaction.u1You can remove cached packages by executing '%s'.udnf clean packages(RR�tTempfilePersistorR8R�R2t	keepcachet_clean_packagesRR0R R?tget_saved_tempfilesRbR1ttempfiles_to_addRRR�RRRthistoryR;R�t_closeRpmDBR(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_finalize_base�s*			
	



cC`sV|jr
dStjtjjd�t|_|j�|jdtdtdt�dS(utClose all potential handles and clean cache.

        Typically the handles are to data sources and sinks.

        NuCleaning up.RlRiR�(	RRRtlogRR$tDDEBUGRLR�R�(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyR;�s		
cC`smtjjj|j|�}xK|D]C}y|jj|�Wq"tjjk
rd}tj	|�q"Xq"WdS(u?Read repositories from the main conf file and from .repo files.N(
RR8treadt
RepoReaderRitaddRVtConfigErrorRRRq(R7toptstreaderRXR[((s,/usr/lib/python2.7/site-packages/dnf/base.pytread_all_repos�s
cC`s�|rGd|_|jdk	rGx#|jj�D]}d|_q.WqGn|rbtjj�|_n|r�d|_|jdk	r�tj	j
|j�|_n|jr�|jr�|jj�n|j
dk	r�|jj�ntjj�|_d|_ndS(u1Make the Base object forget about various things.N(RRR)R�RHRR'R(RR�R�RntrollbackRR�R;RRRR(R7RlRiR�RX((s,/usr/lib/python2.7/site-packages/dnf/base.pyR��s"		cC`s
|`dS(u6Closes down the instances of rpmdb that could be open.N(t_ts(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyR��su	noscriptsu
notriggersunodocsutestujustdbu
nocontextsunocryptouRPMTRANS_FLAG_NOCAPSunocapscC`s|jS(N(R(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyR�scC`sI|jdk	r|jStjjj|jj�|_|jjd�x�|jj	D]�}|j
j|�}|dkr�tj
td�|�qQn|jj|�|jj|�}|dk	rQ|jj|�qQqQW|jjs�|jjtj�n|jjr|jjtj�nttj|jd�}|jj|�|jS(uMSet up the RPM transaction set that will be used
           for all the work.iu!Invalid tsflag in config file: %sN(RRRR*R�tTransactionWrapperR8R`tsetFlagsttsflagst_TS_FLAGS_TO_RPMtgetRRtcriticalRt	addTsFlagt_TS_VSFLAGS_TO_RPMtpushVSFlagstdiskspacecheckR,R�tRPMPROB_FILTER_DISKSPACEt
ignorearchtRPMPROB_FILTER_IGNOREARCHRtoperatortor_t
setProbFilter(R7tflagtrpm_flagtvs_flagt
probfilter((s,/usr/lib/python2.7/site-packages/dnf/base.pyR�s*cC`s3|jdkrdS|jj�|`d|_dS(u"Releases the RPM transaction set. N(RRR;(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyR�/s

cC`s�tjjd�}tjj�|_tjtjjd�x|j	j
�D]}|js_qJn|jsnqJn|j
j�}|s�qJntjtjjd|j�|j
j�tjjkr�tj|d�}tjj|�s�qJq�ntj|d�}y|jj|�WqJtjjk
rP}td�}tj||j|�qJXqJW|r~|jjj|j j!dg�n|�|jS(u6Create the groups object to access the comps metadata.u
loading compsuGetting group metadatau%Adding group file from repository: %su
groups.xmlu1Failed to add groups file for repository: %s - %subasearch("RR$R�RtCompsRRRR�R�RiRjtenablegroupstmetadataRIt
getCompsFnRUtgetSyncStrategyRXtSYNC_ONLY_CACHER
tcalculate_repo_gen_desttostpathtexiststrepo_gen_decompresst_add_from_xml_filenameRVt
CompsErrorRRt_itarch_filterRR^(R7RR�RXtcomps_fntdecompressedR[R�((s,/usr/lib/python2.7/site-packages/dnf/base.pyt
read_comps8s:		
			cC`s@|jdkr9|jj}t|jjd|�|_n|jS(ueauto create the history object that to access/append the transaction
           history information. t
releaseverN(RRR8R!R	t
persistdir(R7R!((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_getHistory_stfgetcC`s
|j�S(N(R#(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyt<lambda>gstfsetcC`st|d|�S(Nu_history(tsetattr(R7R�((s,/usr/lib/python2.7/site-packages/dnf/base.pyR%hstfdelcC`st|dd�S(Nu_history(R'R(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyR%jstdocuDNF SWDB Interface Objectc`s��jj}t|j��}xj|j�D]\}|j|�}|d}�jj|d��jj|d�|j|||d�q+WxW|j	�D]I}�jj|d�|j|�}|d}|j
|||d�q�Wx&|j�D]}�jj|d�|j|�}g|D]}||kr!|^q!}|j|�}	x�|D]|}
|	t
jjkrqPn|j|
�}|t
jjkr�|}	qU|t
jjkrU�jjj|j�s�|}	q�qUqUW|j|||	��fd�}tjj||�q�Wx&|j�D]}|j|�}d}
x*|D]"}|j|jkr=|}
Pq=q=W|
dkr�|jd�}
n
|j|
�g|D]}||kr�|^q�}�fd�}tjj||�|�j�kr�|j||�n&|j||
|��jj|
d	��jj|d
�qWxF|j�D]8}�jj|d�|j|�}	|j||	�qDW|S(Niuddudiuruic`s�jj|d�S(Nuod(R#t	pkg_added(tpkg(R7(s,/usr/lib/python2.7/site-packages/dnf/base.pyR%�sc`s�jj|d�S(Nuod(R#R*(R+(R7(s,/usr/lib/python2.7/site-packages/dnf/base.pyR%�suuduuue( R�R*Rtlist_obsoletedtlist_downgradestobsoleted_by_packageR#R*t
add_downgradetlist_reinstallst
add_reinstallt
list_installst
get_reasonR�R�tTransactionItemReason_USERtTransactionItemReason_GROUPtgrouptis_removable_pkgtnametadd_installRR�tmapallt
list_upgradesRtpoptremovet_get_installonly_querytadd_upgradet
list_erasurest	add_erase(R7R�ttst
all_obsoletedR+tobst
downgradedtreinstalledR�treasontobsoletetreason_obsoletetcbtupgraded((R7s,/usr/lib/python2.7/site-packages/dnf/base.pyt_goal2transactionmsj

%
	

%cC`s�|j�}|j�}|j�j�}g}g}xC|D];}||krg|j||d�q=|j||�q=W||fS(uJ See what packages in the query match packages (also in older
            versions, but always same architecture) that are already installed.

            Unlike in case of _sltr_matches_installed(), it is practical here
            to know even the packages in the original query that can still be
            installed.
        i(t	installedt_na_dictt	availableR}(R7tqtinstt
inst_per_archtavail_per_archtavail_ltinst_ltna((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_query_matches_installed�s
cC`s1|jj�j�jd|j��}t|�S(u� See if sltr matches a patches that is (in older version or different
            architecture perhaps) already installed.
        R+(RlRwRMRxtmatchestlist(R7tsltrRQ((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_sltr_matches_installed�s'c`s#�fd��jj�j�D�S(u5Get iterator over the packages installed by the user.c3`s'|]}�jj|�r|VqdS(N(R�tuser_installed(t.0R+(R7(s,/usr/lib/python2.7/site-packages/dnf/base.pys	<genexpr>�s(RlRwRM(R7((R7s,/usr/lib/python2.7/site-packages/dnf/base.pytiter_userinstalled�scC`sK|jd|d|jjd|jj�}|jjrG|jd�n|S(Ntallow_uninstallt
force_besttignore_weak_depsu./debugdata/rpms(trunR8tbesttinstall_weak_depsRptwrite_debugdata(R7R�t
allow_erasingtret((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_run_hawkey_goal�s	c	C`sd}|j�tjjd�}|jj�|j}|j�ri|j	|j
j�j�|j
�n(|jjs�|j�}|j|�n|j|j
j�jd|jj��|j||�s|jjdkr�|j�ntjj|j��}tjj|�}n|j|�|_|jj�|�|jdk	o^t |j�dk}|r�|jj!�}|r�tjj"|�}q�n|dk	r�|�n|j#j$�|jj%�}||jj&�7}||jj'�7}||jj(�7}|j
j)|j*|�|S(uBuild the transaction set.udepsolveR8iiN(+Rt_finalize_comps_transRR$R�R#tstartRt
req_has_erasetpush_userinstalledRlRwRMR�R8tupgrade_group_objects_upgradet_build_comps_solvert'_exclude_packages_from_installed_groupst
add_protectedRxtprotected_packagesRht
debuglevelt
log_decisionsR�t_format_resolve_problemst
problem_rulesRVt
DepsolveErrorRLRtendRut_rpm_limitationsR�R/trun_resolvedR2R;R-R0tset_modules_enabled_by_pkgsetRn(	R7RftexcR�R�tsolverR�tgot_transactiontnew_pkgs((s,/usr/lib/python2.7/site-packages/dnf/base.pytresolve�sH

	


	
c
C`s�t|t�s|g}ntjjj�gt|�}|jj�|j	sZ|j
r3|j
jsq|j
jr3d}t|d�r�|jr�dj|j�}n-t|d�r�|jr�dj|j�}n|jj�}|dkr�|jj�}n	|j}|jj|gg|�|jj|�n|jj�|jj�t|_dSd}tjt d��tj!j"|j#j$|j#j%�}|�+|j&}d|_&|j	j'|j(�|j)�}|rt d�}	tj*|	�x|D]}	tj*|	�q�Wtj+j,|	��ntjt d��tj-j.d�}
tjt d��|j(j/�|j(j0�tjjj1|d	t�}|j(j2|�}~t3|�d
kr
t d�d}
x"|D]}|
d
t4|�7}
q�Wtj+j5|
d|j6|
���ntjt d��|
�tj-j.d�}
||_&tjjj1|d|�}|j#j7dkr�x|j8D]}t9|_:qyWn|jj�tjt d��|j;d|�}WdQX|
�|jj<|j	�|jj�|S(Nuargsu ucmdsuRunning transaction checku%Error: transaction check vs depsolve:uTransaction check succeeded.utransaction testuRunning transaction testttestiuTransaction check error:u
u  %s
uTransaction test succeeded.utransactiontdisplaysiuRunning transactionRJ(=t
isinstanceRRtyumtrpmtranstLoggingTransactionDisplayRYRnR�R�RR6tenvRthasattrtargstjointcmdsR�tlastRlt_rpmdb_versiontend_rpmdb_versiontbegRwR/trun_pre_transactiontrun_transactionRLR0RRR�RR�tbuild_rpmdb_lockR8R"R�R#t_populate_rpm_tsR�t_run_rpm_checkterrorRVtTransactionCheckErrorR$R�tordertcleantRPMTransactionR�RuRR�t_trans_error_summaryRrR�RR6t_run_transactiontunload_removed_plugins(R7tdisplaytcmdlinetoldt
rpmdb_versionttidR�tdscbtmsgsR�R�ttestcbttserrorst	errstringtdescrRJtdisplay_((s,/usr/lib/python2.7/site-packages/dnf/base.pytdo_transactions�
	!	

			




	

cC`s2d}tjd�}i}x�|j|�D]�}|jd�|krkt|jd��||jd�<n||jd�t|jd��kr+t|jd��||jd�<q+q+W|r|td�d7}xA|D]6}|dtdd||�|||fd7}q�Wntd	�d
|}|S(u�Parse the error string for 'interesting' errors which can
        be grouped, such as disk space issues.

        :param errstring: the error string
        :return: a string containing a summary of the errors
        uu%needs (\d+)MB on the (\S+) filesystemiiuDisk Requirements:u
u   u5At least %dMB more space needed on the %s filesystem.u
Error Summaryu
-------------
(tretcompiletfinditerR6R�RR(R7R�tsummarytptdisktmtk((s,/usr/lib/python2.7/site-packages/dnf/base.pyR�os%()
4cC`s |jjo|jjtj�S(N(R8thistory_recordR�tisTsFlagSetR*tRPMTRANS_FLAG_TEST(R7((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_record_history�sc
C`s�d}|j�r]t|jj�}|jj�j�}|jd|�j	�}|jj
�}|jj�}|dk	r�|j
}n|dks�||kr�tjtd��nd}t|d�r�|jr�dj|j�}n-t|d�r|jrdj|j�}nt|j�}	|j�}
|jj||g|�}|jjr]q]n|jjr�tjd�}|r�ytj|�Wq�d}q�Xq�ntjtjjd�|j j	|j!d�}tjtjjd	�|jjrytj|�WqqXn|dkr#n�t"|�dkr2g|j D]}
|
j#�r?|
^q?}t"|�dkr�xX|D]P}tj$j%|�}x5|j&D]*}t'|�|kr�t(jj)|_*q�q�WqvWtd
�}tj|�q�tj$j+�}td�}tj,||�td�}tj-j.|��n�|j�ryg|D]}t/|�^qE}|jj0|d
d|�ntj,td��x|D]}tj,|d�q�Wtd�}tj-j.|��xvdD]n}t||�r�t1||�}yt2j3|�WqAt4t5fk
r=td�}tj,||�qAXq�q�Wt6|j&j7�|_8|j j9t:j;�s�|j<|j=�n|S(uh
        Perform the RPM transaction.

        :return: history database transaction ID or None
        R8uRPMDB altered outside of DNF.uargsu ucmdsiuRPM transaction start.uuRPM transaction over.u#Errors occurred during transaction.u9Failed to obtain the transaction lock (logged in as: %s).uCould not run transaction.iR�uTransaction couldn't start:u	ts_all_fnu
ts_done_fnu$Failed to remove transaction file %sN(u	ts_all_fnu
ts_done_fn(>RR�RYR8thistory_record_packagesRlRwRMtfilterRbR�R�R�R�RRRSRR�R�R�R�R�R>R�tcommentt
reset_niceRtniceR�RR$R�R�R!RutFailedR�t	_te_nevraRtstrR�tTransactionItemState_ERRORtstatetget_effective_loginRRVR�RRwtgetattrR
tunlink_fR�tOSErrortbooltinstall_setR1R�R*R�t_verify_transactiontverify_tsi_package(R7RJR�tusing_pkgs_patstinstalled_queryt
using_pkgstrpmdbvtlastdbvR�ttsistinstallonlytoniceR�teltfailedttette_nevrattsiR�tloginR�txtherrorsR[R�tfn((s,/usr/lib/python2.7/site-packages/dnf/base.pyR��s�(


c`s>t|j����fd�}tjjd�}d}tjj|�}|j�j�}t	g|D]}|j
^qg�}xc|jjD]U}	|	j
�}
x@|
j�D]2}|j�|kr�|jt�|j�q�q�Wq�Wx#|jD]}||j|�}q�W|j�}
|jj|
d�|�t|_dS(Nc`s-|d7}�dk	r)�||��n|S(Ni(R(R+tcount(ttotalt
verify_pkg_cb(s,/usr/lib/python2.7/site-packages/dnf/base.pytdisplay_banners
uverify transactioni(RuR�RR$R�Rlt_rpmdb_sackRwRMRR8R�R6tgetCompsGroupItemtgetPackagestgetNametsetInstalledRLR�RR+R�RwR0(R7R�R�R�R�t
rpmdb_sackRPR�tnamesttitgR�R�R�((R�R�s,/usr/lib/python2.7/site-packages/dnf/base.pyR�s&"
c`s`tjj|jj|jj�}|��tj�}td�|D��}tg|D]!}t	|tj
j�rT|^qT�}	|jj
jdkr�|jt|�|d|	�n|jt|�|�tjj||���jr�tjj�j��nt�fd�|D��}
tjjd|�j�}|jj}|dk}
x8�jr�|
sk|dkr�|dkr�|d8}ntd�}tj|�g�jD]}|^q�}g|D]$}tjj||tjj�^q�}td�|D��}|jt|�|�tjj||���jrLtjj�j��n|
t�fd	�|D��7}
tjj||i�}qPW�jr�tjjj�j�}tj|�nWdQX|dk	r�||
|�n|\}}||kr\||krtd
�}n||kr)td�}nd||d}tj||d|d|�ndS(Ncs`s|]}|jVqdS(N(t
download_size(R]tpload((s,/usr/lib/python2.7/site-packages/dnf/base.pys	<genexpr>,sittotal_drpmsc3`s|]}�j|�VqdS(N(t_bandwidth_used(R]R�(R�(s,/usr/lib/python2.7/site-packages/dnf/base.pys	<genexpr>9siiu,Some packages were not downloaded. Retrying.cs`s|]}|jVqdS(N(R�(R]R�((s,/usr/lib/python2.7/site-packages/dnf/base.pys	<genexpr>Ksc3`s|]}�j|�VqdS(N(R�(R]R�(R�(s,/usr/lib/python2.7/site-packages/dnf/base.pys	<genexpr>Tsu?Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)uIFailed Delta RPMs increased %.1f MB of updates to %.1f MB (%d.1%% wasted)idii(iiii(RR�tbuild_download_lockR8R�R�R�tsumRuR�tdrpmtDeltaPayloadRjt__code__tco_argcountRXt_download_payloadst_irrecoverableRVt
DownloadErrort_update_savingt_recoverabletretriesRRRR�t_pkg2payloadt
RPMPayloadt
errmap2strR(R7tpayloadsR�tprogresstcallback_totalR�tbeg_downloadtest_remote_sizetpayloadt
total_drpmtremote_sizetsavingR�tforeverR�R+tremaining_pkgstrealtfulltpercent((R�s,/usr/lib/python2.7/site-packages/dnf/base.pyt_download_remote_payloads(sb!1	


.	
		c
C`s=|j|�\}}|r�|dkr9tjj�}ntjj|jj�j	�||j
j�}|jg|D]}|j
�^qs�g|D]*}tjj|||jtjj�^q�}|j||||�n|j
jr9xN|D]C}tjj|jj|jjd��}	tj|	|j
j�q�WndS(uDownload the packages specified by the given list of packages.

        `pkglist` is a list of packages to download, `progress` is an optional
         DownloadProgress instance, `callback_total` an optional callback to
         output messages about the download operation.

        u/N(t_select_remote_pkgsRRR!tNullDownloadProgressR�t	DeltaInfoRlRwRMR8tdeltarpm_percentageRBtlocalPkgRXR�t
delta_factoryR�RR@RRR�tpkgdirtlocationtlstriptshutiltcopy(
R7tpkglistR�R�tremote_pkgstlocal_repository_pkgsR�R+R�R((s,/usr/lib/python2.7/site-packages/dnf/base.pytdownload_packagesjs	&4
'cC`sg}|s|Sg}x�|D]�}tjj|�rpd|krptjj||j|�}|j|g�ny|j|j	j
|��Wqtk
r�}tj
|�|j|�qXqW|jdt�|r|rttd�jdj|����n|S(Nu://R�uCould not open: {}u (RRRRR�t_urlopen_progressR8RBR}Rltadd_cmdline_packageR�RRRqR�RLRRTR�(R7t	path_listtstrictR�tpkgst
pkgs_errorRR[((s,/usr/lib/python2.7/site-packages/dnf/base.pytadd_remote_rpms�s"

'cC`s�|jr|jj}d}n$|j|j}|j}|j}|rx|jj}tj	j
j|�}tj	jj
||j��}tjj|j��}~|dkr�d}	d}
q�|dkr�|r�d}	nd}	td�|}
q�|dkrd}	td�|}
q�|dkrP|r1d}	nd}	d}	td�|}
q�|d	kr�d}	td
�|}
q�nd}	d}
|	|
fS(u�Verify the GPG signature of the given package object.

        :param po: the package object to verify the signature of
        :return: (result, error_string)
           where result is::

              0 = GPG signature verifies ok or verification is not required.
              1 = GPG verification failed but installation of the right GPG key
                    might help.
              2 = Fatal GPG verification error, give up.
        iuiiu"Public key for %s is not installeduProblem opening package %siu Public key for %s is not trustediuPackage %s is not signed(t
_from_cmdlineR8tlocalpkg_gpgcheckRiR�tgpgchecktgpgkeyR`RR*R�tinitReadOnlyTransactiont	miscutilstcheckSigRRRtbasenameR(R7tpotcheckt	hasgpgkeyRXtrootRBt	sigresulttlocalfntresultR�((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_sig_check_pkg�sF						cC`s�x�|D]{}tjj|�s%qnytj|�Wn*tk
rbtjtd�|�qqXtj	t
jjtd�|�qWdS(NuCannot remove %su
%s removed(
RRRR
R�R�RRRqRR�RR$R�(R7tpackagesR�((s,/usr/lib/python2.7/site-packages/dnf/base.pyR��s

uallc	C`s�|dkr|jj}n|dkr@|j|||||�Stj|j|d|d|d|�}|dks�t|�dkr�|d�St||�}td�|�S(uRReturn a :class:`misc.GenericHolder` containing
        lists of package objects.  The contents of the lists are
        specified in various ways by the arguments.

        :param pkgnarrow: a string specifying which types of packages
           lists to produces, such as updates, installed, available,
           etc.
        :param patterns: a list of names or wildcards specifying
           packages to list
        :param showdups: whether to include duplicate packages in the
           lists
        :param ignore_case: whether to ignore case when searching by
           package names
        :param reponame: limit packages list to the given repository
        :return: a :class:`misc.GenericHolder` instance with the
           following lists defined::

             available = list of packageObjects
             installed = list of packageObjects
             upgrades = tuples of packageObjects (updating, installed)
             extras = list of packageObjects
             obsoletes = tuples of packageObjects (obsoleting, installed)
             recent = list of packageObjects
        tshowdupstignore_caseRficS`s
|j|�S(N(tmerge_lists(tatb((s,/usr/lib/python2.7/site-packages/dnf/base.pyR%sN(	RR8tshowdupesfromrepost
_list_patternt	functoolstpartialRutmapR(R7t	pkgnarrowtpatternsR.R/Rftlist_fntyghs((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_do_package_lists�s
c)`s��fd���fd�}�fd�}tjd|�}g}	g}
g}g}g}
g}g}g}g}g}|}�jj�}|dk	r�tjj|d|�}|j�jdt	�}n|dkrDi}i}xh|j
�D]Z}|||j<|rq�n|j|j
f}||ksD|||kr�|||<q�q�Wt||j���}	||�}|s�|j�}nx|D]�}|r�|j|kr�|j|�q=|
j|�q�|j|j
f}|j|kr|j|�q�||ks |j||�r0|
j|�q�|j|�q�Wnd|dkr�||�j�}
�j|
�}
|
j�j�}
n"|d	kr�t||j
���}	n�|d
krJ|ru||�j�}|j
�j�}xa|D]�}|j|j
f}|j|g�}g|D]}|j|jkr|^q}t|�dkra|j|�q�|
j|�q�Wq�||�j�j�j�} |j
�j�j�}x�| D]�\}!}"| |!|"fd}|j|!|"fdg�d}#|#s|j|#�r|
j|�q�|j|#�r6|j|�q�|j|�q�Wn^|dkr�||�j�jj�}$|$j�}n(|d
kr�g|j�D]}�|�r�|^q�}n�|dkr]|j
�}%|�jj��j d|%�}�j|dt	�}g}x�|D]A}&|&j!}'|j"g|%j d|'�D]}(|&|(f^q=�qWnK|dkr�|j�}|s�|j�}n||�j#�j$j%�}n|	|_
|
|_||_&||_'|
|_(||_!||_)||_%||_||_*|S(Nc`s&�dkrtS�jj|��kS(u:Test whether given package originates from the repository.N(RRLR�RX(tpackage(RfR7(s,/usr/lib/python2.7/site-packages/dnf/base.pytis_from_reposc`s�fd�|D�S(u=Filter out the packages which do not originate from the repo.c3`s!|]}�|�r|VqdS(N((R]R=(R>(s,/usr/lib/python2.7/site-packages/dnf/base.pys	<genexpr>s((R-(R>(s,/usr/lib/python2.7/site-packages/dnf/base.pytpkgs_from_reposc`s �dkr|S|jd��S(u=Filter out the packages which do not originate from the repo.RfN(RR�(Rw(Rf(s,/usr/lib/python2.7/site-packages/dnf/base.pytquery_for_repostiterR/Rdualluupgradesu	installedu	availableiu
autoremoveuextrasu	obsoletest	obsoletesRqtprovidesurecent(+R
t
GenericHolderRlRwRRRyRzR|RRMtpkgtupR8tarchRYR�tlatestR}tevr_gttupgradest_merge_update_filtersRbRORNR�tevrRutevr_eqt	_unneededR�tswdbtextrasR�RBtextendt_recentR8trecenttreinstall_availablet
old_availabletupdatestobsoletesTuplest
autoremove()R7R8tpatternR.R/RfR?R@tyghRMRORSRTRURBRVRRRORWticRPR�tdinsttndinstR%tkeytavailR+tinstalled_dictt	avail_pkgtinstalled_pkgstsame_vertavailable_dictR8RFtinst_pkgtautoremove_qRQtnewtobsoleted_reldepsR�((R>RfR7s,/usr/lib/python2.7/site-packages/dnf/base.pyR4
s�



.
	0										cC`s|j|7_t|�S(N(RRu(R7ttrans((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_add_comps_trans�scC`s�|j�}|sdS|j|jjdt�}|jdg|D]$}|jjj|j�rA|^qA�}|j	|�}|j
|�}|r�tjj
|j�}|jd|�|jjd|d|jj�ndS(u�
        Mark to remove packages that are not required by any user installed package (reason group
        or user)
        :param query: dnf.query.Query() object
        NRpR+tselectt
clean_deps(RMRMR�RNRR�R6R7R8R{tintersectionRtselectortSelectorRlRRteraseR8tclean_requirements_on_remove(R7Rwt
unneeded_pkgsR�tunneeded_pkgs_historytremove_packagesRZ((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_remove_if_unneeded�s=c`s��j}�jjd}�fd�}�fd�}d�}�jj�jdt�}|jtj	|dt�f|j
tj	|dt�f|j|f|j
|ff}x�|D]�\}}	x�|D]�}
i|
jd6}|
jr�|ji|d6�n�jj�j|�j�}|jd	d
�|sx|
j}
|
jrV|
d|7}
ntjtd�j|
��q�n|	|||
�}�jjj|
j�q�Wq�W�j|�dS(
Nubasearchc`s<tjj�j�}|jd|��jjd|�|S(NR+Rj(RRmRnRlRRtupgrade(Rwtremove_queryt	comps_pkgRZ(R7(s,/usr/lib/python2.7/site-packages/dnf/base.pyt
trans_upgrade�sc`s�jjdkr�|js1�j|d|�q|j�j�}�j|�tjj	�j
�}|jddj|j
|j���jjd|d|�nmtjj	�j
�}|jr�|jddj|j
|j��n|jd|��jjd|d|�|S(NuallRRCu
({} if {})RjtoptionalR+(R8tmultilib_policytrequirest_install_multiarchRMR~t_report_already_installedRRmRnRlRRTR8Rtinstall(RwRvRwRR�RZ(R7(s,/usr/lib/python2.7/site-packages/dnf/base.pyt
trans_install�s	
"	%cS`s|j|�}|S(N(R{(RwRvRw((s,/usr/lib/python2.7/site-packages/dnf/base.pyttrans_remove�sRbRunameuarcht	arch__nequsrcu.uNo match for group package "{}"(RR8R^RlRwRxRLR~R5R6tinstall_optRRuR=R8tbasearchonlyR?R~RRRqRRTRt
group_membersR�Rt(R7RhtbasearchRxRR�Rvtattr_fntattrR�Rwt
query_argsRPtpackage_string((R7s,/usr/lib/python2.7/site-packages/dnf/base.pyRi�s4		
			c`s+�fd�}tjj�j�j|�S(Nc`se�jj�j�jd|�}|s+dSy�jjj|d�SWntk
r`t	j
jSXdS(NR8i(RlRwRMRxRR�R*R3tAttributeErrorR�R�tTransactionItemReason_UNKNOWN(tpkgnameRP(R7(s,/usr/lib/python2.7/site-packages/dnf/base.pyt	reason_fn�s!
(RRtSolverR�R(R7R�((R7s,/usr/lib/python2.7/site-packages/dnf/base.pyRn�s	cC`s_|j�}|j|�}tjj|j|||p<t�||�}|sRdS|j|�S(Ni(Rnt_translate_comps_pkg_typesRRtinstall_or_skipt_environment_installRRi(R7tenv_idttypestexcludeRtexclude_groupsR|Rh((s,/usr/lib/python2.7/site-packages/dnf/base.pytenvironment_installscC`s(|j�}|j|�}|j|�S(N(Rnt_environment_removeRi(R7R�R|Rh((s,/usr/lib/python2.7/site-packages/dnf/base.pytenvironment_remove
sudefaultu	mandatoryuoptionaluconditionalcC`sCd}x6tjj�D]%\}}||kr||O}qqW|S(Ni(R
t_COMPS_TRANSLATIONtitems(t	pkg_typesRgR8tenum((s,/usr/lib/python2.7/site-packages/dnf/base.pyR�s
c`s��fd�}d}|rOg|D]}||�^q"}tjj|�}n�j�}	�j|�}tjj|	j	||||�}
|
s�dS|r�|
j
}n	|
j}tj
td�||��j|
�S(u�Installs packages of selected group
        :param exclude: list of package name glob patterns
            that will be excluded from install set
        :param strict: boolean indicating whether group packages that
            exist but are non-installable due to e.g. dependency
            issues should be skipped (False) or cause transaction to
            fail to resolve (True)
        c`sHtjj|�r=�jj�jd|�}td�|�S|fSdS(Nt
name__globcS`s|jS(N(R8(R�((s,/usr/lib/python2.7/site-packages/dnf/base.pyR%/s(RR�tis_glob_patternRlRwRxR7(RXRP(R7(s,/usr/lib/python2.7/site-packages/dnf/base.pyt_pattern_to_pkgname,siu#Adding packages from group '%s': %sN(Rt	itertoolstchaint
from_iterableRnR�RRR�t_group_installR~R�RRRSRRi(R7tgrp_idR�R�RR�texclude_pkgnamesR�tnested_excludesR|Rhtinstlog((R7s,/usr/lib/python2.7/site-packages/dnf/base.pyt
group_install"s$
			
cC`sNt|j|jtjtjBtjtjB�}d}t}x�|D]�}	y|j|	�}
Wn8t	j
jk
r�}tj
dt|��t}qBnXxI|
jD]>}|s�||kr�||j||d|d|�7}q�q�Wx9|
jD].}
||j|
|d|d|d|�7}q�WqBW|rJ|rJt	j
jtd���n|S(NiuWarning: Module or %sR�RR�uNothing to do.(RRR�tENVIRONMENTStGROUPSt	AVAILABLEt	INSTALLEDRLR�RRVRRRR�RRtgroupsR�tenvironmentsR�R�R(R7R9R�RR�R�RPtcnttdoneRXtresterrtgroup_idR�((s,/usr/lib/python2.7/site-packages/dnf/base.pytenv_group_installHs*

)
cC`s(|j�}|j|�}|j|�S(N(Rnt
_group_removeRi(R7R�R|Rh((s,/usr/lib/python2.7/site-packages/dnf/base.pytgroup_remove_scC`s�t|j|jtjtjBtj�}y|j|�}WnGtjj	k
r�}t
jdt|��tjj
td���nXd}x$|jD]}||j|�7}q�Wx$|jD]}||j|�7}q�W|S(NuWarning: %suNo groups marked for removal.i(RRR�R�R�R�R�RRVRRRR�RR�RR�R�R�R�(R7R9RPR�R�R�R�tgrp((s,/usr/lib/python2.7/site-packages/dnf/base.pytenv_group_removees
cC`s�t|j|jtjtjBtj�}|j|�}d}x$|jD]}||j|�7}qGWx$|j	D]}||j
|�7}qnW|s�td�}tj
j|��ndS(NiuNo group marked for upgrade.(RRR�R�R�R�R�R�tenvironment_upgradeR�t
group_upgradeRRR�tCliError(R7R9RPR�R�R�R�R�((s,/usr/lib/python2.7/site-packages/dnf/base.pytenv_group_upgradeus
cC`s(|j�}|j|�}|j|�S(N(Rnt_environment_upgradeRi(R7R�R|Rh((s,/usr/lib/python2.7/site-packages/dnf/base.pyR��scC`s(|j�}|j|�}|j|�S(N(Rnt_group_upgradeRi(R7R�R|Rh((s,/usr/lib/python2.7/site-packages/dnf/base.pyR��scC`s�|jjd}tjj|�r&dS|jj}tjjj	d|�}|j
tjtjB�|j
dd�}t|�}~~|dkr�dStjj|�}tjj|�s�tj|�nt|d�}|j�~dSdS(	u�Checks for the presence of GPG keys in the rpmdb.

        :return: 0 if there are no GPG keys in the rpmdb, and 1 if
           there are keys
        u/.gpgkeyschecked.yumiR(unameu
gpg-pubkeyiuwN(R8R�RRRR`RR*R�R!Rt_RPMVSF_NOSIGNATURESt_RPMVSF_NODIGESTStdbMatchRutdirnametmakedirstopenR;(R7tgpgkeyscheckedR`tmytstidxtkeystmydirtfo((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_gpg_key_check�s&
cC`s�|j|�\}}|j|�xp|D]h}tjj|j�}|jd|�}|dk	rw|jd|�}n|jj	d|d|�q)Wt
|�S(NR+RfRjRy(RWR}RRmRnRlRRRR~Ru(R7RwRfRtalready_instROR1RZ((s,/usr/lib/python2.7/site-packages/dnf/base.pyR|�s

cC`s<tj�}tj�}t||�t||�||fS(u�
        Categorize :param install and :param exclude list into two groups each (packages and groups)

        :param install: list of specs, whether packages ('foo') or groups/modules ('@bar')
        :param exclude: list of specs, whether packages ('foo') or groups/modules ('@bar')
        :return: categorized install and exclude specs (stored in argparse.Namespace class)

        To access packages use: specs.pkg_specs,
        to access groups use: specs.grp_specs
        (targparset	NamespaceR(R7R~R�t
install_specst
exclude_specs((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_categorize_specs�s


cC`s�g|jD]}tjj|�r
|^q
}g|jD]}||kr8|^q8}|jj�jd|�}|jj�jd|�}|jj|�|jj|�dS(NR8R�(t	pkg_specsRR�R�RlRwR�R�(R7R�R�t
glob_excludestexcludesR�tglob_exclude_query((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_exclude_package_specs�sc
C`st�}t|j|jtjtjBtjtjB�}x�|D]�}y|j|�}Wn2t	j
jk
r�}tj
dt|��q?nX|j|j�|j|j�xJ|jD]?}|jj|�}x$|j�D]}	|j|	j�q�Wq�Wq?Wt|�S(NuWarning: Module or %s(RRRR�R�R�R�R�R�RRVRRRR�RR?R�R�t_environment_by_idtgroups_iterR�RURY(
R7tgroup_specsR�RPRXR�R�tenvironment_idtenvironmentR6((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_expand_groups�s"	

cC`s�x�|D]�}ym|jj}d|krW|jd�}|d}|djd�}n|j|g|||j|j�Wqtjjk
r�|j	d|�qXqWdS(Nu/iiu,u@(
R8tgroup_package_typestsplitR�R�t	grp_specsRRVR�R}(R7R�R�tskippedRt
group_specR�R�((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_install_groups�s

cC`s8|dkrg}ng}g}g}g}	|j||�\}
}|j|�xw|
jD]l}y#|j|d|d|d|�Wq\tjjk
r�td�}
t	j
|
|�|j|�q\Xq\Wg}d}tr�|
j
r�y,tjjj|�}|j|
j
|�Wq�tjjk
r�}|jrXx!|jD]}|j|�q>Wn|jr�x%|jD]}|jd|�qkWn|j}q�Xn	|
j
}|r�|jdt�|j|j
�|_
|j||||�n|s|s|s|	s|r4tjjd|d|d	|d
|	d|��ndS(
NRfRtformsuNo match for argument: %su@Rtno_match_group_specsterror_group_specstno_match_pkg_specsterror_pkg_specstmodule_debsolv_errors((RR�R�R�R~RRVtMarkingErrorRRRR�R}RhR�RrRst
ModuleBaset
MarkingErrorsR�R�R�R RLR�R�(R7R~R�RfRR�R�R�R�R�R�R�tspecR�tno_match_module_specsR�RsR[te_spec((s,/usr/lib/python2.7/site-packages/dnf/base.pyR��sR	
#			c

C`sStjj|�}|j|jd|dt�}|jjdksQ|j|�r�|d}|dk	rz|j
d|�n|s�tjjt
d�|��n|j|d|d|�S|jjdkrO|j|d|d	|jjd|d
td|�}|s tjjt
d�|��nx(|D] }	|jjd|	d
|�q'WdSdS(u@Mark package(s) given by pkg_spec and reponame for installation.R�twith_srcualluqueryRfuno package matchedRubestRBtreportstsolutionRjRyiiN(RRyRztget_best_solutionRlRR8Rzt_is_arch_specifiedRRxRVtPackageNotFoundErrorRR|t_get_best_selectorsRBRLR�RR~(
R7tpkg_specRfRR�R�R�RPtsltrsRZ((s,/usr/lib/python2.7/site-packages/dnf/base.pyR~,s.!
		
cC`s!|jrd}t|��n|jj�j�jd|jd|jdg�}|s�td�}t	j
||j�tjj
td�|j|j��nt|�d|kr�tjj|j�}|jd|g�|jjd	|d
|�dStd�}t	j
||j�dSdS(
Nu-downgrade_package() for an installed package.R8RFunoarchu.Package %s not installed, cannot downgrade it.uNo match for argument: %siR+RjRyiuCPackage %s of lower version already installed, cannot downgrade it.(t_from_systemtNotImplementedErrorRlRwRMRxR8RFRRRRqRRVR�RtsortedRmRnRRR~(R7R+RR�RPRZ((s,/usr/lib/python2.7/site-packages/dnf/base.pytpackage_downgradeKs 	3(cC`s�|jj�j|j|j|j�}|j|�\}}||kr[|j|g�n{|tj	j
|�kr�tjj
td�|j��nBtjj|j�}|jd|g�|jjd|d|�dS(NuNo match for argument: %sR+RjRyi(RlRwt_nevraR8RKRFRWR}R�R�R�RRVR�RRRmRnRRR~(R7R+RRPR�RORZ((s,/usr/lib/python2.7/site-packages/dnf/base.pytpackage_installas'!cC`s�|jj�j�jd|jd|jd|j�rJ|jj|�dSt	d�}t
j|t|��t
jjt	d�|j|j��dS(NR8RKRFiu.Package %s not installed, cannot reinstall it.uNo match for argument: %s(RlRwRMRxR8RKRFRR~RRRRqR�RRVR�R(R7R+R�((s,/usr/lib/python2.7/site-packages/dnf/base.pytpackage_reinstallos6cC`s|jj|�dS(Ni(RRo(R7R+((s,/usr/lib/python2.7/site-packages/dnf/base.pytpackage_removewscC`sL|jrd}t|��n|jdkrPtd�}tj||j�dS|jj�j	�j
d|jd|jdg�}|s�td�}tj||j�t
jjtd	�|j|j��nxt|�d
|kr%t
jj|j�}|jd|g�|jjd|�d
Std�}tj||j�dSdS(Nu+upgrade_package() for an installed package.usrcu<File %s is a source package and cannot be updated, ignoring.iR8RFunoarchu+Package %s not installed, cannot update it.uNo match for argument: %si����R+RjiuAPackage %s of higher version already installed, cannot update it.(R�R�RFRRRR�RRlRwRMRxR8RqRRVR�R�RmRnRRRu(R7R+R�RPRZ((s,/usr/lib/python2.7/site-packages/dnf/base.pytpackage_upgrade{s(	3(c	C`s"|jj�j�}|j|jj�jdg|D]}|j^q4��}|r�|jj�j�jd|j�j|j���}|j|�}n|j�}|dk	r�|jd|�n|j
|d|�}|rtjj
|j�}|jd|�|jjd|�ndS(NR8RBRfR�R+Rji(RlRwRMRlRxR8ROR{RIRRJRRmRnRRRu(	R7RwRBRfR�RMR+RPRZ((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_upgrade_internal�s:c
C`s�tjj|�}|j|j�}|d}|r�tjj|�}|rX|drX|djrX|jj�j	�}|dj}|j
d|�j�|s�td�}	t
j|	|�tjjtd�||��n|djrXtjj|dj�rX|jd|dj�sUtd�}	t
j|	dj||dj��qUqXn|jjo{|do{|dj�}
|j||
||�Stjjtd�||��dS(	NuqueryunevraR8u(Package %s available, but not installed.uNo match for argument: %sRFu?Package %s available, but installed for different architecture.u{}.{}(RRyRzR�RlR�R�R8RwRMRxR~RRRRqRVtPackagesNotInstalledErrorRFR�RTR8RBt
has_just_nameRR�(R7R�RfR�R�RPtwildcardRMtpkg_nameR�RB((s,/usr/lib/python2.7/site-packages/dnf/base.pyRu�s,

	',cC`s(|j|jj�|jj|dd�S(NR�(RRlRwR8RBR(R7Rf((s,/usr/lib/python2.7/site-packages/dnf/base.pytupgrade_all�scC`s�|dkr|jj�n�tjj|�}|j|jdt�}|dj	dt
j�|j|d|d|j
jdt�}|s�tjtd�|�dSx!|D]}|jjd	|�q�Wd
S(NR�uqueryt
reponame__neqR�RBR�uNo package %s installed.iRji(RRtdistupgrade_allRRyRzR�RlRRxRPtSYSTEM_REPO_NAMER�R8RBRLRRR�Rtdistupgrade(R7R�RyR�R�RZ((s,/usr/lib/python2.7/site-packages/dnf/base.pytdistro_sync�s
cC`s[t|||g�r||7}t}|ra|rax^|D]"}td�}tj||�q8Wn1|r�|jdt�|j|�r�t}q�nx[|D]S}y|j|d|�Wn-t	j
jk
r�tjtd�|�q�Xt}q�W|sWtjtd��qWnH|j
j�j|jjd|jj�}	x|	D]}
|j|
�q@WdS(u�Removes all 'leaf' packages from the system that were originally
        installed as dependencies of user-installed packages but which are
        no longer required by any such package.uNot a valid form: %sRR�uNo match for argument: %suNo packages marked for removal.RpN(tanyRRRRRqR RLR�R=RRVR�R�RlRwRMR�RNR8RpR�(R7R�R�R�t	filenamesR�tgrp_specR�R�RR+((s,/usr/lib/python2.7/site-packages/dnf/base.pyRW�s0




cC`s�tjj|�j|jd|�}g|j�D]0}|dks[|jj|�|kr1|^q1}|s�tj	j
d|��n|jj}x$|D]}|j
j|d|�q�Wt|�S(u'Mark the specified package for removal.R�uno package matchedRkN(RRyRzR|RlRMRR�RXRVRR8RpRRoRu(R7R�RfR�RXR+RMRk((s,/usr/lib/python2.7/site-packages/dnf/base.pyR=s$$	
cC`s�tjj|�}|j|j�}g|j�D]0}|dks[|jj|�|kr1|^q1}	|j	�}
|dk	r�|
j
d|�n|dk	r�|
j
d|�ntjj|
�}|	s�tj
jd||j���nd}|jj}
xr|	D]j}y|t|�}Wn3tk
rR|s9qn|jj|d|
�nX|jj|�|d7}qW|dkr�tj
jd||	��n|S(NRfRuno package matchediRki(RRyRzR|RlRMRR�RXRORxRwt_per_nevra_dictRVRR�R8RpRtKeyErrorRRoR~tPackagesNotAvailableError(R7R�told_reponametnew_reponametnew_reponame_neqt	remove_naR�RPR+Ratavailable_qtavailable_nevra2pkgR�Rkt
installed_pkgt
available_pkg((s,/usr/lib/python2.7/site-packages/dnf/base.pyt	reinstalls:$	

	cC`s
|j|�S(u�Mark a package to be downgraded.

        This is equivalent to first removing the currently installed package,
        and then installing an older version.

        (tdowngrade_to(R7R�((s,/usr/lib/python2.7/site-packages/dnf/base.pyt	downgrade<sc
C`s�tjj|�}|j|jdtdtdt�}|sdtd�|}tjj	||��nd}|j
�}t|j�j
��}|jj�j�jd|�}	t|	�dkr�td�|}tjj|||��nx�|	j�j
�D]�}
|j�jd|
�}|sEtd�}tj||
�q�ntjj|j�}|jd	|�|jjd
|d|�d}q�W|S(
u�Downgrade to specific version if specified otherwise downgrades
        to one version lower than the package installed.
        RcRdReuNo match for argument: %siR8u6Packages for argument %s available, but not installed.uDPackage %s of lowest version already installed, cannot downgrade it.R+RjRyi(RRyRzR|RlRLRRRVR�RORYt
_name_dictR�RwRMRxRuRt
downgradesR�RRRqRmRnRRR~(
R7R�RR�RPR�R�tavailable_pkgstavailable_pkg_namestq_installedRtdowngrade_pkgsRZ((s,/usr/lib/python2.7/site-packages/dnf/base.pyRFs0	!
cC`s�|jj�jd|�}|r.||gfStjj|j|�}|rY||gfSgddgD]}||^qf}|jj�jd|�|fS(Nt
file__globu	/usr/bin/u
/usr/sbin/(RlRwRxRt_by_provides(R7t
provides_spect	providerstprefixtbinary_provides((s,/usr/lib/python2.7/site-packages/dnf/base.pyRCcs

#cC`syid	tjj6tjjtjj6tjjtjj6d	tjj6tjjtjj	6d	tjj
6d	tjj6tjjtjj6d	tjj6tjjtjj6d	tjj
6}t}x�|j�D]�}y||j}Wn,tk
rttdj|����nX|d	krq�n|tjjkr�|jj�j�jdt|��}	|	s�tjtd�tt|���t}q�q�nU|jj�jdt|��}	|	s�tjtd�tt|���t}q�ntjj |j�}
|
j!d|	�|tjjkr0|j"j#d|
�q�|j"j$d|
d|�q�W|ru|rutj%j&td���nd	S(
u9Undo the operations on packages by their NEVRAs.

        :param operations: a NEVRAOperations to be undone
        :param first_trans: first transaction id being undone
        :param rollback: True if transaction is performing a rollback
        :param strict: if True, raise an exception on any errors
        uAction not handled: {}tnevra_strictuNo package %s installed.uNo package %s available.R+RjRyuno package matchedN('RR�R�tTransactionItemAction_DOWNGRADEtTransactionItemAction_UPGRADEt TransactionItemAction_DOWNGRADEDtTransactionItemAction_REMOVEtTransactionItemAction_INSTALLtTransactionItemAction_OBSOLETEtTransactionItemAction_OBSOLETEDtTransactionItemAction_REINSTALLt!TransactionItemAction_REINSTALLEDtTransactionItemAction_UPGRADEDt#TransactionItemAction_REASON_CHANGERR-tactionRtRuntimeErrorRRTRlRwRMRxR�RRR�RRLRRmRnRRRoR~RVR�(R7t
operationstfirst_transR�Rt
action_mapR�R�R5RwRm((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_history_undo_operationsmsL






'"	!"c	C`s9|js|r|S|jd}x$|jdD]}|j|�}q0W|g|_|j|�}|s5|r5|j�}t|j�j��}|dkr�td�j	|�}td�j	|�}t
jt|||��q2td�j	||�}td�j	||�}t
jt|||��q5n|S(u�
        Merge Queries in _update_filters and return intersection with q Query
        @param q: Query
        @return: Query
        iiu3No security updates needed, but {} update availableu4No security updates needed, but {} updates availableu<No security updates needed for "{}", but {} update availableu=No security updates needed for "{}", but {} updates availableN(
R3R{RlRIRuRR�RRRTRRRqR(	R7RPR�Rqtmerged_queriesRwR�tmsg1tmsg2((s,/usr/lib/python2.7/site-packages/dnf/base.pyRJ�s.
		c`s�|j�j��j|jk}|r.gn�j}��fd�}t}|jj�j�x�|D]�}tjj	|��}	x�|	D]}}
t
j|j|
j
|
j�dkr�td�}tj|||
j�q�n|jjr;tjjj|
j|
j�}tjjj|�}
tjtjj||
��n||
_tjj|
�t}|jjrot}n|jj r|jjr�|
tjj!j"tjj!j#fkr�t$}tjtjj%td���qt}tjtjj%td���qpt$}nl|rO|i�d6|
jd6|
jd6|d	6|
j&d
6|
jd6�}n!|rp|�|
j|
j�}n|s�t$}q�ntj'j(j)|jj*�}|j+t
j,|
j��}|dkr�td�|}tj-j.||���ntjtd
��t$}q�WqiW|r8|r8tj-j.td���n|sltd��j/}tj-j.||���n|j0��\}}|dkr�|r�td�}tj|�nt1|�}tj-j.||���ndS(u�Retrieve a key for a package. If needed, use the given
        callback to prompt whether the key should be imported.

        :param po: the package object to retrieve the key of
        :param askcb: Callback function to use to ask permission to
           import a key.  The arguments *askck* should take are the
           package object, the userid of the key, and the keyid
        :param fullaskcb: Callback function to use to ask permission to
           import a key.  This differs from *askcb* in that it gets
           passed a dictionary so that we can expand the values passed.
        :raises: :class:`dnf.exceptions.Error` if there are errors
           retrieving the keys
        c`s<|td��d7}|td�dj�j�7}|S(Nu. Failing package is: %su
 uGPG Keys are configured as: %su, (RR�R (R�(R%RX(s,/usr/lib/python2.7/site-packages/dnf/base.pyt_prov_key_data�siu)GPG key at %s (0x%s) is already installeduThe key has been approved.uThe key has been rejected.upouuseriduhexkeyidukeyurlufingerprintu	timestampuKey import failed (code %d)uKey imported successfullyuDidn't install any keysu�The GPG keys listed for the "%s" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.u+Import of key(s) didn't help, wrong key(s)?N(2RiR�RUR5R RR�RtcryptotretrieveR
tkeyInstalledR�trpm_idt	timestampRRRR�tshort_idR8R�R�tKeyInfotfrom_rpm_key_objecttuseridtraw_keytDNSSECKeyVerificationtverifyt
nice_user_msgturltlog_key_importtassumenot	assumeyestValiditytVALIDtPROVEN_NONEXISTENCERLtany_msgtfingerprintR*R�R�R`tpgpImportPubkeyt
procgpgkeyRVR�R8R,R(R7R%taskcbt	fullaskcbt
key_installedtkeyurlsR>tuser_cb_failtkeyurlR�R�R�t
dns_input_keyt
dns_resulttrctts_import_instanceR+terrmsg((R%RXs,/usr/lib/python2.7/site-packages/dnf/base.pyt_get_key_for_package�s~

$		""	


	
cC`sDg}|jj�x*|jj�D]}|jt|��q#W|S(N(R�R&tproblemsR}R(R7tresultstprob((s,/usr/lib/python2.7/site-packages/dnf/base.pyR�A	s

uw+bcK`stjj||j|||�S(u�
        Open the specified absolute url, return a file object
        which respects proxy setting even for non-repo downloads
        (RR�t_urlopenR8(R7RLRXtmodetkwargs((s,/usr/lib/python2.7/site-packages/dnf/base.pyturlopenL	scC`s:|dkr|jj�}n|jd|jj�}|S(NRC(RRRwR�R8R�(R7RPR�((s,/usr/lib/python2.7/site-packages/dnf/base.pyR>T	scC`s�tjj|dt�}|j|jdtdtdt�}|dr�|dr�|djr�||ddjkr�tj	t
d�j|ddj��ndS(	NR/RcRdReuqueryunevraiu  * Maybe you meant: {}(RRyRzRLR�RlRR8RRR�RRT(R7R�R�R�((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_report_icase_hintZ	s!cC`s�d�}g}g}xL|D]D}|j�rS|jtjkr`|j|�q`q|j|�qWtd�}|||�s�tjjtd���n|j	j
r�td�}|||�s�tjjtd���ng}n||fS(u Check checksum of packages from local repositories and returns list packages from remote
        repositories that will be downloaded. Packages from commandline are skipped.

        :param install_pkgs: list of packages
        :return: list of remote pkgs
        cS`s�t}x~|D]v}t}y|j�}Wn&tk
rQ}tjt|��nX|tk	r
tj|j||j��t}q
q
W|S(N(	RLRtverifyLocalPkgRQRRRR�RTRf(tpkg_listt
logger_msgtall_packages_verifiedR+tpkg_successfully_verifiedR[((s,/usr/lib/python2.7/site-packages/dnf/base.pyt_verification_of_packagesi	s

u>Package "{}" from local repository "{}" has incorrect checksumu;Some packages from local repository have incorrect checksumu8Package "{}" from repository "{}" has incorrect checksumuVSome packages have invalid cache, but cannot be downloaded due to "--cacheonly" option(t
_is_local_pkgRfRPtCMDLINE_REPO_NAMER}RRRVR�R8R�(R7tinstall_pkgsRpRRR+R�((s,/usr/lib/python2.7/site-packages/dnf/base.pyRb	s&	
			cC`sx|D]}t|�qWdS(N(t_msg_installed(R7R-R+((s,/usr/lib/python2.7/site-packages/dnf/base.pyR}�	s
N((((t__name__t
__module__RR9R:R=R>RBR\tstaticmethodRRR�R�tpropertyRR8RitdeleterRR�tlazyattrR�RlRnR�tsetterR�R�R�R�R�RLR�R�R;R�R�R�R*tRPMTRANS_FLAG_NOSCRIPTStRPMTRANS_FLAG_NOTRIGGERStRPMTRANS_FLAG_NODOCSR�tRPMTRANS_FLAG_JUSTDBtRPMTRANS_FLAG_NOCONTEXTStRPMTRANS_FLAG_NOFILEDIGESTR�R�tRPMTRANS_FLAG_NOCAPSR�R�RR�R�R R#R�RLRWR[R^RhRR�R�R�R�R�RRRR,R�R<R4RiRtRiRnR�R�tDEFAULTt	MANDATORYtOPTIONALtCONDITIONALR�R�R�R�R�R�R�R�R�R�R|R�R�R�R�R�R~R�R�R�R�RRRuRRRWR=RRRRCR:RJRbR�RiR>RjRR}(((s,/usr/lib/python2.7/site-packages/dnf/base.pyR
Xs�						P						5;			






		'					E				8]			q'	B	;	
	)�			;		


&									0			%&	
	
; y			-cC`s,t|�}td�}tj||�dS(Nu Package %s is already installed.(RRRRR�(R+R8R�((s,/usr/lib/python2.7/site-packages/dnf/base.pyRt�	s(Gt__doc__t
__future__RRRRR�Rtlibdnf.transactionR�t	dnf.compsRtdnf.i18nRRRtdnf.utilRtdnf.db.historyR	tdnf.yumR
R5Rtcollections.abcRtImportErrortcollectionsR�tdnf.callbacktdnf.conft
dnf.conf.readt
dnf.cryptot
dnf.dnssectdnf.drpmtdnf.exceptionstdnf.goaltdnf.historytdnf.locktdnf.loggingtdnf.module.module_baseRLRhRt
dnf.persistort
dnf.plugint	dnf.querytdnf.repotdnf.repodicttdnf.rpm.connectiontdnf.rpm.miscutilstdnf.rpm.transactiontdnf.sacktdnf.selectortdnf.subjecttdnf.transactiontdnf.yum.rpmtransRPR�R$RRR�R*R�Rt	getLoggerRRtobjectR
Rt(((s,/usr/lib/python2.7/site-packages/dnf/base.pyt<module>s�



���������D

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]