
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
šgt`L+  ã               @   sN   d dl mZmZ d dlZd dlmZ G dd„ dejƒZG dd„ dejj	ƒZ
dS )é    )Ú_ÚloggerN)ÚPackagec                   s,   e Zd ZdZdZ‡ fdd„Zdd„ Z‡  ZS )ÚDebuginfoInstallz5DNF plugin supplying the 'debuginfo-install' command.zdebuginfo-installc                s4   t t| ƒj||ƒ || _|| _|dk	r0|jtƒ dS )zInitialize the plugin instance.N)Úsuperr   Ú__init__ÚbaseÚcliZregister_commandÚDebuginfoInstallCommand)Úselfr   r	   )Ú	__class__© ú'/usr/lib/python3.6/debuginfo-install.pyr       s
    zDebuginfoInstall.__init__c             C   sf   | j | jjƒ}|jdƒo.|jddƒo.|jddƒ}|rbtjj| jƒj	ƒ j
dd�}t|ƒrb| jjjƒ  d S )NÚmainÚ
autoupdatez*-debuginfo)Z
name__glob)Zread_configr   ÚconfZhas_sectionZ
has_optionZ
getbooleanÚdnfÚsackZ_rpmdb_sackÚqueryÚfiltermÚlenÚreposÚenable_debug_repos)r   Zcpr   Zdbginfor   r   r   Úconfig(   s    
zDebuginfoInstall.config)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Únamer   r   Ú__classcell__r   r   )r   r   r      s   r   c                   sh   e Zd ZdZdZedƒZ‡ fdd„Zedd„ ƒZ	dd	„ Z
d
d„ Zdd„ Zdd„ Zdd„ Zdd„ Z‡  ZS )r
   z! DebuginfoInstall plugin for DNF údebuginfo-installzinstall debuginfo packagesc                s4   t t| ƒj|ƒ tƒ | _tƒ | _tƒ | _tƒ | _d S )N)r   r
   r   ÚsetÚavailable_debuginfo_missingÚavailable_debugsource_missingÚinstalled_debuginfo_missingÚinstalled_debugsource_missing)r   r	   )r   r   r   r   :   s
    z DebuginfoInstallCommand.__init__c             C   s   | j ddd� d S )NÚpackageú+)Únargs)Úadd_argument)Úparserr   r   r   Úset_argparserB   s    z%DebuginfoInstallCommand.set_argparserc             C   s0   | j j}d|_d|_d|_d|_| jjjƒ  d S )NT)	r	   ÚdemandsZ	resolvingZ	root_userZsack_activationZavailable_reposr   r   r   )r   r,   r   r   r   Ú	configureF   s    z!DebuginfoInstallCommand.configurec             C   sŒ  g }t tjƒ}t tjƒ}�x°| jjD �]¢}tjj|ƒj	| j
jdd�}|d }|sxtjtdƒ| j
jjj|ƒƒ |j|ƒ q$|jƒ jƒ }|j|jƒ jƒ ƒ xdt|jƒ ƒD ]T}|jtjƒrÐ|d | … |krÐ|j|ƒ |jtjƒr¤|d | … |kr¤|j|ƒ q¤W �xÈ|jƒ D �]º}	|	d }
|
j�r¶i }x"|	D ]}|j|jg ƒj|ƒ �q(W xj|jƒ D ]^}|d }| j|j |ƒ�sŒ| j|j!|ƒ�sŒ| j"j#t$|ƒƒ | j|j%|ƒ�sP| j&j#t$|ƒƒ �qPW �q|
j'jtjƒ�sÖ|
j'jtjƒ�rä| j(|	ƒ �q|d d k	�rb| j)|
j |d ƒ�s2| j)|
j!|d ƒ�s2| j*j#dj+|
j'|
j,ƒƒ | j)|
j%|d ƒ�s| j-j#dj+|
j'|
j,ƒƒ �q| j.|
j |	ƒ�sš| j.|
j!|	ƒ�sš| j*j#dj+|
j'|
j,ƒƒ | j.|
j%|	ƒ�s| j-j#dj+|
j'|
j,ƒƒ �qW q$W | j*�rðtjtdƒd	j/t0| j*ƒƒƒ | j-�rtjtd
ƒd	j/t0| j-ƒƒƒ | j"�r8tjtdƒd	j/t0| j"ƒƒƒ | j&�r\tjtdƒd	j/t0| j&ƒƒƒ |�rˆ| j
j1j2�rˆtj3j4tdƒdj/|ƒd�‚d S )NF)Zwith_srcr   zNo match for argument: %sr   Znevraz{}-{}zICould not find debuginfo package for the following available packages: %sz, zKCould not find debugsource package for the following available packages: %szICould not find debuginfo package for the following installed packages: %szKCould not find debugsource package for the following installed packages: %szUnable to find a matchú )Zpkg_spec)5r   r   ZDEBUGINFO_SUFFIXZDEBUGSOURCE_SUFFIXZoptsr&   r   ZsubjectZSubjectZget_best_solutionr   r   r   Úinfor   ÚoutputZtermZboldÚappendZ	availableZ
_name_dictÚupdateZ	installedÚlistÚkeysÚendswithÚpopÚvaluesZ_from_systemÚ
setdefaultÚarchÚ_install_debug_from_systemÚ
debug_nameZsource_debug_namer$   ÚaddÚstrZdebugsource_namer%   r   Ú_installÚ_install_debugr"   ÚformatÚevrr#   Ú_install_debug_no_nevraÚjoinÚsortedr   ÚstrictÚ
exceptionsZPackagesNotAvailableError)r   Zerrors_specZdebuginfo_suffix_lenZdebugsource_suffix_lenZpkgspecZsolutionr   Zpackage_dictr   ÚpkgsZ	first_pkgZ	arch_dictÚpkgZpackage_arch_listr   r   r   ÚrunN   s’    





zDebuginfoInstallCommand.runc             C   s:   | j jjƒ j||j|j|j|jd�}|r6| j|ƒ dS dS )N)r   ÚepochÚversionÚreleaser9   TF)	r   r   r   ÚfilterrJ   rK   rL   r9   r>   )r   r;   rH   r   r   r   r   r:   Ê   s    

z2DebuginfoInstallCommand._install_debug_from_systemc             C   s†   i }|j d k	r|j |d< |jd k	r,|j|d< |jd k	r@|j|d< |jd k	rT|j|d< | jjjƒ jf d|i|—Ž}|r‚| j|ƒ dS dS )NZepoch__globZversion__globZrelease__globZ
arch__globr   TF)	rJ   rK   rL   r9   r   r   r   rM   r>   )r   r;   Z
base_nevraÚkwargsr   r   r   r   r?   ×   s    








z&DebuginfoInstallCommand._install_debugc                s8   | j jjƒ j‡ fdd„|D ƒd�}|r4| j|ƒ dS dS )Nc                s   g | ]}d j ˆ |j|jƒ‘qS )z{}-{}.{})r@   rA   r9   )Ú.0Úp)r;   r   r   ú
<listcomp>î   s    zCDebuginfoInstallCommand._install_debug_no_nevra.<locals>.<listcomp>)Znevra_strictTF)r   r   r   r   r>   )r   r;   rG   r   r   )r;   r   rB   ì   s    
z/DebuginfoInstallCommand._install_debug_no_nevrac             C   s:   t jj| jjƒ}|j|d� | jjj|| jjj	 d� d S )N)rH   )ZselectZoptional)
r   ÚselectorZSelectorr   r   r!   ZgoalZinstallr   rE   )r   rG   rR   r   r   r   r>   õ   s    z DebuginfoInstallCommand._install)r    )r   r   r   r   Úaliasesr   Zsummaryr   Ústaticmethodr+   r-   rI   r:   r?   rB   r>   r   r   r   )r   r   r
   4   s   |	r
   )Zdnfpluginscorer   r   r   Zdnf.packager   ZPluginr   r	   ZCommandr
   r   r   r   r   Ú<module>   s   