
    0hP                     p    S SK r S SKrS SKrS SKrS SKrSSKJrJrJr  SSK	J
r
  S rS rS rS rS	 rS
 rg)    N   )get_libtool_commandextract_libtool_shlibhost_os)	CCompilerc                 f    / nU H(  n[        U5      nU(       d  M  UR                  U5        M*     U$ )N)r   append)optionsbinary	librariesshlibslibraryshlibs         ./lib/gobject-introspection/giscanner/shlibs.py_resolve_libtoolr       s3    F%g.5MM%  
 M    c                 z    [         R                  " S[         R                  " U 5      -  [         R                  5      $ )Na3  ^
    # Require trailing slash to avoid matching liblibfoo when looking for libfoo.
    (.*[/])?
    lib%s
    # Prohibit library name characters to avoid matching libpangoft2 when looking for libpango.
    [^/A-Za-z0-9_-]
    # Anything but the path separator to avoid matching directories.
    [^/]*
    $)recompileescapeVERBOSE)library_names    r   _ldd_library_patternr   0   s4    :: 	 99\"# %'JJ0 0r   c                    U(       d  / $ [         R                   " 5       R                  S5      (       a  UR                  S   n[        R                  R                  [        R                  R                  UR                  S   5      S5      nU[        R                  R                  UR                  S   5      -   n[        R                  R                  U5      (       a&  XQR                  S'   [        R                  " SU5        OX1R                  S'   [        5       S:X  a  [        5       nUR                  X 5      $ / n[        U 5      nU(       a"  UR                  U5        UR                  S5        [         R                   " 5       n	U R"                  (       a+  UR                  U R"                  UR                  S   /5        OHU	S:X  a"  UR                  SS	UR                  S   /5        O UR                  S
UR                  S   /5        [$        R&                  " U5      n
[)        U
[*        5      (       a  U
R-                  SS5      n
[/        X*5      n[1        [3        [4        U5      5      $ )NOpenBSDr   z.libs/LD_LIBRARY_PATHntz--mode=executeDarwinotoolz-Llddzutf-8replace)platform
startswithargsospathjoindirnamebasenameexistsputenvr   r   resolve_windows_libsr   extendr	   systemldd_wrapper
subprocesscheck_output
isinstancebytesdecoderesolve_from_ldd_outputlistmapsanitize_shlib_path)r
   r   r   
old_argdirnew_libsdirnew_libccr$   libtoolplatform_systemoutputr   s               r   _resolve_non_libtoolr@   I   s   	%%i00 [[^
ggll277??6;;q>#BHM 0 0Q @@77>>'""$KKNII'5'KKNyD[&&y::%g.KK KK()"//+KK,,fkk!n=>(KK$A78KKA/0((.fe$$]]7I6F(;C+V455r   c                     [         R                  S:X  aE  [        R                  R	                  U 5      (       d  [        R                  R                  U 5      $ U $ [        R                  R                  U 5      $ )Ndarwin)sysr"   r%   r&   isabsr)   )libs    r   r8   r8   r   sR     ||xww}}S!!77##C((
ww$$r   c                 R   0 nU  H6  n[         R                  R                  U5      (       a  M)  [        U5      X#'   M8     [	        U5      S:X  a  / $ / nUR                  5        H  nUR                  S5      (       a  M  UR                  5        HX  nUR                  5        HA  u  p7UR                  U5      nU(       d  M  X#	 UR                  UR                  5       5          MV     MZ     M     [	        U5      S:  a+  [        SSR                  UR                  5       5      -   5      eU$ )Nr   :z4ERROR: can't resolve libraries to shared libraries: z, )r%   r&   isfiler   len
splitlinesendswithsplititemsmatchr	   group
SystemExitr'   keys)	r   r?   patternsr   r   linewordpatternms	            r   r5   r5      s    Hww~~g&& 4W =H  8}	F!!# ==JJLD$,NN$4 MM$'1 )MM!''), %5 ! $ 8}qBIIhmmo&'( 	( Mr   c                     [        [        S U5      5      n[        [        S U5      5      n[        XU5      [        XU5      -   $ )Nc                 $    U R                  S5      $ Nz.larK   xs    r   <lambda> resolve_shlibs.<locals>.<lambda>   s    AJJu$5r   c                 .    U R                  S5      (       + $ rY   rZ   r[   s    r   r]   r^      s    AJJu,=(=r   )r6   filterr   r@   )r
   r   r   r=   non_libtools        r   resolve_shlibsrb      sE    65yABGv=yIJKWg6 +>? @r   )r%   rC   r"   r   r0   utilsr   r   r   	ccompilerr   r   r   r@   r8   r5   rb    r   r   <module>rf      s@   * 
 
  	  F F   	02&6R%J@r   