Viewing File: /opt/alt/python38/lib64/python3.8/ctypes/__pycache__/util.cpython-38.pyc

U

i�f76�@sBddlZddlZddlZddlZejdkrDdd�Zdd�Zdd�Zn�ejd	krnejd
krnddl	m
Zd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/python38/lib64/python3.8/ctypes/util.py�_get_build_version	srcCs^t�}|dkrdS|dkr d}n|dkr6d|d}ndSddl}d|jjkrV|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|dkrt�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	CsPd|d|d||fg}|D],}zt|�WStk
rHYqYqXqdS)Nzlib%s.dylibz%s.dylibz%s.framework/%s)�
_dyld_find�
ValueError)r,�possiblerrrr-Hs
��aix)r-c
Cs4d}t|d��}|�d�|kW5QR�SQRXdS)z,Return True if the given file is an ELF filesELF�br�N)�open�read)�filenameZ
elf_headerZthefilerrr�_is_elf`sr:c
Cs t�dt�|��}t�d�}|s,t�d�}|s4dSt��}z�|dd|j
d|g}ttj�}d|d<d|d	<zt
j|t
jt
j|d
�}Wntk
r�YW�$dSX|�|j��}W5QRXW5z|��Wnt	k
r�YnXXt�||�}|s�dS|D]}	t|	��s�q�t�|	�SdS)N�[^\(\)\s]*lib%s\.[^\(\)\s]*ZgccZccz-Wl,-t�-oz-l�C�LC_ALL�LANG��stdout�stderr�env)r$�fsencode�re�escape�shutil�which�tempfileZNamedTemporaryFile�close�FileNotFoundErrorr,�dictr%�
subprocess�Popen�PIPEZSTDOUT�OSErrorrAr8�findallr:�fsdecode)
r,�exprZ
c_compilerZtemp�argsrC�procZtrace�res�filerrr�_findLib_gccfsB


�

rXZsunos5c	Cs||sdSztjdd|ftjtjd�}Wntk
r<YdSX|�|j��}W5QRXt�d|�}|sldSt	�
|�d��S)Nz/usr/ccs/bin/dumpz-Lpv�rArBs\[.*\]\sSONAME\s+([^\s]+)r)rMrNrO�DEVNULLrPrAr8rE�searchr$rR�group)�frU�datarVrrr�_get_soname�s�
r_c	Cs�|sdSt�d�}|sdSz"tj|ddd|ftjtjd�}Wntk
rRYdSX|�|j��}W5QRXt	�
d|�}|s�dSt�|�
d��S)N�objdump�-pz-jz.dynamicrYs\sSONAME\s+([^\s]+)r)rGrHrMrNrOrZrPrAr8rEr[r$rRr\)r]r`rU�dumprVrrrr_�s$
�
)ZfreebsdZopenbsdZ	dragonflycCsN|�d�}g}z|r*|�dt|����qWntk
r@YnX|pLtjgS)N�.r)r�insertr�popr2r�maxsize)Zlibname�partsZnumsrrr�_num_version�s
rhc	Cs�t�|�}d||f}t�|�}ztjdtjtjd�}Wntk
rPd}YnX|�|j	�
�}W5QRXt�||�}|s�tt
|��S|jtd�t�|d�S)Nz:-l%s\.\S+ => \S*/(lib%s\.\S+))�/sbin/ldconfigz-rrY�)�keyr)rErFr$rDrMrNrOrZrPrAr8rQr_rX�sortrhrR)r,ZenamerSrUr^rVrrrr-�s"

�

c		Cs�tj�d�sdSttj�}d|d<|r,d}nd}d}ztj|tjtj|d�}Wnt	k
rdYdSX|�6|j
D](}|��}|�d�rrt�
|���d}qrW5QRX|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'�existsrLr%rMrNrOrZrPrA�strip�
startswithrRrr()	r,�is64rCrT�pathsrU�line�dirZlibfilerrr�
_findLib_crle�s8
�



rwFcCstt||�pt|��S�N)r_rwrX)r,rsrrrr-	sc
Cs�ddl}|�d�dkr&t��jd}nt��jd}dddddd	�}|�|d
�}d}t�|t�|�|f�}zht	j
dd
gt	jt	jt	jddd�d��:}t�
||j���}|r�t�|�d��W5QR�WSW5QRXWntk
r�YnXdS)Nr�lr6z-32rnzlibc6,x86-64zlibc6,64bitzlibc6,IA-64)z	x86_64-64zppc64-64z
sparc64-64zs390x-64zia64-64Zlibc6z\s+(lib%s\.[^\s]+)\s+\(%srirar=)r>r?)�stdinrBrArCr)�structZcalcsizer$�uname�machine�getrDrErFrMrNrZrOr[rAr8rRr\rP)r,r{r}Zmach_mapZabi_typeZregex�prVrrr�_findSoname_ldconfigs4�
�,r�cCs�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�
|
�WSWntk
r�YnX|S)Nr;Zldz-tZLD_LIBRARY_PATHroz-Lr<z-l%sT)rArBZuniversal_newlines)rErFr$r%r~r�extend�devnullrMrNrOZcommunicaterQrRr:�	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.sozlibcrypt.so)Zctypesr�r$r,�printr�loadr-r�platformZLoadLibraryrrr�rfZRTLD_MEMBER)r�r�rrr�testOs<


r��__main__)F)r$rGrMrr,rr r-r�Zctypes.macholib.dyldr0r1rrZctypes._aixrErIr:rXr_rhrwr�r�r��__name__rrrr�<module>s>


2


$(

Back to Directory File Manager