
    8xd3                        d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZmZmZ d dlmZmZmZmZmZmZ d dlmZmZmZ d d	lm Z  d d
l!m"Z"m#Z# d dl$m%Z%m&Z&m'Z'm(Z(m)Z)  ed          d             Z*d!dZ+d Z, G d d          Z- e-            Z.	 d"dZ/d!dZ0d Z1d#dZ2d Z3d Z4ej5        dddddfdZ6ej5        dfdZ7d  Z8dS )$    N)defaultdict)	lru_cache)groupby)
itemgetter)abspathbasenamedirnameexistsjoinnormcase)display_actions	get_indexinstall_actions	is_linkedlinked_dataspecs_from_args)get_linkagesget_package_obj_filesget_untracked_obj_files)codefile_type)
get_rpathshuman_filetype)
comma_joinensure_list
get_loggerpackage_has_filerm_rf)maxsizec                 l    t          | |          }|rt          |d                   nt                      S )Nfiles)r   set)prefixdistmetas      7lib/python3.11/site-packages/conda_build/inspect_pkg.py
dist_filesr&   &   s1    VT""D!%03tG}3550    Fc              #     K   t          |                     t          j        d                    ddlm} |r|}nt          } ||          D ]1}t          ||          }t          fd|D                       r|V  2dS )z
    given the path of a conda installed file iterate over
    the conda packages the file came from.  Usually the iteration yields
    only one package.
    /r   )linked_data_no_multichannelsc              3   >   K   | ]}t          |          k    V  d S N)r   ).0wnorm_ipps     r%   	<genexpr>z which_package.<locals>.<genexpr>=   s.      771x8A;;&777777r'   N)	r   replaceossepconda_build.utilsr*   r   r&   any)in_prefix_pathr"   avoid_canonical_channel_namer*   fnr#   dfilesr/   s          @r%   which_packager:   ,   s       ..rvs;;<<H>>>>>># )6

  FD))777777777 	JJJ r'   c           	         d}t          t          | t                              t                              D ]\  }}||dz   z  }t          |t          d                    D ][t                    D ]$}|k    r	|         |d| d|          dz  }%t          fdD                       dk    r|dz  }\|dz  }|S )	N )key
filenamez  z: c                 0    g | ]}|         
|k    |S r,    )r-   if_infor=   s     r%   
<listcomp>z%print_object_info.<locals>.<listcomp>L   s'    LLL!)>188A888r'      )r   sortedr   len)infor=   output_stringheadergroupdatarC   s    `    @r%   print_object_inforM   A   s   M *S//!B!B!BJsOOTT  $&U
:(>(>??? 	& 	&Fv ? ?3;;$<'!>d!>!>fTl!>!>!>>LLLLLvLLLMMPQQQ%r'   c                       e Zd Zd ZdS )_untracked_packagec                     dS )Nz<untracked>rA   )selfs    r%   __str__z_untracked_package.__str__S   s    }r'   N)__name__
__module____qualname__rR   rA   r'   r%   rO   rO   R   s#            r'   rO   rA   Tc                    t          j        d          }	 t          |           }t          ||||          }t	          |||d|          }t          ||           |t          |           S # t          |           w xY w)Nconda)channel_urlsprependplatformr"   F)pinnedminimal_hint)tempfilemkdtempr   r   r   r   r   )	packagesrZ   rX   rY   r\   r"   specsindexactionss	            r%   check_installrc   Z   s     g&&F))%wRX
 
 
 "E5\
 
 
 	'''ffs   AA- -A>c                 B   i }|                                  D ]!\  }}t          |d          r|j        }|||<   "|} t          t	          |                                           ddhz
            }d|                                 vr|n|ddgz   }d}|D ]}|d|z  z  }|r,t          | |                   D ]\  }}	}
|d| d|	 d|
 d	z  }nPt          t	          t          t          d
d          | |                                       D ]\  }}	|d| d|	 dz  }|d	z  }|S )N	dist_namesystem	not foundr<   z%s:
z    z (z) from r>   r   rE   z)
)itemshasattrre   rF   r!   keysmapr   )depmap
show_filesdist_depmapkvall_depsrI   deplibpathbinarys              r%   print_linkagesrv   m   s   K  11k"" 	AAFs6;;==!!X{$;;<<Av{{}}44qq!x>U:UHM  3& 	9%+F3K%8%8 G G!T6!F!F!Ft!F!FF!F!F!FFG $CJq!,<,<fSk(J(J$K$KLL 9 9	T!8!8!8t!8!8!88r'   c           
         t           j                            d          rt          |          S t           j                            d          r(|t	          |           k    rt          t          ||                     S d|v rt          t          ||                     }|sdS |D ]w}|                    d|          }|                    dt          |t          |                               }t          t          t          ||                              r|} nxdS |                    dt          |t          |                               }|                    d          rt          |          S dS d S )Nlinuxdarwinz@rpathzNO LC_RPATH FOUNDz@loader_pathrg   r)   )
sysrZ   
startswithr   r   r   r   r1   r	   r
   )ru   rt   r"   rpathsrpathpath1s         r%   replace_pathr      sh   
|w'' t}}		 	 	*	* 8F####4//000tVV 4 455F 
'**# ' 'E LL599E!MM.$vwv:W:WXXEgd65&9&9::;; $ ';||ND,I,IJJ??3 	!4== {' r'   defaultsc                 \   d}t          t                    }t          j        d          }dD ]}}|                    d|           | g}t          |d|          }|                                D ]9\  }}| dk    r|                    dd          dk    r'|d	         }	|	d
v r4|	                    d          rJ|d         }
|	                    |
          }d|
v r|snn
J |
            |r0d|
                    d           d|
                    d           g}ng }|d         }|                    d|	|           	 t          |	dz   |z   g|z   |d|          }|t          |          z  }# t          $ r  t          $ r'}d}|                    d|	||||           Y d }~3d }~ww xY w|S )NTz
py(\d)(\d))zosx-64zlinux-32zlinux-64zwin-32zwin-64z%######## Testing platform %s ########F)rX   rY   rZ   r   schannelname>   conda-buildrW   @buildpyzpython=rE   .   versionzTesting %s=%s=zFAIL: %s %s on %s with %s (%s))r   rS   recompilerH   r   rh   getendswithsearchrK   rc   boolKeyboardInterruptBaseExceptionerror)channelsuccessloghas_pyrZ   channelsra   _recr   r   matchadditional_packagesr   install_stepses                   r%   test_installabler      s?   G
X

CZ&&FJ 3 38(CCC9xRRRkkmm /	 /	FAs *$$Z)H)HJ)V)Vv;D///}}S!!   LEMM%((E EMM5MMMMUMMM )'RQ'R'R%++a..'R'R&S##&(#)nGHH_dG444 -CZ')*-@@!)!%	! ! ! 4...$     	 	 			4'       	M/	` Ns   </E,,F' F""F'c                 `    t          |           }d |                                D             }|S )Nc                 &    i | ]\  }}|d          |S )r   rA   )r-   r#   r   s      r%   
<dictcomp>z_installed.<locals>.<dictcomp>   s"    FFFytSVdFFFr'   )r   rh   )r"   	installeds     r%   
_installedr      s2    F##IFFIOO4E4EFFFIr'   c                 l    t          |           dz   dt          t          |                     z  z   dz   S )Nr>   -z

)strrG   )texts    r%   _underlined_textr      s.    t99tcCD		NN22V;;r'   packager<   c                    i }t          |          }| s|s|st          d          |r!t          |                                          } |r|                     t
                     t          |           D ]}	|	t
          k    rt
          }
n'|	|vrt          j        d|	 d|            n||	         }
t          j	        
                    d          st          j        d           |
t
          k    rt          |          }nt          |
|          }t          |||          }t          t                    }|||	<   g |d<   g |d<   |D ]}||         D ]\  }}|dvrt!          |||          n|}|
                    |          rXt#          j        d	|z   d
z   d|          }t          t'          ||                    }t)          |          dk    rBd |D             }t+          t,                                        d|t1          |                     |st3          |          r<|d                             ||                    |d
z   d          d         |f           n;|d                             ||                    |d
z   d          d         |f           |D ]=}||                             ||                    |d
z   d          d         |f           >|dk    r |d                             |||f           |d                             |||f           ѐސd}|dk    r2| D ].}	|t7          |	          z  }|t9          ||	         |          z  }/n|dk    rt          d           }|D ]2}	||	         D ]'}||	         |         r||	         |         ||         |	<   (3t          t;          |                                          ddhz
            }|ddgz   D ].}|t7          |          z  }|t9          ||         |          z  }/nt          d|z            t=          |d          r|                    d          }|S )Nz=At least one package or --untracked or --all must be providedPackage  is not installed in )rx   ry   zCError: conda inspect linkages is only implemented in Linux and OS Xrg   rf   >   r<   rg   ^r)   r<   rE   c                 ,    g | ]}t          |          S rA   )r   )r-   rr   s     r%   rD   z$inspect_linkages.<locals>.<listcomp>  s    #=#=#=CHH#=#=#=r'   z,Warning: %s comes from multiple packages: %s	untrackedr   )rm   
dependencyc                  *    t          t                    S r,   )r   listrA   r'   r%   <lambda>z"inspect_linkages.<locals>.<lambda>:  s    ;t+<+< r'   zUnrecognized groupby: %sdecodeutf-8) r   
ValueErrorrF   rj   appenduntracked_packager   rz   exitrZ   r{   r   r   r   r   r   r   r   subr:   rG   r   rS   warnr   r
   splitr   rv   r!   ri   r   )r_   r"   r   all_packagesrm   r   sysrootpkgmapr   pkgr#   	obj_fileslinkagesrl   ru   rs   rt   r6   depsdeps_strdrI   inverted_maprr   ro   s                            r%   inspect_linkagesr      s>    F6""I 
I 
l 
K
 
 	
  ,)..**++ +)***8$$ 5A 5A###$DD	!!HBBB&BBCCCCS>D|&&':;; 	HU   $$$/77II-dF;;I	67;;T""s {x 	A 	AF%f- A A	T #444 !v666 
 ??6** A%'VC&L3,>D%I%INnf E EFFD4yy1}}#=#=#=#=#="8,,11M &x00  
   !$<< ";/66!$djj#q&A&A"&Ev N    #;/66!$djj#q&A&A"&Ev N   " Y Yq	((#tzz&3,/J/J2/NPV)WXXXXY[((;'..T6/BCCCC8$++S$,?@@@@=A	AB M) 	P 	PC-c222M^F3KJOOOOMM	P 
L	 	 "#<#<== 	> 	>Cc{ > >#;s# >-3C[-=L%c*>
 3|((**++x.EEFF+.. 	V 	VC-c222M^L,=*UUUUMM	V
 3g=>>>}h'' 6%,,W55r'   c                    t          |          }d}t          |           D ]:}|t          k    rt          }n!||vrt          d| d|           ||         }|t	          |          z  }t
          j                            d          st          j        d           |t          k    rt          |          }nt          ||          }g }|D ]{}	i }
t          ||	          }t          |          }|dk    rRt          |d           |
d<   d                    t          |                    |
d	<   |	|
d
<   |                    |
           ||t!          ||          z  }<t#          |d          r|                    d          }|S )Nr<   r   r   ry   z8Error: conda inspect objects is only implemented in OS X	machofilefiletype:r}   r?   r   r   )r   r   r   r   r   rz   rZ   r{   r   r   r   r   r   r   r   r   rM   ri   r   )r_   r"   r   r   rI   r   r#   r   rH   frC   rt   r   s                r%   inspect_objectsr   M  s   6""IM8$$ : :###$DD	!!JJJ&JJKKKS>D)#...|&&x00 	QHOPPP$$$/77II-dF;;I 	$ 	$AF??D$T**H;&&%3D$%?%?z""%((:d+;+;"<"<w%&z"F###*4999}h'' 6%,,W55r'   c                     i }t          |           D ]c}t          j                            |          d d         }i ||<   t	          |d          }|rt          j        |          ||         d<   ^d||<   d|S )Nizinfo/hash_input.jsonrecipez<no hash_input.json in file>)r   r2   rt   r   r   jsonloads)r_   hash_inputsr   pkgname
hash_inputs        r%   get_hash_inputr   t  s    K8$$ B B'""3'',!G%c+ABB
 	B-1Z
-C-CK **#AK  r'   )F)NrA   TF)r   )9r   r2   r   rz   r]   collectionsr   	functoolsr   	itertoolsr   operatorr   os.pathr   r   r	   r
   r   r   conda_build.conda_interfacer   r   r   r   r   r   conda_build.os_utils.lddr   r   r   conda_build.os_utils.lieflddr   conda_build.os_utils.machor   r   r4   r   r   r   r   r   r&   r:   rM   rO   r   rc   rv   r   r   r   r   r"   r   r   r   rA   r'   r%   <module>r      s    				 				 



  # # # # # #                   F F F F F F F F F F F F F F F F                        
 7 6 6 6 6 6 A A A A A A A A              41 1 1
   *  "       
 '&((  JO   &   0  28 8 8 8v  < < < :g g g gT &)Z $ $ $ $N    r'   