U
    .d                     @   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d ZdS )    N   )VerificationErrorsourcesinclude_dirslibrary_dirsextra_objectsdepends c                 K   sH   t   ddlm} | g}|D ]}|tj| q|f ||d|S )Nr   )	Extension)namer   )_hack_at_distutilsdistutils.corer
   appendospathnormpath)Zsrcfilenamemodnamer   kwdsr
   Z
allsourcessrcr	   r	   4/tmp/pip-unpacked-wheel-ydtb9bbb/cffi/ffiplatform.pyget_extension   s    r   c              
   C   sb   t   tj }zt| |||}tj|}W 5 | D ]"\}}tj||kr8|tj|< q8X |S )z-Compile a C extension module using distutils.)	r   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} dd l}dd l}|d|gi}|  |d}|d krLtjj}d|f|d< d|d< d| f|d	< d| f|d
< zR|j	
dpd}z.|j	| |d |d}	|	 \}
W 5 |j	
| X W nD |jj|jjfk
r } ztd|jj|f W 5 d }~X Y nX |
S )Nr   )Distributionext_modules	build_extffiplatformr    )r'   Tforce	build_lib
build_tempz%s: %s)r   r$   distutils.errorsZdistutils.logparse_config_filesget_option_dictsysflagsr    logset_thresholdset_verbosityrun_commandget_command_objget_outputserrorsCompileError	LinkErrorr   	__class____name__)r   r   r   r    r$   	distutilsdistoptionsZ	old_levelcmd_objZsonameer	   r	   r   r       s0    


&r   )samefilec                 C   s   t j| t j|kS N)r   r   r   )f1f2r	   r	   r   r@   A   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 rA   )
r   r   isabssplitr   r@   curdirreversejoinOSError)r   dirnamesZprevdirr   r	   r	   r   maybe_relative_pathD   s    
rL   c                 C   s   t | tr"|dt| | f  nt | trnt|  }|dt|  |D ]}t|| t| | | qNn`t | tt	fr|dt|   | D ]}t|| qn*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frS   r!   r"   r	   r	   r   rT   _   s"    



rT   c                 C   s   t  }t| | | S rA   )	cStringIOStringIOrT   getvalue)rY   rZ   r	   r	   r   flattenr   s    
r^   c                  C   s0   t jdkr,zdd l} W n tk
r*   Y nX d S )Nwin32r   )r.   platform
setuptoolsImportError)ra   r	   r	   r   r   w   s
    
r   )r	   )r   N)r   N)r.   r   errorr   ZLIST_OF_FILE_NAMESr   r#   r   os.pathr@   rb   rL   intlongrW   r[   	NameErroriorT   r^   r   r	   r	   r	   r   <module>   s,    


