
    f7                        d dl Z d dlZd dlZd dlZe j        dk    rd Zd Zd Zd Zne j        dk    rej	        dk    r
d d	l
mZ d
 Znej	                            d          rd dlmZ nhe j        dk    r]d dlZd dlZd Zd Zej	        dk    rd Znd Zej	                            d          rd Zd Znej	        dk    rd ZddZn	d Zd Zd Zd Zedk    r e             dS dS )    Nntc                  v   d} t           j                            |           }|dk    rdS |t          |           z   }t           j        |d                             dd          \  }}t          |dd                   dz
  }|dk    r|dz  }t          |d	d
                   dz  }|dk    rd}|dk    r||z   S dS )zReturn 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.
        zMSC v.   N             g      $@r   )sysversionfindlensplitint)prefixisrestmajorVersionminorVersions          ../lib/python3.11/ctypes/util.py_get_build_versionr   	   s     KV$$771FO+abb/''Q//41SbS6{{Q2AL1QqS6{{T)1L1,..t    c                      dt           j                                        v pdt           j                                        v } | rd S dS )Nclangucrtz
msvcrt.dll)r   r   lower)is_ucrts    r   find_msvcrt_mingwr!   "   sD    S[..000QFck>O>O>Q>Q4Q 	4|r   c                      t                      } | dS | dk    rd}n| dk    r	d| dz  z  }ndS ddl}d|j        j        v r|d	z  }|d
z   S )z%Return the name of the VC runtime dllNr   msvcrtr
   zmsvcr%d
   r   z_d.pydd.dll)r   importlib.machinery	machineryEXTENSION_SUFFIXES)r   clibname	importlibs      r   find_msvcrtr,   (   sy    $&&?4a<<HH]] GbL1HH 4 	#"""y*===OHr   c                 &   | dv rGdd l }|                                                    d          rt                      S t	                      S t
          j        d                             t
          j                  D ]}t
          j	        
                    ||           }t
          j	                            |          r|c S |                                                    d          rm|dz   }t
          j	                            |          r|c S d S )N)cmr   mingwPATHr&   )	sysconfigget_platform
startswithr!   r,   osenvironr   pathseppathjoinisfiler   endswith)namer2   	directoryfnames       r   find_libraryr?   =   s    :%%''227;; +(***== F+11"*== 	 	IGLLD11Ew~~e$$ {{}}%%f-- FNEw~~e$$ tr   posixdarwin)	dyld_findc                 r    d| z  d| z  | d| g}|D ]#} 	 t          |           c S # t          $ r Y  w xY wd S )Nzlib%s.dylibz%s.dylibz.framework/)
_dyld_find
ValueError)r<   possibles     r   r?   r?   Q   sv    !D(%)-tt46  	 	D!$'''''   ts   '
44aix)r?   c                     d}	 t          | d          5 }|                    d          |k    cddd           S # 1 swxY w Y   dS # t          $ r Y dS w xY w)z,Return True if the given file is an ELF files   ELFbr   NF)openreadFileNotFoundError)filename
elf_headerthefiles      r   _is_elfrQ   i   s    
	h%% 5||A*45 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5  	 	 	55	s.   A :A >A >A 
AAc                    t          j        dt          j        |           z            }t	          j        d          }|st	          j        d          }|sd S t          j                    }	 |dd|j        d| z   g}t          t           j
                  }d|d<   d|d	<   	 t          j        |t          j        t          j        |
          }n7# t          $ r* Y 	 |                                 d S # t"          $ r Y d S w xY ww xY w|5  |j                                        }d d d            n# 1 swxY w Y   	 |                                 n:# t"          $ r Y n.w xY w# 	 |                                 w # t"          $ r Y w w xY wxY wt          j        ||          }|sd S |D ]'}	t+          |	          st          j        |	          c S d S )N[^\(\)\s]*lib%s\.[^\(\)\s]*gccccz-Wl,-t-oz-lCLC_ALLLANGstdoutstderrenv)r5   fsencodereescapeshutilwhichtempfileNamedTemporaryFiler<   dictr6   
subprocessPopenPIPESTDOUTOSErrorcloserM   r[   rL   findallrQ   fsdecode)
r<   expr
c_compilertempargsr]   proctraceresfiles
             r   _findLib_gccrv   r   sf   
 {9BIdOOKLL\%((
 	,d++J 	4*,,	$	4$;GDrz""CCMCK!'/9/9/@,/1 1 1    

$     + +((**+ + + + + + + + + + + + + + +

$    

$     ju%% 	4 	% 	%D 4== ;t$$$$$	% 	%s   ,2E ,C E 
D E C. .
C<;C<?D  E D+E +D//E 2D/3E 7E 
EEFE32F3
F =F?F  Fsunos5c                 r   | sd S 	 t          j        dd| ft           j        t           j                  }n# t          $ r Y d S w xY w|5  |j                                        }d d d            n# 1 swxY w Y   t          j        d|          }|sd S t          j
        |                    d                    S )Nz/usr/ccs/bin/dumpz-Lpvr[   r\   s   \[.*\]\sSONAME\s+([^\s]+)r   )rf   rg   rh   DEVNULLrj   r[   rL   r_   searchr5   rm   group)frr   datart   s       r   _get_sonamer      s    t!')<fa(H/9/9/AC C C    tt * *{''))* * * * * * * * * * * * * * *)94@@C t;syy||,,,s!   .5 
AAA..A25A2c                    | sd S t          j        d          }|sd S 	 t          j        |ddd| ft          j        t          j                  }n# t          $ r Y d S w xY w|5  |j                                        }d d d            n# 1 swxY w Y   t          j
        d|          }|sd S t          j        |                    d                    S )Nobjdump-pz-jz.dynamicry   s   \sSONAME\s+([^\s]+)r   )ra   rb   rf   rg   rh   rz   rj   r[   rL   r_   r{   r5   rm   r|   )r}   r   rr   dumprt   s        r   r   r      s/    tl9--G t!'$j!(L/9/9/AC C C    tt * *{''))* * * * * * * * * * * * * * *)3T::C t;syy||,,,s#   0A 
AA"BBB)freebsdopenbsd	dragonflyc                     |                      d          }g }	 |r7|                    dt          |                                                     |7n# t          $ r Y nw xY w|pt
          j        gS )N   .r   )r   insertr   poprE   r   maxsize)libnamepartsnumss      r   _num_versionr      s    MM$''ED 5KK3uyy{{#3#3444  5   (CK=(s   9A 
A A c                    t          j        |           }d|d|d}t          j        |          }	 t	          j        dt          j        t          j                  }|5  |j        	                                }d d d            n# 1 swxY w Y   n# t          $ r d}Y nw xY wt          j        ||          }|st          t          |                     S |                    t                     t          j        |d                   S )	Nz:-lz\.\S+ => \S*/(libz\.\S+))/sbin/ldconfigz-rry   r   )keyr   )r_   r`   r5   r^   rf   rg   rh   rz   r[   rL   rj   rl   r   rv   sortr   rm   )r<   enamern   rr   r~   rt   s         r   r?   r?      sO   IdOOEE8=uuuED;t$$D.!'(@/9/9/AC C C  . .;++--D. . . . . . . . . . . . . . .     *T4((C 7"<#5#5666HHH&&&;s2w'''s#   +B  BB
B
B! B!c                    t           j                            d          sd S t          t           j                  }d|d<   |rd}nd}d }	 t          j        |t
          j        t
          j        |          }n# t          $ r Y d S w xY w|5  |j
        D ]W}|                                }|                    d          r,t          j        |                                          d         }X	 d d d            n# 1 swxY w Y   |sd S |                    d	          D ]H}t           j                            |d
| z            }t           j                            |          r|c S Id S )N/usr/bin/crlerW   rX   )r   -64)r   rZ   s   Default Library Path (ELF):rJ   :zlib%s.so)r5   r8   existsre   r6   rf   rg   rh   rz   rj   r[   stripr4   rm   r   r9   )	r<   is64r]   rq   pathsrr   linedirlibfiles	            r   _findLib_crler      s   7>>/22 trz""CCM */)E!'/9/9/A,/1 1 1    tt = = K = =D::<<D'EFF = "D 1 1 7 7 9 9! <== = = = = = = = = = = = = = =  t{{3'' # #',,sJ,=>>7>>'** #"NNN# 4s%   
,A7 7
BB
A C77C;>C;Fc                 Z    t          t          | |          pt          |                     S N)r   r   rv   )r<   r   s     r   r?   r?     s'    }T488NL<N<NOOOr   c           	         dd l }|                    d          dk    rt          j                    j        dz   }nt          j                    j        dz   }dddddd	}|                    |d
          }d}t          j        |t          j        |           |fz            }	 t          j
        ddgt          j        t          j        t          j        ddd          5 }t          j        ||j                                                  }|r3t          j        |                    d                    cd d d            S 	 d d d            d S # 1 swxY w Y   d S # t$          $ r Y d S w xY w)Nr   lrJ   z-32r   zlibc6,x86-64zlibc6,64bitzlibc6,IA-64)z	x86_64-64zppc64-64z
sparc64-64zs390x-64zia64-64libc6z\s+(lib%s\.[^\s]+)\s+\(%sr   r   rW   )rX   rY   )stdinr\   r[   r]   r   )structcalcsizer5   unamemachinegetr^   r_   r`   rf   rg   rz   rh   r{   r[   rL   rm   r|   rj   )r<   r   r   mach_mapabi_typeregexprt   s           r   _findSoname_ldconfigr     s   MMMs##q(((**,u4(**,u4+)+)( H  ||GW55H 1EK4((C CDDE
%'7&>,6,>-7-?-7_58#*F*F	H H H 9 LM)E18==??;;C 9!{399Q<<889 9 9 9 9 9 9 999 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9    s=   !<E AE2E  E EE EE 
E('E(c                 v   dt          j        |           z  }ddg}t          j                            d          }|r/|                    d          D ]}|                    d|g           |                    dt          j        d| z  g           d }	 t          j	        |t          j
        t          j
        d	
          }|                                \  }}t          j        |t          j        |                    }	|	D ]'}
t          |
          st          j        |
          c S n# t          $ r Y nw xY w|S )NrS   ldz-tLD_LIBRARY_PATHr   z-LrV   z-l%sT)r[   r\   universal_newlines)r_   r`   r5   r6   r   r   extenddevnullrf   rg   rh   communicaterl   rm   rQ   	Exception)r<   rn   cmdlibpathr%   resultr   out_rt   ru   s              r   _findLib_ldr   8  sM   1BIdOOCD,Cjnn%677G * s++ * *AJJay))))JJbj&4-8999F$S,6O8<> > > Qjr{3'7'788 - -D #4== ! ;t,,,,,-    Ms   BD) )
D65D6c                     t          |           p7t          t          |                     pt          t          |                     S r   )r   r   rv   r   )r<   s    r   r?   r?   S  sE    '-- U|D1122U6A+dBSBS6T6TUr   c                     ddl m}  t          j        dk    rRt	          | j                   t	          |                     d                     t	          t          d                     t          j        dk    rt	          t          d                     t	          t          d                     t	          t          d                     t          j	        d	k    rt	          | 
                    d
                     t	          | 
                    d                     t	          | 
                    d                     t	          | 
                    d                     d S t          j	                            d          rddl m} t          j        dk     rt	          d |dt          j                              t	          d| 
                    d                      t	          t          d                     t	          | 
                    d                     nKt	          d |dt          j                              t	          d| 
                    d                      t	          dt          d                      t	          d| 
                    t          d                                t	          dt          d                      t	          d| 
                    t          d                                d S t	          | 
                    d                     t	          | 
                    d                     t	          t          d                     d S d S )Nr   )cdllr   r#   r@   r/   r.   bz2rA   z
libm.dylibzlibcrypto.dylibzlibSystem.dylibzSystem.framework/SystemrG   )CDLLl        z"Using CDLL(name, os.RTLD_MEMBER): zlibc.a(shr.o)zUsing cdll.LoadLibrary(): rpmz	librpm.sozlibc.a(shr_64.o)z	crypt	:: cryptz
crypto	:: cryptozlibm.sozlibcrypt.so)ctypesr   r5   r<   printr#   loadr?   r   platformLoadLibraryr4   r   r   RTLD_MEMBER)r   r   s     r   testr   [  s6   	w$dkdii!!"""l8$$%%%	w'l3   l3   l5!!""" <8##$""<00111$""#455666$""#455666$""#<==>>>>>\$$U++ 	)######{U""b44QSQ_;`;`bbcccV43C3CO3T3TVVWWWl5))***d&&{334444e44@RTVTb;c;ceefffY43C3CDV3W3WYYZZZ6|G4466777Ht//W0E0EFFHHIII8X 6 688999J 0 0h1G1G H HJJKKKKK$""9--...$""=11222,w''(((((? r   __main__)F)r5   ra   rf   r   r<   r   r!   r,   r?   r   ctypes.macholib.dyldrB   rD   r4   ctypes._aixr_   rc   rQ   rv   r   r   r   r   r   r   __name__ r   r   <module>r      sE   				      



 7d??  2    *   $ WCLH44<<<<<<	 	 	 	 	\U## zU )((((((W  /% /% /%d |x	- 	- 	- 	-"	- 	- 	-, |BCC IU		) 		) 		)	( 	( 	( 	(* 
	!	!"	 "	 "	H	P 	P 	P 	P 	P
	 	 	<	 	 	6	U 	U 	U&) &) &)P zDFFFFF r   