3 šgt`L+ã@sNddlmZmZddlZddlmZGdd„dejƒZGdd„dejj ƒZ dS)é)Ú_ÚloggerN)ÚPackagecs,eZdZdZdZ‡fdd„Zdd„Z‡ZS)ÚDebuginfoInstallz5DNF plugin supplying the 'debuginfo-install' command.zdebuginfo-installcs4tt|ƒj||ƒ||_||_|dk r0|jtƒdS)zInitialize the plugin instance.N)ÚsuperrÚ__init__ÚbaseÚcliZregister_commandÚDebuginfoInstallCommand)Úselfrr )Ú __class__©ú'/usr/lib/python3.6/debuginfo-install.pyr s zDebuginfoInstall.__init__cCsf|j|jjƒ}|jdƒo.|jddƒo.|jddƒ}|rbtjj|jƒj ƒj dd�}t |ƒrb|jj j ƒdS)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 ZcprZdbginfor r rÚconfig(s   zDebuginfoInstall.config)Ú__name__Ú __module__Ú __qualname__Ú__doc__ÚnamerrÚ __classcell__r r )r rrs rcsheZdZdZdZedƒZ‡fdd„Zedd„ƒZ dd „Z d d „Z d d „Z dd„Z dd„Zdd„Z‡ZS)r z! DebuginfoInstall plugin for DNF údebuginfo-installzinstall debuginfo packagescs4tt|ƒj|ƒtƒ|_tƒ|_tƒ|_tƒ|_dS)N)rr rÚsetÚavailable_debuginfo_missingÚavailable_debugsource_missingÚinstalled_debuginfo_missingÚinstalled_debugsource_missing)r r )r r rr:s z DebuginfoInstallCommand.__init__cCs|jddd�dS)NÚpackageú+)Únargs)Ú add_argument)Úparserr r rÚ set_argparserBsz%DebuginfoInstallCommand.set_argparsercCs0|jj}d|_d|_d|_d|_|jjjƒdS)NT) r ÚdemandsZ resolvingZ root_userZsack_activationZavailable_reposrrr)r r,r r rÚ configureFs z!DebuginfoInstallCommand.configurecCsŒg}ttjƒ}ttjƒ}�x°|jjD�]¢}tjj|ƒj |j j dd�}|d}|sxt j tdƒ|j jjj|ƒƒ|j|ƒq$|jƒjƒ}|j|jƒjƒƒxdt|jƒƒD]T}|jtjƒrÐ|d| …|krÐ|j|ƒ|jtjƒr¤|d| …|kr¤|j|ƒq¤W�xÈ|jƒD�]º} | d} | j�r¶i} x"| D]} | j| jgƒj| ƒ�q(Wxj| jƒD]^} | d} |j| j | ƒ�sŒ|j| j!| ƒ�sŒ|j"j#t$| ƒƒ|j| j%| ƒ�sP|j&j#t$| ƒƒ�qPW�q| j'jtjƒ�sÖ| j'jtjƒ�rä|j(| ƒ�q|ddk �rb|j)| j |dƒ�s2|j)| j!|dƒ�s2|j*j#dj+| j'| j,ƒƒ|j)| j%|dƒ�s|j-j#dj+| j'| j,ƒƒ�q|j.| j | ƒ�sš|j.| j!| ƒ�sš|j*j#dj+| j'| j,ƒƒ|j.| j%| ƒ�s|j-j#dj+| j'| j,ƒƒ�qWq$W|j*�rðt j tdƒd j/t0|j*ƒƒƒ|j-�rt j td ƒd j/t0|j-ƒƒƒ|j"�r8t j td ƒd j/t0|j"ƒƒƒ|j&�r\t j td ƒd j/t0|j&ƒƒƒ|�rˆ|j j1j2�rˆtj3j4td ƒdj/|ƒd�‚dS)NF)Zwith_srcrzNo match for argument: %srZnevraz{}-{}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: %szUnable to find a matchú )Zpkg_spec)5rrZDEBUGINFO_SUFFIXZDEBUGSOURCE_SUFFIXZoptsr&rZsubjectZSubjectZget_best_solutionrrrÚinforÚoutputZtermZboldÚappendZ availableZ _name_dictÚupdateZ installedÚlistÚkeysÚendswithÚpopÚvaluesZ _from_systemÚ setdefaultÚarchÚ_install_debug_from_systemÚ debug_nameZsource_debug_namer$ÚaddÚstrZdebugsource_namer%rÚ_installÚ_install_debugr"ÚformatÚevrr#Ú_install_debug_no_nevraÚjoinÚsortedrÚstrictÚ exceptionsZPackagesNotAvailableError)r Z errors_specZdebuginfo_suffix_lenZdebugsource_suffix_lenZpkgspecZsolutionrZ package_dictrÚpkgsZ first_pkgZ arch_dictÚpkgZpackage_arch_listr r rÚrunNs’           zDebuginfoInstallCommand.runcCs:|jjjƒj||j|j|j|jd�}|r6|j|ƒdSdS)N)rÚepochÚversionÚreleaser9TF) rrrÚfilterrJrKrLr9r>)r r;rHrr r rr:Ês  z2DebuginfoInstallCommand._install_debug_from_systemcCs†i}|jdk r|j|d<|jdk r,|j|d<|jdk r@|j|d<|jdk rT|j|d<|jjjƒjfd|i|—Ž}|r‚|j|ƒdSdS)NZ epoch__globZ version__globZ release__globZ arch__globrTF) rJrKrLr9rrrrMr>)r r;Z base_nevraÚkwargsrr r rr?×s         z&DebuginfoInstallCommand._install_debugcs8|jjjƒj‡fdd„|Dƒd�}|r4|j|ƒdSdS)Ncsg|]}djˆ|j|jƒ‘qS)z{}-{}.{})r@rAr9)Ú.0Úp)r;r rú îszCDebuginfoInstallCommand._install_debug_no_nevra..)Z nevra_strictTF)rrrrr>)r r;rGrr )r;rrBìs   z/DebuginfoInstallCommand._install_debug_no_nevracCs:tjj|jjƒ}|j|d�|jjj||jjj d�dS)N)rH)ZselectZoptional) rÚselectorZSelectorrrr!ZgoalZinstallrrE)r rGrRr r rr>õs z DebuginfoInstallCommand._install)r )rrrrÚaliasesrZsummaryrÚ staticmethodr+r-rIr:r?rBr>rr r )r rr 4s  |  r ) ZdnfpluginscorerrrZ dnf.packagerZPluginrr ZCommandr r r r rÚs