o
    
þðcÎ  ã                   @   sÆ   d dl Z d dlZddlmZ g d¢Zddd„Zddd	„Zdd
d„Zzd dlm	Z	 W n e
y6   dd„ Z	Y nw dd„ Zz
eefZd dlZW n eyT   eZd dlZY nw 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|d||dœ|¤ŽS )Nr   )Ú	Extension)Únamer   r	   )Ú_hack_at_distutilsÚdistutils.corer
   ÚappendÚosÚpathÚnormpath)ÚsrcfilenameÚmodnamer   Úkwdsr
   Ú
allsourcesÚsrcr	   r	   ú=/opt/certbot/lib/python3.10/site-packages/cffi/ffiplatform.pyÚget_extension   s   r   c              
   C   sŒ   t ƒ  tj ¡ }z&t| |||ƒ}tj |¡}W | ¡ D ]\}}tj |¡|kr,|tj|< q|S | ¡ D ]\}}tj |¡|krD|tj|< q3w )z-Compile a C extension module using distutils.)	r   r   ÚenvironÚcopyÚ_buildr   ÚabspathÚitemsÚget)ÚtmpdirÚextÚcompiler_verboseÚdebugÚsaved_environÚoutputfilenameÚkeyÚvaluer	   r	   r   Úcompile   s   

€ý
€þr'   c              
   C   s  ddl m} dd l}dd l}|d|giƒ}| ¡  | d¡}|d u r&tjj}d|f|d< d|d< d| f|d	< d| f|d
< z/|j	 
d¡pDd}z|j	 |¡ | d¡ | d¡}	|	 ¡ \}
W |j	 
|¡ W |
S |j	 
|¡ w  |jj|jjfy‡ } z
td|jj|f ƒ‚d }~ww )Nr   )ÚDistributionÚext_modulesÚ	build_extÚffiplatformr"   )r+   TÚforceÚ	build_libÚ
build_tempz%s: %s)r   r(   Údistutils.errorsÚ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ÚoptionsÚ	old_levelÚcmd_objÚsonameÚer	   r	   r   r       s6   


ûÿ€þr   )Úsamefilec                 C   s   t j | ¡t j |¡kS ©N)r   r   r   )Úf1Úf2r	   r	   r   rG   A   s   rG   c                 C   s„   t j | ¡s| S | }g }	 |}t j |¡\}}||ks|s| S | |¡ zt|t jƒr6| ¡  t jj|Ž W S W n	 t	y@   Y nw qrH   )
r   r   ÚisabsÚsplitr   rG   ÚcurdirÚreverseÚjoinÚOSError)r   ÚdirÚnamesÚprevdirr   r	   r	   r   Úmaybe_relative_pathD   s&   
þÿörT   c                 C   sÖ   t | tƒr| dt| ƒ| f ¡ d S t | tƒr9t|  ¡ ƒ}| dt|ƒ ¡ |D ]}t||ƒ t| | |ƒ q(d S t | tt	fƒrU| dt| ƒ ¡ | D ]}t||ƒ qKd S t | t
ƒrd| d| f ¡ d S td| f ƒ‚)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Úfr[   r%   r&   r	   r	   r   r\   _   s&   


þÿ
ÿr\   c                 C   s   t  ¡ }t| |ƒ | ¡ S rH   )Ú	cStringIOÚStringIOr\   Úgetvalue)ra   rb   r	   r	   r   Úflattenr   s   
rf   c                  C   s2   t jdkrzdd l} W d S  ty   Y d S w d S )NÚwin32r   )r3   ÚplatformÚ
setuptoolsÚImportError)ri   r	   r	   r   r   w   s   
ÿýr   )r	   )r   N)r3   r   Úerrorr   ÚLIST_OF_FILE_NAMESr   r'   r   Úos.pathrG   rj   rT   ÚintÚlongr_   rc   Ú	NameErrorÚior\   rf   r   r	   r	   r	   r   Ú<module>   s,    


ÿþ