
    h8                        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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         "/usr/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                      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 r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mPATHr    )
r&   osenvironr   pathseppathjoinisfilelowerendswith)name	directoryfnames      r   find_libraryr6   7   s    :== 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)r3   possibles     r   r6   r6   H   sv    !D(%)-tt46  	 	D!$'''''   ts   '
44aix)r6   c                     d}t          | d          5 }|                    d          |k    cddd           S # 1 swxY w Y   dS )z,Return True if the given file is an ELF files   ELFbr   N)openread)filename
elf_headerthefiles      r   _is_elfrG   `   s    
(D!! 	1W<<??j0	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   9= =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)r+   fsencodereescapeshutilwhichtempfileNamedTemporaryFiler3   dictr,   
subprocessPopenPIPESTDOUTOSErrorcloseFileNotFoundErrorrQ   rC   findallrG   fsdecode)
r3   expr
c_compilertempargsrS   proctraceresfiles
             r   _findLib_gccrm   f   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rQ   rR   s   \[.*\]\sSONAME\s+([^\s]+)r   )r\   r]   r^   DEVNULLr`   rQ   rC   rU   searchr+   rd   group)fri   datark   s       r   _get_sonamerv      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.dynamicrp   s   \sSONAME\s+([^\s]+)r   )rW   rX   r\   r]   r^   rq   r`   rQ   rC   rU   rr   r+   rd   rs   )rt   rx   ri   dumprk   s        r   rv   rv      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   popr<   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-rrp   r   )keyr   )rU   rV   r+   rT   r\   r]   r^   rq   rQ   rC   r`   rc   rv   rm   sortr   rd   )r3   enamere   ri   ru   rk   s         r   r6   r6      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/crlerM   rN   )r   -64)r   rP   s   Default Library Path (ELF):rA   :zlib%s.so)r+   r.   existsr[   r,   r\   r]   r^   rq   r`   rQ   strip
startswithrd   r   r/   )	r3   is64rS   rh   pathsri   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)rv   r   rm   )r3   r   s     r   r6   r6   	  s'    }T488NL<N<NOOOr   c           	         dd l }t          j                    }|j                            d          rd}|                    d          dk    r|j        dz   }n
|j        dz   }d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   armlrA   z-32r   zlibc6,x86-64zlibc6,64bitzlibc6,IA-64zlibc6(,hard-float)?)z	x86_64-64zppc64-64z
sparc64-64zs390x-64zia64-64zarm-32libc6z\s+(lib%s\.[^\s]+)\s+\(%sr   ry   rM   )rN   rO   )stdinrR   rQ   rS   r   )structr+   unamemachiner   calcsizegetrT   rU   rV   r\   r]   rq   r^   rr   rQ   rC   rd   rs   r`   )	r3   r   r   r   mach_mapabi_typeregexprk   s	            r   _findSoname_ldconfigr     s   MMM
 HJJE}''..  s##q((-%/-%/+)+)( 0	 	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 E( E( EE( "E#E( (
E65E6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 )NrI   ldz-tLD_LIBRARY_PATHr   z-LrL   z-l%sT)rQ   rR   universal_newlines)rU   rV   r+   r,   r   r   extenddevnullr\   r]   r^   communicaterc   rd   rG   	Exception)r3   re   cmdlibpathr   resultr   out_rk   rl   s              r   _findLib_ldr   7  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   rv   rm   r   )r3   s    r   r6   r6   R  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   r7   r)   r(   bz2r8   z
libm.dylibzlibcrypto.dylibzlibSystem.dylibzSystem.framework/Systemr>   )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   r+   r3   printr   loadr6   r   platformLoadLibraryr   r   r   RTLD_MEMBER)r   r   s     r   testr   Z  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)r+   rW   r\   r   r3   r   r&   r6   r   ctypes.macholib.dyldr9   r;   r   ctypes._aixrU   rY   rG   rm   rv   r   r   r   r   r   __name__ r   r   <module>r      s7   				      



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