%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core/17212/usr/share/dh-python/dhpython/__pycache__/
Upload File :
Create Path :
Current File : //snap/core/17212/usr/share/dh-python/dhpython/__pycache__/fs.cpython-35.pyc



�U]C�@sddlZddlZddlZddlmZddlmZmZm	Z	m
Z
mZmZm
Z
ddlmZddlmZmZmZmZddlmZddlmZmZddlmZejd	�Zd
d�Zdd
�ZGdd�d�Z dS)�N)�cmp)�exists�dirname�isdir�islink�join�split�splitext)�rmtree)�ST_MODE�S_IXUSR�S_IXGRP�S_IXOTH)�MULTIARCH_DIR_TPL)�fix_shebang�clean_egg_name)�Interpreter�dhpythoncCs�t|�}x�|D]�}||_|j|�}x�|j|�D]�}t|�rAtjd||�t||||�dj|j	d�dd��}x?|r�t
|�r�tj|�r�Ptj
|�t|�}q�WqAW|j|dd�}x�|j|dd�D]�}t|�rtjd||�t||||�dj|j	d�dd��}x?|r�t
|�r�tj|�r�Ptj
|�t|�}qiWqWqWdS)	z!Move files to the right location.zmoving files from %s to %s�/N�ZgdbT���r)r�version�sitedirZold_sitedirsr�log�debug�share_filesrrr�os�listdir�rmdirr)�package�interpreterZversions�optionsr�dstdir�srcdirZ
parent_dir�r$�#/usr/share/dh-python/dhpython/fs.py�
fix_locations#s6
	"	
"	
r&c
Cs�x_tj|�D]N}t||�}|jr�t|�d	dkr�|j|�}|r�|dk	r�|}|j||�}|r�t||�}t|�r�tj	d||�n)tj
d||�tj||�|}t||�}	t|�rt|	�rtj||	�qt|�r<t
||	||�qt||	dd�rtj|�qWt|�r�tj|�r�tj|�dS)
z<Try to move as many files from srcdir to dstdir as possible.rz.soTz.destination file exist, cannot rename %s to %szrenaming %s to %sZshallowFNr)rrr�
no_ext_renamer	�parse_public_dir�
check_extnamerr�warn�info�renamesrr�cmpfile�remover)
r#r"r r!�iZfpath1rZfpath1_orig�new_nameZfpath2r$r$r%rHs2 	
rc@seZdZejd�Zejd�Zdddd�Zedd��Z	dd	�Z
d
d�Zedd
��Zedd��Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�ZdS)&�Scanz.*/__pycache__(/.*)?$z.*\.py[co]$NcCs�||_|j|_||_|s7d|j|_n'|jd�}td|j|�|_||_~||_dt�dt�dt�dt�dt�d	id
ddt�d
t�i	|_	x�t
j|j�D]�\}}}|j|�r|dd�=q�d|_
|_|j|�}|rWd|_|dkrKd}q`||_n	d|_|jr�|jd�r.|dk	r�|j	dj|�x�dD]B}	|	|kr�tjd|	�tt||	��|j|	�q�WnF|j|�|_
|j
s.|j|�}
|
r�|j||�nq�xF|D]>}	t||	�}|j|�r5t|�|j|	�q5q5W|j|�r�|j||�q�xzt|�D]l}t||�}|j|�r�tjd|�t
j|�q�|j|�r	|j |�q�t!|�sWt"|�r�dt#|�dkr�tj$d|�t
j|�q�t%|�ddd�}
|
dkr�|jj&s�|j'|�}|j(|�}|p�|}|r�|j)j*dt��j|�n|j)j*d
t��j|�|j
r�t!|�r�|
dkr�t
j+|�t,}|t-@sL|t.@sL|t/@r�|j0sjt1||jj2�r�|jj3r�yt4j5|�}Wn8t6k
r�}ztjd||�WYdd}~Xn X|j)j*dt��j|�|
dkr�|j7|�dk	r�d|j)d
<q�W|s�xj|r�y!t
j8|�tjd|�Wnt6k
r[PYnX|j9dd�d}|j:|j�sPqWq�Wtjd||j	�dS) Nz	debian/%sr�debianzrequires.txtzegg-infoznsp.txt�shebangsZpublic_vers�private_dirs�compileFZext_versZext_no_versionTz	-packages�test�testsz+removing dist-packages/%s (too common name)zremoving unwanted: %sz.so.rzremoving dangling symlink: %s�sozcannot parse shebang %s: %s�pyzremoving empty directory: %srzpackage %s details = %s)r6r7rr);r �implr�proot�stripr�dpathr!�set�resultr�walkZ
should_ignore�current_private_dir�current_pub_versionr(�current_dir_is_public�endswith�addrrr
r.�check_private_dir�
is_bin_dir�handle_bin_dir�is_unwanted_dir�
is_egg_dir�handle_egg_dir�sorted�is_unwanted_file�is_egg_file�handle_egg_filerrrr+r	r'�
rename_ext�
handle_ext�current_result�
setdefault�statrrr
r�no_shebang_rewriter�shebang�ignore_shebangsr�	from_file�	Exception�handle_public_moduler�rsplit�
startswith)�selfr rr=r!�root�dirs�
file_namesr�namerG�fn�fpathZfextZver�mode�res�er$r$r%�__init__qs�										"
				
	




"
"		
&!	

	z
Scan.__init__cCs*|jr#|jdj|ji�S|jS)Nr4)rAr?rS)r]r$r$r%rR�s	zScan.current_resultcCs|jjj|�S)N)�	__class__�
UNWANTED_DIRS�match)r]r=r$r$r%rIszScan.is_unwanted_dircCs_|jjj|�rdS|jr[|jr[|jjr[t|�ddd�dkr[dSdS)NTrr8�hr)zsork)rh�UNWANTED_FILESrjrC�is_dbg_packager!�
clean_dbg_pkgr	)r]rcr$r$r%rMs zScan.is_unwanted_filecsH�jr�jgS�jdkr+g}n�fdd�dD�}|S)	NFcsg|]}|�j�qSr$)r)�.0r/)r]r$r%�
<listcomp>s	z.Scan.private_dirs_to_check.<locals>.<listcomp>�
usr/lib/%s�usr/lib/games/%s�usr/share/%s�usr/share/games/%s)rqrrrsrt)r=)r]r?r$)r]r%�private_dirs_to_checks	
	
zScan.private_dirs_to_checkcCs|jjd�S)Nz-dbg)rrD)r]r$r$r%rmszScan.is_dbg_packagecCs>x7|jD],}|jtd|j|��r
d|Sq
WdS)z0Return private dir's root if it's a private dir.r2rN)rur\rr)r]r=r/r$r$r%rF!szScan.check_private_dirc	Cst|jdd�\}}|jr�t|�r�|}t�}x5t|�rs|j|�t|tj|��}q?Wt|�r�dt	|�dkr�x+|D]#}t
jd|�tj|�q�Wt
jd||�tj
||�tj|�r�|S|jj||j�}|rpt||�}t|�rIt
jd||�n#t
jd||�tj
||�|S|S)z�Add multiarch triplet, etc. Return new name.

        This method is invoked for all .so files in public or private directories.
        rrz.so.zremoving symlink: %szrenaming %s to %sz.destination file exist, cannot rename %s to %sr)r[rCrr>rErr�readlinkrrrr+r.�renamerrjr r)rBr*)	r]rc�path�fnameZdstfpathZlinksZlpathZnew_fnZ	new_fpathr$r$r%rP's2	
"
	
zScan.rename_extcCsdS)z0Handle .so file, return its version if detected.Nr$)r]rcr$r$r%rQMszScan.handle_extcCsdS)Nr$)r]rcr$r$r%rZPszScan.handle_public_modulecCsH|jd�jdd�}t|�dkr1dS|jd	�rDdSdS)
z#Check if dir is one from PATH ones.r�F�/sbin�/bin�
/usr/gamesTN)r{r|r})r<r�lenrD)r]r=Zspathr$r$r%rGSs
zScan.is_bin_dircCs�|jjs|jjrdSx�|D]�}t||�}t||jj�r#ytj|�}Wn8tk
r�}zt	j
d||�WYdd}~Xq#X|jdj|�q#WdS)Nzcannot parse shebang %s: %sr3)
r!rUrWrrrVrrXrYrrr?rE)r]r=r`rbrcrerfr$r$r%rH]s
&zScan.handle_bin_dircCs
|jd�S)z+Check if given directory contains egg-info.z	.egg-info)rD)r]�dnamer$r$r%rJjszScan.is_egg_dircCsU|jdd�\}}|jr;|jjr;t|�dSt|�}||kr�tt||��r�tj	d||�t|�dStj	d||�t
j|t||��|}t||�}|rQd|kr�|jdj
t|d��d|kr"|jdj
t|d��d|krQt
jt|d��|jd�dS)	Nrrz%removing %s (%s is already available)zrenaming %s to %szrequires.txtznamespace_packages.txtznsp.txtzSOURCES.txt)r[rmr!rnr
rrrrr+rrwr?rEr.)r]r=r`rxr�
clean_namer$r$r%rKns,

zScan.handle_egg_dircCs
|jd�S)z&Check if given file contains egg-info.z	.egg-info)rD)r]rcr$r$r%rN�szScan.is_egg_filecCs�|jdd�\}}t|�}||kr�tt||��rhtjd||�tj|�n,tjd||�tj|t||��|j	dj
t||��dS)Nrrz%removing %s (%s is already available)zrenaming %s to %szegg-info)r[rrrrr+rr.rwr?rE)r]rcr^rar�r$r$r%rO�s	
zScan.handle_egg_filecCs�|jr�|jjr�|jd}x_tj|dd�D]H\}}}d|kr8|r8ytj|�Wq8tk
rYq8Xq8WdS)Nz/usr/lib�topdownFz
-packages/)rmr!rnr;rr@rrY)r]r;r^r_r`r$r$r%�cleanup�s
%
zScan.cleanup)�__name__�
__module__�__qualname__�rer5rirlrg�propertyrRrIrMrurmrFrPrQrZrGrHrJrKrNrOr�r$r$r$r%r1ms&�&


r1)!Zloggingrr�Zfilecmprr-�os.pathrrrrrrr	Zshutilr
rTrrr
rrrZdhpython.toolsrrZdhpython.interpreterrZ	getLoggerrr&rr1r$r$r$r%�<module>s4"%%

Zerion Mini Shell 1.0