a XC?h76�@sBddlZddlZddlZddlZejdkrDdd�Zdd�Zdd�Zn�ejd krnejd krndd l m Z d d�Zn�ej� d �r�ddl mZn�ejd k�r&ddlZddlZdd�Zdd�Zejdkr�dd�Zndd�Zej� d�r�dd�Zdd�Zn8ejdk�rdd�Zd'dd�Zndd �Zd!d"�Zd#d�Zd$d%�Zed&k�r>e�dS)(�N�ntcCs�d}tj�|�}|dkrdS|t|�}tj|d��dd�\}}t|dd��d}|dkrf|d7}t|d d ��d }|dkr�d }|dkr�||SdS) z�Return the version of MSVC that was used to build Python. For Python 2.3 and up, the version number is included in sys.version. For earlier versions, assume the compiler is MSVC 6. zMSC v.������N� ������� ��g$@r)�sys�version�find�len�split�int)�prefix�i�s�restZ majorVersionZ minorVersion�r�0/opt/alt/python39/lib64/python3.9/ctypes/util.py�_get_build_version s  rcCs^t�}|durdS|dkr d}n|dkr6d|d}ndSddl}d|jjvrV|d 7}|d S) z%Return the name of the VC runtime dllNr�msvcrtrzmsvcr%d� rz_d.pyd�d�.dll)r�importlib.machinery� machinery�EXTENSION_SUFFIXES)r Zclibname� importlibrrr� find_msvcrt"s r cCsx|dvrt�Stjd�tj�D]R}tj�||�}tj�|�rF|S|��� d�rVq |d}tj�|�r |Sq dS)N)�c�m�PATHr) r �os�environr�pathsep�path�join�isfile�lower�endswith)�nameZ directoryZfnamerrr� find_library7s   r-�posix�darwin)� dyld_findc CsNd|d|d||fg}|D]*}zt|�WStyFYqYq0qdS)Nz lib%s.dylibz%s.dylibz%s.framework/%s)� _dyld_find� ValueError)r,�possiblerrrr-Hs �  �aix)r-cCs@d}t|d��}|�d�|kWd�S1s20YdS)z,Return True if the given file is an ELF filesELF�br�N)�open�read)�filenameZ elf_headerZthefilerrr�_is_elf`s r:c Cstt�dt�|��}t�d�}|s,t�d�}|s4dSt��}z�|dd|jd|g}t tj �}d|d<d|d <zt j |t j t j|d �}Wn6ty�YWz |��Wnty�Yn0dS0|�|j��}Wd�n1s�0YWz |��Wnt�yYn0n$z |��Wnt�y2Yn00t�||�}|�sLdS|D]} t| ��sb�qPt�| �SdS) N�[^\(\)\s]*lib%s\.[^\(\)\s]*ZgccZccz-Wl,-t�-oz-l�C�LC_ALL�LANG��stdout�stderr�env)r$�fsencode�re�escape�shutil�which�tempfileZNamedTemporaryFiler,�dictr%� subprocess�Popen�PIPEZSTDOUT�OSError�close�FileNotFoundErrorrAr8�findallr:�fsdecode) r,�exprZ c_compilerZtemp�argsrC�procZtrace�res�filerrr� _findLib_gccfsT   �    �* �   rXZsunos5cCs�|sdSztjdd|ftjtjd�}Wnty:YdS0|�|j��}Wd�n1s`0Yt�d|�}|s~dSt � |� d��S)Nz/usr/ccs/bin/dumpz-Lpv�rArBs\[.*\]\sSONAME\s+([^\s]+)r) rKrLrM�DEVNULLrNrAr8rE�searchr$rR�group)�frU�datarVrrr� _get_soname�s �  ( r_cCs�|sdSt�d�}|sdSz"tj|ddd|ftjtjd�}WntyPYdS0|�|j��}Wd�n1sv0Yt � d|�}|s�dSt � |� d��S)N�objdump�-pz-jz.dynamicrYs\sSONAME\s+([^\s]+)r)rGrHrKrLrMrZrNrAr8rEr[r$rRr\)r]r`rU�dumprVrrrr_�s$ �  ( )ZfreebsdZopenbsdZ dragonflycCsL|�d�}g}z|r*|�dt|����qWnty>Yn0|pJtjgS)N�.r)r�insertr�popr2r �maxsize)Zlibname�partsZnumsrrr� _num_version�s  rhcCs�t�|�}d||f}t�|�}ztjdtjtjd�}WntyNd}Yn00|�|j � �}Wd�n1st0Yt� ||�}|s�t t |��S|jtd�t�|d�S)Nz:-l%s\.\S+ => \S*/(lib%s\.\S+))�/sbin/ldconfigz-rrY�)�keyr)rErFr$rDrKrLrMrZrNrAr8rQr_rX�sortrhrR)r,ZenamerSrUr^rVrrrr-�s"   �   (   c Cs�tj�d�sdSttj�}d|d<|r,d}nd}d}ztj|tjtj|d�}Wnt ybYdS0|�@|j D](}|� �}|� d�rpt� |���d}qpWd�n1s�0Y|s�dS|�d �D]*}tj�|d |�}tj�|�r�|Sq�dS) N� /usr/bin/crler=r>)rm�-64)rmr@sDefault Library Path (ELF):r6�:zlib%s.so)r$r'�existsrJr%rKrLrMrZrNrA�strip� startswithrRrr() r,�is64rCrT�pathsrU�line�dirZlibfilerrr� _findLib_crle�s8  �    2  rwFcCstt||�pt|��S�N)r_rwrX)r,rsrrrr- scCsddl}|�d�dkr&t��jd}nt��jd}dddddd �}|�|d �}d }t�|t�|�|f�}z~t j d d gt j t j t j ddd�d��F}t� ||j���}|r�t�|�d��Wd�WSWd�n1s�0YWnty�Yn0dS)Nr�lr6z-32rnz libc6,x86-64z libc6,64bitz libc6,IA-64)z x86_64-64zppc64-64z sparc64-64zs390x-64zia64-64Zlibc6z\s+(lib%s\.[^\s]+)\s+\(%srirar=)r>r?)�stdinrBrArCr)�structZcalcsizer$�uname�machine�getrDrErFrKrLrZrMr[rAr8rRr\rN)r,r{r}Zmach_mapZabi_typeZregex�prVrrr�_findSoname_ldconfigs4�  �B r�c Cs�dt�|�}ddg}tj�d�}|rD|�d�D]}|�d|g�q0|�dtjd|g�d}zZtj |tj tj d d �}|� �\}}t� |t� |��} | D]} t| �s�q�t� | �WSWnty�Yn0|S) Nr;Zldz-tZLD_LIBRARY_PATHroz-Lr<z-l%sT)rArBZuniversal_newlines)rErFr$r%r~r�extend�devnullrKrLrMZ communicaterQrRr:� Exception) r,rS�cmdZlibpathr�resultr�out�_rVrWrrr� _findLib_ld,s,  �  r�cCs t|�ptt|��ptt|��Srx)r�r_rXr�)r,rrrr-Gs  � �cCs�ddlm}tjdkr:t|j�t|�d��ttd��tjdk�r�ttd��ttd��ttd��tj d kr�t|� d ��t|� d ��t|� d ��t|� d ���ntj � d��r�ddlm }tj dk�rtd|dtj����td|� d����ttd��t|� d��n*td|dtj����td|� d����tdtd����td|� td�����tdtd����td|� td�����n(t|� d��t|� d��ttd��dS)Nr)�cdllrrr.r"r!�bz2r/z libm.dylibzlibcrypto.dylibzlibSystem.dylibzSystem.framework/Systemr4)�CDLLlz"Using CDLL(name, os.RTLD_MEMBER): z libc.a(shr.o)zUsing cdll.LoadLibrary(): Zrpmz librpm.sozlibc.a(shr_64.o)z crypt :: Zcryptz crypto :: Zcryptozlibm.soz libcrypt.so)Zctypesr�r$r,�printr�loadr-r �platformZ LoadLibraryrrr�rfZ RTLD_MEMBER)r�r�rrr�testOs<            r��__main__)F)r$rGrKr r,rr r-r�Zctypes.macholib.dyldr0r1rrZ ctypes._aixrErIr:rXr_rhrwr�r�r��__name__rrrr�s>     2     $ (