U
    Ú²g   ã                   @   sÈ   d dl Z d dlZddlmZ dddddgZdd
d„Zddd„Zddd„Zzd dlm	Z	 W n e
k
rt   dd„ Z	Y nX dd„ ZzeefZd dlZW n  ek
r²   eZd dlZY nX dd„ Zdd„ ZdS )é    Né   )ÚVerificationErrorÚsourcesÚinclude_dirsÚlibrary_dirsÚextra_objectsÚdepends© c                 K   sB   ddl m} | g}|D ]}| tj |¡¡ q|f ||dœ|—ŽS )Nr   )Ú	Extension)Únamer   )Úcffi._shimmed_dist_utilsr
   ÚappendÚosÚpathÚnormpath)ZsrcfilenameÚmodnamer   Úkwdsr
   Z
allsourcesÚsrcr	   r	   ú4/tmp/pip-unpacked-wheel-lbi5ej3i/cffi/ffiplatform.pyÚget_extension   s
    r   c              
   C   s\   t j ¡ }zt| |||ƒ}t j |¡}W 5 | ¡ D ]"\}}t j |¡|kr2|t j|< q2X |S )z-Compile a C extension module using distutils.)r   ÚenvironÚcopyÚitemsÚgetÚ_buildr   Úabspath)ÚtmpdirÚextÚcompiler_verboseÚdebugZsaved_environÚkeyÚvalueZoutputfilenamer	   r	   r   Úcompile   s    
r"   c              
   C   sþ   ddl m}m}m}m}m} |d|giƒ}	|	 ¡  |	 d¡}
|d krLtj	j
}d|f|
d< d|
d< d| f|
d	< d| f|
d
< zF|dƒp„d}z*||ƒ |	 d¡ |	 d¡}| ¡ \}W 5 ||ƒ X W n: ||fk
rø } ztd|jj|f ƒ‚W 5 d }~X Y nX |S )Nr   )ÚDistributionÚCompileErrorÚ	LinkErrorÚset_thresholdÚset_verbosityÚext_modulesÚ	build_extÚffiplatformr   )r*   TÚforceÚ	build_libÚ
build_tempz%s: %s)r   r#   r$   r%   r&   r'   Úparse_config_filesÚget_option_dictÚsysÚflagsr   Úrun_commandÚget_command_objÚget_outputsr   Ú	__class__Ú__name__)r   r   r   r   r#   r$   r%   r&   r'   ÚdistÚoptionsZ	old_levelÚcmd_objZsonameÚer	   r	   r   r      s*    


&r   )Úsamefilec                 C   s   t j | ¡t j |¡kS ©N)r   r   r   )Úf1Úf2r	   r	   r   r;   =   s    r;   c                 C   sˆ   t j | ¡s| S | }g }|}t j |¡\}}||ks8|s<| S | |¡ z&t|t jƒrj| ¡  t jj|Ž W S W q t	k
r€   Y qX qd S r<   )
r   r   ÚisabsÚsplitr   r;   ÚcurdirÚreverseÚjoinÚOSError)r   ÚdirÚnamesZprevdirr   r	   r	   r   Úmaybe_relative_path@   s    
rG   c                 C   sÒ   t | tƒr"| dt| ƒ| f ¡ n¬t | tƒrnt|  ¡ ƒ}| dt|ƒ ¡ |D ]}t||ƒ t| | |ƒ qNn`t | tt	fƒr¤| dt| ƒ ¡ | D ]}t||ƒ q’n*t | t
ƒrÀ| d| f ¡ ntd| f ƒ‚d S )Nz%ds%sz%ddz%dlz%diz7the keywords to verify() contains unsupported object %r)Ú
isinstanceÚstrÚwriteÚlenÚdictÚsortedÚkeysÚ_flattenÚlistÚtupleÚint_or_longÚ	TypeError)ÚxÚfrN   r    r!   r	   r	   r   rO   [   s"    



ÿrO   c                 C   s   t  ¡ }t| |ƒ | ¡ S r<   )Ú	cStringIOÚStringIOrO   Úgetvalue)rT   rU   r	   r	   r   Úflattenn   s    
rY   )r	   )r   N)r   N)r0   r   Úerrorr   ZLIST_OF_FILE_NAMESr   r"   r   Úos.pathr;   ÚImportErrorrG   ÚintÚlongrR   rV   Ú	NameErrorÚiorO   rY   r	   r	   r	   r   Ú<module>   s*    ÿ


