/ lib / ctypes / util.pyc
util.pyc
 1  o

 2  4�Hc�7�@s@ddlZddlZddlZddlZejdkr"dd�Zdd�Zdd�Znoejd	kr7ejd
 3  kr7ddl	m
 4  Zdd�ZnZej�d
�rDddl
mZnMejd	kr�ddlZddlZdd�Zdd�Zejdkrcdd�Zndd�Zej�d�rvdd�Zdd�Znejdkr�dd�Zd'dd�Zndd �Zd!d"�Zd#d�Zd$d%�Zed&kr�e�dSdS)(�N�ntcCs�d}tj�|�}|dkrdS|t|�}tj|d��dd�\}}t|dd��d}|dkr3|d7}t|d	d
 5  ��d}|dkrCd}|dkrK||SdS)
z�Return the version of MSVC that was used to build Python.
 6  
 7          For Python 2.3 and up, the version number is included in
 8          sys.version.  For earlier versions, assume the compiler is MSVC 6.
 9          zMSC v.������N� �������
��g$@r)�sys�version�find�len�split�int)�prefix�i�s�rest�majorVersion�minorVersion�r�sC:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2800.0_x64__qbz5n2kfra8p0\lib\ctypes\util.py�_get_build_version	srcCs^t�}|dur	dS|dkrd}n
|dkrd|d}ndSddl}d|jjvr+|d	7}|d
10  S)z%Return the name of the VC runtime dllNr�msvcrtrzmsvcr%d�
11  rz_d.pyd�d�.dll)r�importlib.machinery�	machinery�EXTENSION_SUFFIXES)rZclibname�	importlibrrr�find_msvcrt"sr"cCsx|dvrt�Stjd�tj�D])}tj�||�}tj�|�r#|S|���	d�r+q|d}tj�|�r9|SqdS)N)�c�m�PATHr)
12  r"�os�environr�pathsep�path�join�isfile�lower�endswith)�name�	directory�fnamerrr�find_library7s�r1�posix�darwin)�	dyld_findc	CsHd|d|d||fg}|D]}zt|�WSty!YqwdS)Nzlib%s.dylibz%s.dylibz%s.framework/%s)�
13  _dyld_find�
14  ValueError)r.�possiblerrrr1Hs
15  ���aix)r1cCs@d}t|d��}|�d�|kWd�S1swYdS)z,Return True if the given file is an ELF filesELF�br�N)�open�read)�filename�
16  elf_header�thefilerrr�_is_elf`s$�r@c
17  Csft�dt�|��}t�d�}|st�d�}|sdSt��}zh|dd|jd|g}t	tj
18  �}d|d<d|d	<z
tj|tj
tj|d
19  �}Wnty^YWz|��WdSty]YdSww|�
|j��}Wd�n1sqwYWz|��Wnty�Ynwz|��Wwty�Ywwt�||�}|s�dS|D]
}	t|	�s�q�t�|	�SdS)N�[^\(\)\s]*lib%s\.[^\(\)\s]*�gcc�ccz-Wl,-t�-oz-l�C�LC_ALL�LANG��stdout�stderr�env)r&�fsencode�re�escape�shutil�which�tempfile�NamedTemporaryFiler.�dictr'�
20  subprocess�Popen�PIPE�STDOUT�OSError�close�FileNotFoundErrorrIr<�findallr@�fsdecode)
21  r.�expr�
22  c_compiler�temp�argsrK�proc�trace�res�filerrr�_findLib_gccfs`
23  
24  
25  
26  ���������re�sunos5cCs�|sdSztjdd|ftjtjd�}Wn
27  tyYdSw|�
|j��}Wd�n1s0wYt�d|�}|s?dSt	�
28  |�d��S)Nz/usr/ccs/bin/dumpz-Lpv�rIrJs\[.*\]\sSONAME\s+([^\s]+)r)rTrUrV�DEVNULLrXrIr<rM�searchr&r\�group)�fra�datarcrrr�_get_soname�s"
29  ���rmcCs�|sdSt�d�}|s
dSztj|ddd|ftjtjd�}Wn
30  ty(YdSw|�
|j��}Wd�n1s;wYt	�
31  d|�}|sJdSt�|�
d��S)N�objdump�-pz-jz.dynamicrgs\sSONAME\s+([^\s]+)r)rOrPrTrUrVrhrXrIr<rMrir&r\rj)rkrnra�dumprcrrrrm�s(
32  
33  ���)�freebsd�openbsdZ	dragonflycCsN|�d�}g}z|r|�dt|����|s
34  Wn	ty Ynw|p&tjgS)N�.r)r�insertr�popr6r�maxsize)�libname�parts�numsrrr�_num_version�s
35  ���rzcCs�t�|�}d||f}t�|�}ztjdtjtjd�}Wnty'd}Ynw|�
|j	�
36  �}Wd�n1s:wYt�||�}|sMtt
|��S|jtd�t�|d�S)Nz:-l%s\.\S+ => \S*/(lib%s\.\S+))�/sbin/ldconfigz-rrg�)�keyr)rMrNr&rLrTrUrVrhrXrIr<r[rmre�sortrzr\)r.�enamer]rarlrcrrrr1�s&
37  
38  
39  ���c	Cs�tj�d�sdSttj�}d|d<|rd}nd}d}z
tj|tjtj|d�}Wn
40  t	y1YdSw|� |j
41  D]}|��}|�d�rLt�
|���d}q8Wd�n1sWwY|s`dS|�d	�D]}tj�|d
42  |�}tj�|�rz|SqedS)N�
/usr/bin/crlerErF)r��-64)r�rHsDefault Library Path (ELF):r:�:zlib%s.so)r&r)�existsrSr'rTrUrVrhrXrI�strip�
43  startswithr\rr*)	r.�is64rKr`�pathsra�line�dir�libfilerrr�
_findLib_crle�sB
44  
45  ��
46  
47  ����r�FcCstt||�p	t|��S�N)rmr�re)r.r�rrrr1	scCsddl}|�d�dkrt��jd}nt��jd}dddddd	�}|�|d
48  �}d}t�|t�|�|f�}zBt	j
49  dd
gt	jt	jt	jddd�d��%}t�
||j���}|ret�|�d��Wd�WSWd�WdS1sqwYWdSty�YdSw)Nr�lr:z-32r�zlibc6,x86-64zlibc6,64bitzlibc6,IA-64)z	x86_64-64zppc64-64z
50  sparc64-64zs390x-64zia64-64Zlibc6z\s+(lib%s\.[^\s]+)\s+\(%sr{rorE)rFrG)�stdinrJrIrKr)�struct�calcsizer&�uname�machine�getrLrMrNrTrUrhrVrirIr<r\rjrX)r.r�r�Zmach_mapZabi_type�regex�prcrrr�_findSoname_ldconfigs<�
51  ��&��r�cCs�dt�|�}ddg}tj�d�}|r"|�d�D]	}|�d|g�q|�dtjd|g�d}z.tj	|tj
52  tj
53  d	d
54  �}|��\}}t�|t�
|��}	|	D]}
55  t|
56  �sSqLt�
|
57  �WSW|StygY|Sw)NrA�ldz-t�LD_LIBRARY_PATHr�z-LrDz-l%sT)rIrJ�universal_newlines)rMrNr&r'r�r�extend�devnullrTrUrV�communicater[r\r@�	Exception)r.r]�cmd�libpathr�resultr��out�_rcrdrrr�_findLib_ld,s2
58  ��	��r�cCs t|�ptt|��ptt|��Sr�)r�rmrer�)r.rrrr1Gs
59  
60  �
61  �cCs�ddlm}tjdkrt|j�t|�d��ttd��tjdkr�ttd��ttd��ttd��tj	d	krWt|�
62  d
63  ��t|�
64  d��t|�
65  d��t|�
66  d
��dStj	�d�r�ddlm}tj
dkr�td|dtj����td|�
67  d����ttd��t|�
68  d��ntd|dtj����td|�
69  d����tdtd����td|�
70  td�����tdtd����td|�
71  td�����dSt|�
72  d��t|�
73  d��ttd��dSdS)Nr)�cdllrrr2r$r#�bz2r3z
74  libm.dylibzlibcrypto.dylibzlibSystem.dylibzSystem.framework/Systemr8)�CDLLlz"Using CDLL(name, os.RTLD_MEMBER): z
libc.a(shr.o)zUsing cdll.LoadLibrary(): �rpmz	librpm.sozlibc.a(shr_64.o)z	crypt	:: �cryptz
75  crypto	:: �cryptozlibm.sozlibcrypt.so)�ctypesr�r&r.�printr�loadr1r�platform�LoadLibraryr�r�rv�RTLD_MEMBER)r�r�rrr�testOs>
76  
77  
78  
79  
80  �r��__main__)F)r&rOrTrr.rr"r1r��ctypes.macholib.dyldr4r5r��ctypes._aixrMrQr@rermrzr�r�r�r��__name__rrrr�<module>sB
81  
82  
83  
84  
85  2
86  
87  
88  $(
89  �