
    xhe                    t   d dl m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 dd	lmZ dd
lmZmZ ddlmZ ddlmZmZmZ  ej        d          Z ej        d          Zd Zd!dZ ed          d"d            Z ed          d#d            Z  ed          d$d             Z!dS )%    )annotationsN)	lru_cachebasename)Path)Iterable)PrefixRecord   )	untracked)on_linuxon_mac   )otool)codefile_classinspect_linkages	machofilez\s*(.*?)\s*=>\s*(.*?)\s*\(.*\)z\s*(.*?)\s*=>\s*not foundc                   t          j        d| g                              d                                          }g }|D ]}d|vr|d         dk    sJ | |f            t                              |          }|r(|                    |                                           ct                              |          }|r+|                    |	                    d          df           d|v rt          d	|z            |S )
zthin wrapper around lddlddzutf-8z=>r   	r   z	not foundzld-linuxzUnexpected output from ldd: %s)
subprocesscheck_outputdecode
splitlinesLDD_REmatchappendgroupsLDD_NOT_FOUND_REgroupRuntimeError)pathlinesreslinems        8lib/python3.11/site-packages/conda_build/os_utils/ldd.pyr   r      s   #UDM2299'BBMMOOE
C D DtAw$tLL 	JJqxxzz"""""4(( 	JJ

K0111;dBCCCJ    	obj_filesIterable[str]prefixstr | os.PathLike | Pathreturn dict[str, list[tuple[str, str]]]c                X    t          t          |           t          |          |          S )N)_get_linkagestupler   )r(   r*   sysroots      r&   get_linkagesr2   0   s$    
 y))4<<AAAr'   )maxsize
tuple[str]r   c           
        i }| D ]}||z  }t          |          t          k    rd}d}nd}d}d t          ||||          D             }	 t          rt	          |          }	n t
          rd t          |          D             }	n	#  |}	Y nxY wt          |	          t          |          k    r:t          d           t          d           t          d           t          d	|            t          d
           t          d           t          dd	                    t          t          |	                    z              t          d           t          dd	                    t          t          |                    z              t          dt          |	          t          |          z
              t          dt          |          t          |	          z
              |	||<   |S )NFTc                0    g | ]}t          |          |fS  r   .0links     r&   
<listcomp>z!_get_linkages.<locals>.<listcomp>H   s3     
 
 
 d^^T"
 
 
r'   )resolve_filenamesr1   recursec                H    g | ]}t          |d                    |d          f S )namer   r8   s     r&   r;   z!_get_linkages.<locals>.<listcomp>V   s:          ?CXd6l++T&\:     r'   z@WARNING: pyldd disagrees with ldd/otool. This will not cause anyz;WARNING: problems for this build, but please file a bug at:z-WARNING: https://github.com/conda/conda-buildz'WARNING: and (if possible) attach file zWARNING:z  ldd/otool gives:z    z
    z  pyldd gives:zDiffs
)r   r   r   r   r   r   r   setprintjoinmapstr)
r(   r*   r1   linkagesfiler!   r<   r=   ldd_emulateldd_computeds
             r&   r/   r/   8   s#    H +& +&}$9,, %GG $G
 
("3	  
 
 
		' "4yy    GLT{{     	'&LLL|K 0 000TUUUOPPPABBBBDBBCCC*&'''&8==S,)?)?@@@AAA"###&8==S+)>)>???@@@BC--K0@0@@BBCCCBC,,s</@/@@BBCCC%Os   7BB
precr	   	list[str]c                ,    fd| d         D             S )Nc                R    g | ]#}t          t          |          d           !|$S T)skip_symlinksr   r   r9   rF   r*   s     r&   r;   z)get_package_obj_files.<locals>.<listcomp>r   F       $vt,,DAAA  r'   filesr7   )rI   r*   s    `r&   get_package_obj_filesrS   n   s2       M   r'   c                T      fdt          t                               D             S )Nc                R    g | ]#}t          t          |          d           !|$S rM   rO   rP   s     r&   r;   z+get_untracked_obj_files.<locals>.<listcomp>{   rQ   r'   )r   rD   )r*   s   `r&   get_untracked_obj_filesrV   y   s<       c&kk**   r'   )r(   r)   r*   r+   r,   r-   )r(   r4   r*   r   r,   r-   )rI   r	   r*   r+   r,   rJ   )r*   r+   r,   rJ   )"
__future__r   osrer   	functoolsr   os.pathr   pathlibr   typingr   conda.models.recordsr	   conda_interfacer   utilsr   r   machor   pylddr   r   r   compiler   r   r   r2   r/   rS   rV   r7   r'   r&   <module>rd      s   # " " " " " 				 				                             - - - - - - ' ' ' ' ' ' $ $ $ $ $ $ $ $       > > > > > > > > > >	5	6	62::;;   0B B B B 42 2 2 2j 4    4     r'   