
    xheF                      d dl mZ d dlZd dlZ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
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mZmZmZmZmZmZmZmZmZm Z m!Z! d d
l"m#Z# d dl$m%Z%m&Z&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- ddl.m/Z/ ddl0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6m7Z7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z>m?Z? ddl@mAZAmBZBmCZCmDZDmEZEmFZF ddlGmHZHmIZImJZJmKZKmLZL ddl/mMZMmNZNmOZO eHeIfeLfeKfdZPdSdZQd ZRdSdZSd ZTd ZUd  ZVd! ZWdTd#ZXd$ ZY	 	 	 dUd%ZZdVd&Z[d' Z\dWd)Z]	 dXd*Z^d+ Z_dYd2Z`dZd4Zad[d6Zbg d7Zcg d8Zdd9 Zed: Zfd; Zgd< Zhd= Zid> Zjd? Zkdi fd\dGZldVd]dJZmdVdKZndL Zod^dNZpd_dOZqdP ZrdQ ZsdR ZtdS )`    )annotationsN)OrderedDictdefaultdict)copy)filterfnmatch)	translate)partial)basenamedirnameexistsisabsisdirisfileislinkjoinnormpathrealpathrelpathsepsplitext)Path)CalledProcessErrorcallcheck_output)Literal)
PrefixData)PrefixRecord   )utils)TemporaryDirectorylchmodmd5_filewalk_prefix)OverDependingErrorOverLinkingErrorRunPathError)which_package)MetaData)externalmacho)get_exports_memoizedget_linkages_memoizedget_rpaths_rawget_runpaths_raw	have_lief	set_rpath)DLLfileEXEfilecodefile_classelffile	machofile)on_macon_winprefix_files)winosxlinuxFc                   t          ||           }t          |d          rd S t          |          rd S t          |          sd S t	          j        |          j        dk    rd S d}t	          j        |d           t          |dt          j
                              5 }	 |                    d          }|                    d           n# t          $ r Y d d d            d S w xY wt          j        d	t          j                  }	 t#          j        |                                dd t"          j        
          }	n$# t*          $ r |                                }	Y nw xY w	 |                    |	          }
nF# t.          $ r9 t          j        dt          j                  }d}|                    |	          }
Y nw xY w|
rv|rt          j        dt          j                  nt          j        dt          j                  }t          j        ||
                                          s	 d d d            d S n	 d d d            d S |	d d          }d d d            n# 1 swxY w Y   dt4          r
|rd|z   dz   n|dz   t7          |          z   z   }|r$t9          |d          r|                                }|                    ||d          }||k    rd S t?          d|            t          |dt          j
                              5 }	 |                     |           n7# t.          $ r* |                     |!                                           Y nw xY wd d d            d S # 1 swxY w Y   d S )NTskip_symlinksr   F  zr+)modeencodingd   z^#!.+$)tagnameflagss   ^#!.+$s   \/python[w]?(?:$|\s|\Z)z\/python[w]?(:$|\s|\Z)z#!z
/bin/bash z/bin/pythonwz/bin/encoder    )countzupdating shebang:w)rC   )"r   r5   r   r   osstatst_sizechmodopenlocalegetpreferredencodingreadseekUnicodeDecodeErrorrecompileMr!   	mmap_mmapfilenommap_MAP_PRIVATEOSErrormatch	TypeErrorsearchgroupr8   r   hasattrrG   subprintwritedecode)fprefixbuild_python
osx_is_apppathbytes_fidataSHEBANG_PATmmmpython_patternpy_execnew_datafos                  0lib/python3.11/site-packages/conda_build/post.pyfix_shebangrt   K   sz   ??Dd$/// 	 D\\ 	wt}}!!FHT5	d(C(E(E	F	F	F #"	773<<DGGAJJJJ! 	 	 	# # # # # # # #	 jBD11			QE4J  BB  	 	 	BBB		&!!"%%AA 	& 	& 	&*Z66KF!!"%%AAA	&
  		 A
6===Z 924@@ 
 9^QWWYY77 ?# # # # # # # #< C# # # # # # # #F !!!uG# # # # # # # # # # # # # # #J 	7 	7v..g 6 66G
  #''8,, #..""wA66H4	
q!!!	dC&"="?"?	@	@	@ (B	(HHX 	( 	( 	(HHX__&&'''''	(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   I!*CI
C%I$C%%"I4D=<I=EIEI"E87I8A F;8I:F;;A-I5I
II!IM#	LM#1MM#MM##M'*M'c           	        t          |           }d                    |j        d                             d          d d                   }t	          t          t          j        |j        |          d|                    d          d         z            d          5 }|                    d|z             d d d            d S # 1 swxY w Y   d S )	N.python   z%s.pth-r   rI   z./%s
)	r   r   variantsplitrN   r!   get_site_packageshost_prefixrb   )egg_pathconfigfnpy_verrr   s        rs   	write_pthr      s   	(		BXXfnX.44S99"1"=>>F	#F$6??a()	
 	
 	
 
   

B                                   s   CC
Cc                |   fd| D             d                     |j        d                             d          dd                   }t          j        |          }t          j        t          |d                    D ]Ft                    r|s,t          fdt          dd	          D                       st          |
           St          d           	 t          j        t          d          dz              n# t          $ r Y nw xY wt          j        t          d                     t          j                  D ];}|dk    r#t          j        t          |                     ,t#          t          ||                    r	 t          j        t          |          t          ||          |j        |j                   t          j        t          |                     # t          $ rR}t+          t-          |                                          d                   }t          d d| d| d          d}~ww xY wt          j        t          |          t          ||                     =t/                    r'vr%t          d           t          |
           Hd D             }|D ]?}	t1          |	d          5 }
|
                    d           ddd           n# 1 swxY w Y   @t          j        t          |d                     dS )z]
    remove the need for easy-install.pth and finally remove easy-install.pth
    itself
    c                0    g | ]}t          |          S  r   ).0rd   re   s     rs   
<listcomp>z+remove_easy_install_pth.<locals>.<listcomp>   s!    ///AVQ///    rv   rw   Nrx   z	*-py*.eggc              3  <   K   | ]}t          |          v V  d S Nr   )r   iabsfilesr~   s     rs   	<genexpr>z*remove_easy_install_pth.<locals>.<genexpr>   sF       + + Xq!!X-+ + + + + +r   F)windows_forward_slashes)r   zfound egg dir:zEGG-INFOz-info__pycache__)lockingzTried to merge folder z into z, but z exists in both locations.  Please either add build/preserve_egg_dir: True to meta.yaml, or manually remove the file during your install process to avoid this conflict.z
found egg:c                N    g | ]"}|                     d t           d           |#S )
.dist-info	INSTALLER)endswithr   )r   rd   s     rs   r   z+remove_easy_install_pth.<locals>.<listcomp>   s5    VVVQajj9Tc9T9T9T.U.UVqVVVr   rI   condazeasy-install.pth)r   rz   r{   r!   r|   globr   anyr%   r   ra   shutilmoverZ   rm_rfrJ   listdirr   	copy_intotimeoutr   r   strr   rN   rb   )filesre   r   preserve_egg_dirr   sp_dirr   einstaller_filesfilerd   r   r~   s    `         @@rs   remove_easy_install_pthr      s   
 0//////HXXfnX.44S99"1"=>>F$VV44FJtFK8899 // //?? .	/ s + + + + +$XueTTT+ + + ( (  (62222"H---D:6678JKKKK   KXz22333j** J J&&KXr 2 23333
 d62..// J!O $Xr 2 2 $VR 0 0 &(.	    "KXr(:(:;;;;&   !)#a&&,,..*<!=!=B")!1 !1 !1 !1 !1WY !1 !1 !1# #  D2$6$6VR8H8HIIII5J8 H 	/x'',)))hv....VV(VVVO  $__ 	GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 
KV/0011111s>   (&D
DDA H  
I
AII,LL	L	c                p   t          t          j        |                     }|D ]}|                                rz|j                            d          r`dD ]]}t          |j                  \  }t          |z             t          fd|D                       rt          j
        |z              ^dS )z3remove .py (.pyc) files alongside .so or .pyd files).so.pyd).pyz.pycz.pyoc              3  >   K   | ]}t          |          k    V  d S r   r   )r   rd   names     rs   r   z!rm_py_along_so.<locals>.<genexpr>   s.      ::qtx{{*::::::r   N)listrJ   scandiris_filer   r   r   rh   r   r   unlink)re   r   r   ext_r   s        @rs   rm_py_along_sor      s     F##$$E * *::<< 	*BG,,_== 	*, * *"27++as
++::::E::::: *IdSj)))* *r   c                    t          j        d          }| D ]9}|                    |          r"t          j        t          ||                     :dS )aA  pyo considered harmful: https://www.python.org/dev/peps/pep-0488/

    The build may have proceeded with:
        [install]
        optimize = 1
    .. in setup.cfg in which case we can end up with some stdlib __pycache__
    files ending in .opt-N.pyc on Python 3, as well as .pyo files for the
    package's own python.z.*(?:\.pyo$|\.opt-[0-9]\.pyc)NrT   rU   r[   rJ   r   r   )r   re   re_pyor   s       rs   rm_pyor      s\     Z899F ( (<< 	(Id62&&'''( (r   c                    t          j        d          }| D ]9}|                    |          r"t          j        t          ||                     :d S )Nz.*(?:\.pyc$)r   )r   re   re_pycr   s       rs   rm_pycr      sY    Z((F ( (<< 	(Id62&&'''( (r   c                    d| v r7t          |ddd          }t          |          rt          j        |           d S d S d S )Nzshare/info/dirshareinfodir)r   r   rJ   r   )r   re   r   s      rs   rm_share_info_dirr     sQ    5  &'6511":: 	IbMMMMM ! 	 	r   r   c           	        t          |          sd S g }d |D             }t                      }|D ]2}|                    t          t          | |                               3t          |           |z
  }|D ]t          rt          fddD                       r%n                    d          r<dt          j        z   }		                    d          r<t                    |	z   t                    z   dz   | vr|                               |r/t          |          st          d           d S t          d	           t          rd
}
nd}
|
t          |          dz  z  }
t          t          |t                              dz   }|
|k     r|}
g g}|dddg}t          d                    |                    dz   x}}|D ]e}t          |          dz   }||z   |
k    r|                    g            |}n||z  }|t          |          dz
                               |           f|D ]}t#          ||z   |           d S d S )Nc                ,    g | ]}t          |          S r   r   )r   skips     rs   r   z'compile_missing_pyc.<locals>.<listcomp>  s    FFFT(4..FFFr   c                ^    g | ])}                                                     |          *S r   )lower
startswith)r   startr   s     rs   r   z'compile_missing_pyc.<locals>.<listcomp>  s?        HHJJ))%00  r   )zlibrary/binzlibrary\binscriptsbinr   r   czAcompiling .pyc files... failed as no python interpreter was foundzcompiling .pyc files...i  i  rx   keyr    z-Wiz-m
py_compile )cwd)r   setupdatefnmatch_filterr9   r   r   rJ   r   r   r   r   appendra   lenmaxr   r   )r   r   
python_exeskip_compile_pyccompile_filesskip_compile_pyc_nskipped_filesr   unskipped_filescache_prefixlimitlower_limitgroupsargsargs_lenlengthrd   length_thisr^   r   s                      @rs   compile_missing_pycr   	  s   * MFF5EFFFEEM" ? ?St!<!<==>>>>%jj=0O % % 
	   !K      }}U## $rv-KK	%l*Xb\\9C?uLL  $$$ ,j!! 	,UVVVVV+,,, S''!++Ec-S999::Q>K{""#TFt\:D #CHHTNN 3 3a 77Hv" 2 2!!ffqj'%//MM"%%%%FFk)Fs6{{Q'..q1111 , ,TE\s+++++5, ,2, ,r   c                   |D ]}|                     dt          j        z   dz             rt          t	          |                                                    }|                    | dz             ro|                    d          \  }}}|                    | dz             \  }}}|| k    r1||k    r+t          d| d| d           t          j
        d            d S d S )Nr   METADATAry   z1ERROR: Top level dist-info version incorrect (is z, should be )r    )r   rJ   r   r   r   r   r   
rpartitionra   sysexit)r   versionr   rd   f_lowerr   distnames          rs   check_dist_info_versionr   C  s     ::lRV+j899 	wqzz//1122G!!$*-- 	 ' 2 2< @ @A'.'9'9$*'E'E$8Wt##7(:(:kGkkahkkk   HQKKKKFF r   c                <   t          ||           |rt          ||           n5t          |j                  r|j        n|j        }t          ||||           t          ||||           t          |           t          ||           t          | ||           d S )N)r   r   r   )r   )
r   r   r   rf   host_pythonr   r   r   r   r   )	r   r   r   re   r   r   noarchr   r   s	            rs   post_processr   S  s     5& 
uf $*&*=#>#>VFFDV 	 	v*GW	
 	
 	
 	
 E66DTUUUU6eV$$$D'511111r   c           	     T                          |          r[t           t          |          dz   d                     t           fd|D                       st	          j        d z              S                       d          rd S                       d          rd S d vs                      d          r\t                      t          t                    }|D ]*}|t          |                   	                    |           + |vrt	          j        d z             t          |                    dk    r|rt          |           k    r|S t                      }|          D ]2}|                    t          t          ||                               3t          |          dk    r!t	          j        d  d|                      n6|                                           t          d	  d
|           d           |          d         S t          d z             d S )Nr    c              3  >   K   | ]}t          |          k    V  d S r   r   )r   rI   links     rs   r   zfind_lib.<locals>.<genexpr>p  s.      66148A;;&666666r   zError: Could not find %s/@rpath/z@executable_path/z#Error: Found multiple instances of : zFound multiple instances of z (z).  Choosing the first one.r   z#Don't know how to find %s, skipping)r   r   r   r   r   r   r   r   r   r   r   addr$   r   sortra   )r   re   r   rh   
file_namesrd   md5ss   `      rs   find_libr   m  sh   v S[[1_../00666666666 	8H/$6777s y!!  	
$$//*=>>~~ &&
 	. 	.Ax{{#**1----z!!H/$6777z$  1$$ $.. 55D% 4 4$vq//2233334yy1}}T$TT*TBRTT    4 %%'''.4 . .:d;K . . .   $""	
/$
677777r   c                H   |d         }||k    r|                     |          ry|                    ||          }t          d| d|             t          d           t          |d          st	          j        d|z             nt          d| d|  d	           t          ||||           }|sd S t          d| d|             t          d
|z             t          t          |          d          }d| dt          |           }|                    dd          }|S )Nr   zFixing linking of z in zY.. seems to be linking to a compiler runtime, replacing build prefix with host prefix andTr?   zKError: Compiler runtime library in build prefix not found in host prefix %sz.. fixing linking of z insteadzNew link location is %slibr   r   /./)
r   replacera   r5   r   r   r   r   r   r   )	rh   	link_dictr}   build_prefixr   r   link_loclib_to_linkrets	            rs   osx_ch_linkr    sr   VD{""t|'D'D"||L+663433T33444	
 	
 	
 d$777 	DH]   
 B$BBDBBBCCCk5$77H 	
/t
/
/
/
/000	
#x
0111'(++U33K( 3K
2
2(4..
2
2C ++eS
!
!CJr   r   c           
     t   |j         j        }|t          |          k    sJ |j         j        }t	          |          r|n|}t          j        | |          }t          j        | |t          t          |||          |          }	|rt          j
        | |          }
|D ]}|dk    r	t          dt          t          ||          t          |                     d                              dd          }t          j        | ||d	           t          ||          }|
D ]:}t          |          t          |          k    rt          j        | ||d	           ;|
D ]D}|                    |          r-|                    |          st          j        | ||d	           E|	rt%          | ||           d S d S )
N)r}   r  r   )dylibs)r   z@loader_pathr  r   T)r  verbose)r   build_folderr   r  r   r,   otoolinstall_name_changer   r  
get_rpathsr   r   r  	add_rpathr   delete_rpathr   assert_relative_osx)rh   r}   rn   r   rpathsbase_prefixr  re   namessexisting_rpathsrpath	rpath_new
full_rpathexisting_rpaths                  rs   mk_relative_osxr    s   ('K'+......8(L#L11B\\{FKf%%E![|SX	
 	
 	
 	 	 	A  S*4fEEE  	 	E{{[%(@(@'$-- P PRT geS!!  OD)&$OOOOk511J"1  N++x
/C/CCC&n64    % 	S 	SE,, SU5E5Ek5R5R S"4VTRRRR = 	D+|<<<<<= =r   c           
     t   t          ||           }t          |          }d}t          j        d|          }|st	          d| d| d           d}n	 t          |d|g                              d                                          d	         }|                    t          j
                  }nH# t          $ r; |dk    rt	          d
| d           n|dk    rt	          d| d| d           d}Y nw xY w|}t          r<t          |          \  }	}
}
|r||	k    rt	          d|	 d| d| d           |dk    r|	}g }|D ]}|                    d          r|                    |           -|                    d          rut!          ||          }|                    dt          j        z             rt	          d| d| d           dt!          ||          z   }||vr|                    |           |D ]c}|dk    r[|                    d          s-dt%          t!          |t          |                               z   }||vr|                    |           dd                     |          }|r|r,|                                dk    rt)          d||           dS t+          |dd||g           dS )zARespects the original values and converts abs to $ORIGIN-relativeNpatchelfzAERROR :: You should install patchelf, will proceed with LIEF for z (was r   LIEFz--print-rpathutf-8r   z-ERROR :: `patchelf --print-rpath` failed for z, but patchelf was specifiedz/WARNING :: `patchelf --print-rpath` failed for z, will proceed with LIEF (was zWARNING :: get_rpaths_raw()=z and patchelf=z disagree for z :: z$ORIGINr   z..zWarning: rpath z is outside prefix z (removing it)z$ORIGIN/r  :*)old_matching	new_rpathr   z--force-rpathz--set-rpath)r   r   r+   find_executablera   r   rc   
splitlinesr{   rJ   pathsepr   r1   r/   r   r   r   r   r   upperr2   r   )rd   re   r  methodelforiginexisting_per   existing	existing2r   newoldrpr  s                  rs   mk_relative_linuxr4  ;  sh    vq//CS\\FK'
F;;H 8dPSdd[addd	
 	
 	
 	8h=>>a!   &++BJ77KK " 		 		 		##eCeee    6!!rcrriorrr   FFF		 H !(--	1a 	;)33lyllllcflll   V H
C # #>>)$$ 
	#JJsOOOO^^C   	#f%%B}}TBF]++ #VVVVVVWWWW'#v"6"66S==JJrNNN " "B;;##C(( J"XgeWQZZ.H.H%I%IIC

5!!!HHSMME  E E6<<>>V#;#;se#>>>>>>hsCDDDDDs   =B0 0AC54C5c                    t          |          r|n|}t          j        | |          D ]2}||fD ]+}|r'|                    |          rt	          d| z            ,3d S )Nz7library at %s appears to have an absolute path embedded)r   r,   
get_dylibsr   RuntimeError)rh   r}   r  tools_prefixr   re   s         rs   r  r    s    #),#7#7H<<[L |44  "L1 	 	F $//&11 "MPTT  	 r   precr   re   str | os.PathLike | Pathreturnset[str]c                ,    fd| d         D             S )Nc                d    h | ],}t          t          |          d           rdD ]}||v |	-S )Tr?   )z.dylibr   z.dllr   )r5   r   )r   r   r   re   s      rs   	<setcomp>zget_dsos.<locals>.<setcomp>  sa       $vt,,DAAA
 5 
 $;; 	
 ;;;r   r   r   )r9  re   s    `rs   get_dsosr@    s2       M   r   tuple[str, ...]c           
        t          |d| j         d| j         d| j         d          }	 t	          j        |                                          }n# t          t          f$ r Y dS w xY wt          |d         dd          }	 t          t	          j        |                                                    S # t          t          f$ r Y dS w xY w)Nz
conda-metary   z.jsonr   extracted_package_dirr   zrun_exports.json)
r   r   r   buildjsonloads	read_textFileNotFoundErrorIsADirectoryErrortuple)r9  re   	json_file	json_inforun_exports_jsons        rs   get_run_exportsrN    s     977t|77dj777 I
Jy224455		01    rr )* 
TZ 0 : : < <==>>>01    rrs#   &A A'&A'2B5 5C
	C
  Literal['interpreter (Python)' | 'interpreter (R)' | 'run-exports library' | 'dso library' | 'plugin library (Python,R)' | 'plugin library (Python)' | 'plugin library (R)' | 'interpreted library (Python,R)' | 'interpreted library (Python)' | 'interpreted library (R)' | 'non-library']c                H   | j         dk    rdS | j         dk    rdS t          | |          rdS t          | |          x}r1d |D             }d |D             }||z
  |z
  rdS |r|rd	S |rd
S |rdS n2d | d         D             }d | d         D             }|r|rdS |rdS |rdS dS )ap  
    Result :: "non-library",
              "interpreted library (Python|R|Python,R)",
              "plugin library (Python|R|Python,R)",
              "dso library",
              "run-exports library",
              "interpreter (R)"
              "interpreter (Python)"
    .. in that order, i.e. if have both dsos and run_exports, it's a run_exports_library.
    rw   zinterpreter (Python)zr-basezinterpreter (R)run-exports libraryc                    h | ]}d |v |	S zsite-packagesr   r   dsos     rs   r?  z!library_nature.<locals>.<setcomp>  s"    EEEso.D.Ds.D.D.Dr   c                    h | ]}d |v |	S zlib/R/libraryr   rT  s     rs   r?  z!library_nature.<locals>.<setcomp>  s"    @@@#C)?)?#)?)?)?r   dso libraryzplugin library (Python,R)zplugin library (Python)zplugin library (R)c                    h | ]}d |v |	S rS  r   r   r   s     rs   r?  z!library_nature.<locals>.<setcomp>  s"    RRR/T:Q:Q:Q:Q:Qr   r   c                    h | ]}d |v |	S rW  r   rZ  s     rs   r?  z!library_nature.<locals>.<setcomp>  s"    MMMD_5L5L45L5L5Lr   zinterpreted library (Python,R)zinterpreted library (Python)zinterpreted library (R)non-library)r   rN  r@  )r9  re   dsospython_dsosr_dsospython_filesr_filess          rs   library_naturerb    s3   2 yH%%	h		  	v	&	& -$$$''	' -EEdEEE@@@@@+& 	( = 	(V 	(.. 	(,, 	(''	( SRgRRRMMDMMMM 	-G 	-33 	-11 	-,,=r   )z	/opt/X11/z/usr/lib/libSystem.B.dylibz/usr/lib/libcrypto.0.9.8.dylibz/usr/lib/libobjc.A.dyliba/  
                         '/System/Library/Frameworks/Accelerate.framework/*',
                         '/System/Library/Frameworks/AGL.framework/*',
                         '/System/Library/Frameworks/AppKit.framework/*',
                         '/System/Library/Frameworks/ApplicationServices.framework/*',
                         '/System/Library/Frameworks/AudioToolbox.framework/*',
                         '/System/Library/Frameworks/AudioUnit.framework/*',
                         '/System/Library/Frameworks/AVFoundation.framework/*',
                         '/System/Library/Frameworks/CFNetwork.framework/*',
                         '/System/Library/Frameworks/Carbon.framework/*',
                         '/System/Library/Frameworks/Cocoa.framework/*',
                         '/System/Library/Frameworks/CoreAudio.framework/*',
                         '/System/Library/Frameworks/CoreFoundation.framework/*',
                         '/System/Library/Frameworks/CoreGraphics.framework/*',
                         '/System/Library/Frameworks/CoreMedia.framework/*',
                         '/System/Library/Frameworks/CoreBluetooth.framework/*',
                         '/System/Library/Frameworks/CoreMIDI.framework/*',
                         '/System/Library/Frameworks/CoreMedia.framework/*',
                         '/System/Library/Frameworks/CoreServices.framework/*',
                         '/System/Library/Frameworks/CoreText.framework/*',
                         '/System/Library/Frameworks/CoreVideo.framework/*',
                         '/System/Library/Frameworks/CoreWLAN.framework/*',
                         '/System/Library/Frameworks/DiskArbitration.framework/*',
                         '/System/Library/Frameworks/Foundation.framework/*',
                         '/System/Library/Frameworks/GameController.framework/*',
                         '/System/Library/Frameworks/GLKit.framework/*',
                         '/System/Library/Frameworks/ImageIO.framework/*',
                         '/System/Library/Frameworks/IOBluetooth.framework/*',
                         '/System/Library/Frameworks/IOKit.framework/*',
                         '/System/Library/Frameworks/IOSurface.framework/*',
                         '/System/Library/Frameworks/OpenAL.framework/*',
                         '/System/Library/Frameworks/OpenGL.framework/*',
                         '/System/Library/Frameworks/Quartz.framework/*',
                         '/System/Library/Frameworks/QuartzCore.framework/*',
                         '/System/Library/Frameworks/Security.framework/*',
                         '/System/Library/Frameworks/StoreKit.framework/*',
                         '/System/Library/Frameworks/SystemConfiguration.framework/*',
                         '/System/Library/Frameworks/WebKit.framework/*'
)z**/ADVAPI32.dllz**/bcrypt.dllz**/COMCTL32.dllz**/COMDLG32.dllz**/CRYPT32.dllz**/dbghelp.dllz**/GDI32.dllz**/IMM32.dllz**/KERNEL32.dllz**/NETAPI32.dllz**/ole32.dllz**/OLEAUT32.dllz**/PSAPI.DLLz**/RPCRT4.dllz**/SHELL32.dllz**/USER32.dllz**/USERENV.dllz**/WINHTTP.dllz**/WS2_32.dllz**/ntdll.dllz**/msvcrt.dllc                2   t                      }t                      }d}| r't          |                                           d         }|D ]}	t	          ||	          }
t          |
d          s%|                    t          j        d          }|                    t          j        d          }t          |
dd||          }|
                                D ]\  }}|d                             t          j        d          }| 
                                D ]J\  }}|                    |          r|                    ||          }1|d	d          |v r||d	d          z   }K||k    r+|                    |          r|                    ||          }|                    |          r.t          ||                              t          j        d          }||d<   |||	<   |                    d
 |
                                D                       }||fS )Nr  r   Tr?   r   F)resolve_filenamesrecursesysrootenvrootresolvedr    c                $    h | ]\  }}|d          S )rh  r   )r   rd   r   s      rs   r?  z'_collect_needed_dsos.<locals>.<setcomp>d  s!    <<<'!TT*<<<r   )r   dictr   keysr   r5   r  rJ   r   r.   itemsr   r   union)sysroots_filesr   
run_prefixsysroot_substitutionr  build_prefix_substitutionall_needed_dsosneeded_dsos_for_filesysrootsrd   rh   neededr   resrh  rf  sysroot_filess                    rs   _collect_needed_dsosrx  8  s<    eeO66H 2++--..q1  
  
J""d$777 	#++BFC88''44
&"
 
 
  	' 	'HC:..rvs;;H*8*>*>*@*@ C C&&&w// C'//9MNNHHabb\]223hqrrlBH z))h.A.A,.O.O)#++L:STT"":.. N"8Z88@@MM 'C
OO"(Q)//<<V\\^^<<<
 
 000r   c           
        i }i }	i }
i }d |D             }|r||fD ]}i ||<   i ||<   t          j        |          D ]}\  }}}|D ]r}t          ||          t          fddD                       ot	          d          }t          fddD                       }|s|s_t          t          |                                        dd	          |rt          fd
|D                       st          fd||         D                       rЉ                    dd	          }|||         v r||         |         ng }t          |          s0t          fd| D                       r|	                    |           t          t          |                    }|D ]}||vr|	                    |           |||         |<   t          ||         |                   r҈fdt          |          D             }|||         |<   |rd|	||         |         d         <   |r|v rr||         |         d         j                            d          s||         |         d         j        dk    r4t          d d||         |         d                     d|
||         |         d         <   t||	|
|fS )Nc                6    g | ]}|                                 S r   r   )r   rI   s     rs   r   z(_map_file_to_package.<locals>.<listcomp>z  s     @@@1QWWYY@@@r   c              3  8   K   | ]}t          |          V  d S r   r   r   r   fps     rs   r   z'_map_file_to_package.<locals>.<genexpr>  s>       & &-0C((& & & & & &r   )z*.so*z*.dylib*z*.dllFr?   c              3  8   K   | ]}t          |          V  d S r   r   r}  s     rs   r   z'_map_file_to_package.<locals>.<genexpr>  s-      $R$R#WR%5%5$R$R$R$R$R$Rr   )z*.az*.lib\r   c              3  H   K   | ]}                                 |k    V  d S r   r{  r   rI   r3  s     rs   r   z'_map_file_to_package.<locals>.<genexpr>  s@       / /,-

a/ / / / / /r   c              3  >   K   | ]}t          |          k    V  d S r   r   r  s     rs   r   z'_map_file_to_package.<locals>.<genexpr>  s.      NN2!,NNNNNNr   c              3  >   K   | ]}t          |          k    V  d S r   r   r  s     rs   r   z'_map_file_to_package.<locals>.<genexpr>  s.      @@QrXa[[0@@@@@@r   c                L    h | ]t          fd D                        S )c              3  8   K   | ]}t          |          V  d S r   r   )r   patternr   s     rs   r   z1_map_file_to_package.<locals>.<setcomp>.<genexpr>  s>       ' '8?7 3 3' ' ' ' ' 'r   r   )r   r   ignore_list_symss    @rs   r?  z'_map_file_to_package.<locals>.<setcomp>  sb     # # # ! $' ' ' ' 'CS' ' ' $ $## # #r   )enable_staticTr   gcc_impl_linuxllvmzsysroot in z, owner is )rJ   walkr   r   r5   r   r   r  r   r   r   r)   r-   r   r   ra   )r   ro  r  rr  pkg_vendored_distr  rp  r  prefix_ownerscontains_dsoscontains_static_libsall_lib_exportsall_needed_dsos_lowerre   subdir2r   filezr   dynamic_lib
static_librp_poownersnew_pkgsnew_pkgexportsr~  r3  s        `                   @@rs   _map_file_to_packager  i  s    MMO@@@@@ BY!<0 A	Y A	YF&(OF#$&M&!%'WV__ >Y >Y!E! =Y =YDgt,,B"% & & & &4R& & & # # #B(5AAA   "%$R$R$R$RAQ$R$R$R!R!RJ& !z ! !'"f"5"566>>tSIIB" !3 / / / /1F/ / / , , ! !NNNNof6MNNNNN ! JJtS11E !M&$999 &f-e44  v;; =@@@@%@@@@@ ="MM*;<<<#M"f$=$=>>H $, 3 3"&00"MM'22239M&)%0=0788 Y# # # #%9 "-& & &# # # :A/6& YMQM-*?*Fq*IJJ' Y3r99$1&$9%$@$C$H$S$S(8%& %&!- (5V'<U'CA'F'Kv'U'U$, %$b"$b$bvAVW\A]^_A`$b$b!" !" !" UY0v1Fu1Ma1PQ{=Y>Y@ -)=NNr   c                    |                     d          r|                     |           |rt          |           d S d S )Nz  ERROR)r   r   ra   )errorstextr  s      rs   
_print_msgr    sI    y!! d d r   c                                         dd          t          j        dt                    z             j        fd| D             }|S )Nr  r   z(?i)c                    g | ]=}|                     d d          k    s |                     d d                    ;|>S r  r   r  )r   rh   r[   pats     rs   r   z,caseless_sepless_fnmatch.<locals>.<listcomp>  sY       LLs##s**uuT\\$5L5L/M/M* 	***r   )r  rT   rU   fnmatch_translater[   )pathsr  matchesr[   s    ` @rs   caseless_sepless_fnmatchr    sk    
++dC
 
 CJv 1# 6 6677=E      G
 Nr   c
           	     :   |                     |          r#|gd |                                D             z   }
n|g}
d}d}t          |          rg }|                                D ]\  }}|                    dt          j                  }|                     |          r*|                    |                    ||                     dt          ||dd                    }|                    |           t          |          rd}|                     d          sd|v r&|d         }d	| }t          | | d
| d|	           ng }t          t          |                    D ]n}||         t          |          dz   d          }d	| }t          t          ||                    }t          |          dk    r|                    |            not          |          r!t          | | d
| d|d          |	           nt          | | d
| d|	           |sZ|
D ]W}|                    ||dz             t          fd|D                       }|rd	 }t          | | d
| d|	            nX|s|st          | | d
| d|	           d S d S d S )Nc                    g | ]\  }}|S r   r   )r   rf  r   s      rs   r   z5_lookup_in_sysroots_and_whitelist.<locals>.<listcomp>  s)     1
 1
 1
"G1
 1
 1
r   Fr  r    Tosx-r;   r   zNeeded DSO r   z found in $SYSROOTr  z found in CDT/compiler package z; not found in any CDT/compiler package, nor the whitelist?!r   c                2    g | ]}t          g|          S r   r  )r   rI   needed_dso_ws     rs   r   z5_lookup_in_sysroots_and_whitelist.<locals>.<listcomp>$  s&    PPP)<.!<<PPPr    found in the whitelistz` not found in packages, sysroot(s) nor the missing_dso_whitelist.
.. is this binary repackaging?)r   rl  r   r  rJ   r   r   r  extendr  ranger   r)   r   )r  	whitelist
needed_dsorn  msg_preludeinfo_preludesysroot_prefixrp  subdirr  replacementsin_whitelistin_sysrootsrw  rf  r   
sysroot_osfoundin_prefix_dson_dso_ppkgsidx_pkgsreplacementr  s                           @rs   !_lookup_in_sysroots_and_whitelistr    s    122 $,- 1
 1
&4&:&:&<&<1
 1
 1
 
 #|LK
> 1,2244 		, 		,NGU rv66J$$%9:: ,$$&&';ZHH    1
122GG$$U++++} $	K  (( "EVOO -a 0777#BBwBBB#      ]!3!344  C %2#$6s>7J7JQ7N7P7P$QM;M;;G }n!M!MNNE5zzA~~E*** & t99 '\\7\\SWXYSZ\\ '     & / /' / / / '	     ' 	 	K%--.BKRUDUVVLPPPPiPPP L  666#GGwGGG#   
   
 
 - -j - - -		
 	
 	
 	
 	
 	

 
 
 
r   c           	       	 t          |          d                                        dd                    }|v rdnd}t          t	          |                    }	fd|D             }|D ]}||
v r|                    |           t          fd|D                       }t          |          dk    r$t          | | d	| d
|d          | |           d S |rt          | | d	| d|           d S t          |          dk    r]t          |          dk    rJt          | | d	| d
d |D              | |           t          | | dd |D              d|           d S t          |          dk    r(t          | | d	 dd |D              | |           d S t          fd|D                       st          | | d	 d|           d S |rt          | | d	 d|           d S d S )NzNeeded DSO {}r  r   z (and also in this package)r  c                &    g | ]}|j         v |S r   r   )r   r9  requirements_runs     rs   r   z._lookup_in_prefix_packages.<locals>.<listcomp>I  s&    MMMdty<L/L/LT/L/L/Lr   c                0    g | ]}t          |          S r   r   r   rI   r  s     rs   r   z._lookup_in_prefix_packages.<locals>.<listcomp>N  s#    EEEaq11EEEr   r    r   
 found in r   r  r  c                ,    g | ]}t          |          S r   r   r   r9  s     rs   r   z._lookup_in_prefix_packages.<locals>.<listcomp>^  s    1N1N1N#d))1N1N1Nr   z	: .. but c                ,    g | ]}t          |          S r   r  r  s     rs   r   z._lookup_in_prefix_packages.<locals>.<listcomp>c  s    %B%B%BDc$ii%B%B%Br   zY not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)z) found in multiple packages in run/reqs: c                ,    g | ]}t          |          S r   r  r  s     rs   r   z._lookup_in_prefix_packages.<locals>.<listcomp>k  s    444dD		444r   c              3  >   K   | ]}t          |          k    V  d S r   r   r  s     rs   r   z-_lookup_in_prefix_packages.<locals>.<genexpr>o  s.      ??A=HQKK/??????r   z not found in any packagesz found in this package)	r   formatr  r   r)   r   r   r   r  )r  r  r   ro  r  r  r  warn_preluder  r  lib_packageslib_packages_usedr  and_alsoprecsprecs_in_reqsr9  r  r  s            `        @rs   _lookup_in_prefix_packagesr  7  sg    Z((M$$]%:%:4%E%EFFG0=0F0F,,BH}j99::EMMMMeMMMM ( (<!!$'''EEEE9EEEFFL
=QNNwNN-2BNHNN	
 	
 	
 	
 	
 	

 
 %??w???	
 	
 	
 	
 	
 	

 
]		q	 	 SZZ!^^ZZgZZ1N1N1N1N1NZPXZZ	
 	
 	
 	

 	 V V%B%BE%B%B%B V V V		
 	
 	
 	
 	
 	
 
]		a		 A A} A A44m444A6>A A		
 	
 	
 	
 	
 	
 ????????? 	KK-KKK     
  	HH=HHH     	 	r   c                V   t          |          rW|                                D ]B\  }}t          |d| dt          t	          |          d          dd          d|           C| D ]=t          |          }t          |d	          }|t          |                    d
          d                  vrMd	                    |
                    t          j        d                    }d	                    |
                    t          j        d                    }d	                    |
                    t          j        d                    }|r|n|}	 t          |          \  }}}n#  t          || d|           Y xY w|r7|s5t          fd|D                       st          || d| d| |           |         }|                                D ]\  }}|
                    dt          j                  }d|v r|d         }|                    t          j                  s0|                    d          st!          ||| |||||||	|
|           |                    d          rt          || d| d|           t#          ||||||||||
  
         ǐ?d S )Nz   INFO: sysroot: 'z
' files: 'T)reverser       'r  r?   ry   r   zWARNING ({},{})r   z  ERROR ({},{})z   INFO ({},{})z: pyldd.py failed to processc              3  8   K   | ]}t          |          V  d S r   r   )r   rI   rd   s     rs   r   z)_show_linking_messages.<locals>.<genexpr>  s+      $N$NqWQ]]$N$N$N$N$N$Nr   z: runpaths r  rh  $$PATHr   z+ found in build prefix; should never happen)r   rl  r  sortedr   r   r5   filetypes_for_platformr{   r  r  rJ   r   r0   r   r   r  r  )r   r  rs  r  ro  pkg_nameerror_overlinkingrunpath_whitelistr  r  r  r  r  rt  r  rp  r  rf  sr_filesrh   codefiler  err_preluder  r  runpathsr   ru  r  needed_dso_inford   s                                 @rs   _show_linking_messagesr  }  sr   & 8}} !)!1!1 	 	GXegeeXX\9]9]9]^_`a^a9beee    
  B BJ""!$d;;;1&,,s2C2CA2FGGG(//!))BFC:P:PQQ'..x2639O9OPP(//!))BFC:P:PQQ%6HkkL	-d33NHa	<EEEw    H 		!$$N$N$N$N<M$N$N$N!N!N	 EE8EEtEE   
 &a(+1<<>> '	 '	'J#++C88J _,,,Z8
((00 !9N9Ns9S9S !*  $ %    &&w// "]]j]]]#     2 "(   9'	7B Bs   E..Fr  r   pkg_version	build_strbuild_numberintr  c                  	MNOP d}g }g }g }|D ]}t          	|          }t          |d          }|t          |                    d          d                  v r|                    |           |                    |                    dd                     |si S d}d}d	 |D             }t          	          OOPfd
|D             }t          j        r#t          |                              dd          nt          |          dd          } t          | t          |          ||| |          }!|  d| d| }"|                    |!           t          j        |          M|                    d          rM                    d           	fd|D             }#Mfd|#                                D             }$|!h}%g d}&|                    dd           }'|'r%t           j                            |'          rd}(|'g})n/|
}(d t          j        t          |(dd                    D             })g }*t)                      }+d},t+          |)          sV|                    d          rg d})t,          }*t.          rdnd},n*|                    d          rdg})t0          }*t          rdnd},|*|pg z  }*t)                      }-|)D ]}.|.                    d          r|.n|.dz   }/t5          |.          }0d |0D             }0|0|-|/<   |                    d          rt7          |0          }1g }0|1D ]}2|2}3|2                    d          rt9          t           j                             |.|2          d          5 }4d |4                                                    d                                           D             }5d d d            n# 1 swxY w Y   |5rGd! |5D             }6d" |6D             }6|6d         dd          }3|3                    d#          r
|3dd$         }3|0                    |3           tA          |1          tA          |0          z
  }7|7r\t          j!        tD                    }8|8#                    d%$                    |.tK          |7          dd&                              |0|-|/<   tM          tO          |-                                d' (                    }-tQ          |-|	||
|          \  }9}:tS          |	|
|9|!|&||          \  };}<}<}=|D ]}2|:|2         }>|>                                D ]\  }?}@|?N|@d)         }A|A                    d          s|A                    |          s|A                    |          s|A*                                d* |;	         D             vrY|A|vrUd}B|,stW          Nfd+|*D                       }B|Bs4|A|;|
         v rtY          d,|? d-           |?                    d          s	 Όt[          |||:|
	| |||||$|%|*|-|(||           |%|$k    rd.|  d/}Cd0|  d/}Dd1|  d/}E|$|%z
  D ]}F|#|F         d2v r|r|En|D}Gn|#|F         d3k    r|C}Gn|D}Gd}Hd4|#|F         v rd5|#|!         v rd}H|Hr&t]          ||C d6|!j/         d7|Fj/         d#|8           d|#|F         d9k    r!t]          ||G d:|#|F          d;|F d<|8           t+          |          r|rd= |D             }It+          |I          rta          |I          d> |D             }Jt+          |J          rtc          |J          d? |D             }Kt+          |K          rte          |K          ntg          j4        d           |"|+v r
|+|"         }L|LS t)                      S )@NTr?   ry   r   r  r   z$SYSROOTr  c                D    g | ]}|                     d           d         S r   r   r{   r   reqs     rs   r   z*check_overlinking_impl.<locals>.<listcomp>  s'    FFFc		#q)FFFr   c                D    g | ]}                     |d           xS r   )get)r   r  pdr9  s     rs   r   z*check_overlinking_impl.<locals>.<listcomp>	  s1    MMMc"&&d:K:K2K$MTMMMr   r    )r   r   rD  r  channelr   r=   z	libgcc-ngc                2    i | ]}|t          |          S r   )rb  )r   r9  ro  s     rs   
<dictcomp>z*check_overlinking_impl.<locals>.<dictcomp>  s%    OOOdN4<<OOOr   c                8    h | ]\  }}|j         v|d k    |S )r\  r  )r   r9  natureignore_lists      rs   r?  z)check_overlinking_impl.<locals>.<setcomp>  s>       D&9K''Fm,C,C 	,C,C,Cr   )main_mainz*get_pc_thunk*___clang_call_terminate_timeoutCONDA_BUILD_SYSROOTr  c                ,    g | ]}|t           j        z   S r   )rJ   r   )r   rf  s     rs   r   z*check_overlinking_impl.<locals>.<listcomp>7  s/     
 
 
 bf
 
 
r   z**rf  Fr  )z/usr/libz/opt/X11z/System/Library/Frameworksr;   z
C:/Windowsc                :    g | ]}|                     d d          S r  r  )r   ps     rs   r   z*check_overlinking_impl.<locals>.<listcomp>Y  s&    EEE!4--EEEr   z.tbdrbc                <    g | ]}|                     d           |S )zinstall-name:)r   r   lines     rs   r   z*check_overlinking_impl.<locals>.<listcomp>d  s:     ! ! ! $#??! ! ! !r   r"  c                8    g | ]}t          j        d |          S )z^install-name:\s+(.*)$rT   r[   r  s     rs   r   z*check_overlinking_impl.<locals>.<listcomp>j  s2     ) ) )JNBH%>EE) ) )r   c                D    g | ]}|                     d           d         S )r    r   )r   )r   insnames     rs   r   z*check_overlinking_impl.<locals>.<listcomp>m  s6     ) ) )5<GNN1--a0) ) )r   r  r   zPartially parsed some '.tbd' files in sysroot {}, pretending .tbds are their install-names
Adding support to 'conda-build' for parsing these in 'liefldd.py' would be easy and useful:
{} ...   c                .    t          | d                    S )Nr    )r   )xs    rs   <lambda>z(check_overlinking_impl.<locals>.<lambda>  s    c!A$iiZ r   r   rh  c                6    g | ]}|                                 S r   r{  )r   os     rs   r   z*check_overlinking_impl.<locals>.<listcomp>  s     EEEa		EEEr   c                2    g | ]}t          g|          S r   r  )r   rI   origs     rs   r   z*check_overlinking_impl.<locals>.<listcomp>  s&    PPP14&!<<PPPr   z  ERROR :: z in prefix_owners[build_prefix]z	   INFO (r   z	WARNING (z	  ERROR ()rQ  rX  zplugin libraryinterpreterinterpretedz: Interpreted package 'z' is interpreted by 'r  r\  r   z	 package z in requirements/run but it is not used (i.e. it is overdepending or perhaps statically linked? If that is what you want then add it to `build/ignore_run_exports`)c                <    g | ]}t          j        d |          |S )z.*runpaths.*found in.*r  r   errors     rs   r   z*check_overlinking_impl.<locals>.<listcomp>  s;       RX6OQV-W-W  r   c                <    g | ]}t          j        d |          |S )z+.*(overlinking|not found in|did not find).*r  r  s     rs   r   z*check_overlinking_impl.<locals>.<listcomp>  s;     " " "8JERR"" " "r   c                    g | ]}d |v |	S )overdependingr   r  s     rs   r   z*check_overlinking_impl.<locals>.<listcomp>  s)     $ $ $_-E-E-E-E-Er   )5r   r5   r  r{   r   r  r   r!   r9   r   r   r   ensure_listr   rl  r  rJ   rh   r   r   rj  r   DEFAULT_MAC_WHITELISTr8   DEFAULT_WIN_WHITELISTr   r:   r   rN   rQ   rc   r(  r   
get_logger__name__warningr  r   r   r  rx  r  r   r   ra   r  r  r   r(   r'   r&   r   r   )Qr  r  r  r  r  ignore_run_exportsr  requirements_buildrequirements_hostro  r  missing_dso_whitelistr  r  error_overdependingr  exception_on_errorr   bldpkgs_dirsoutput_folderchannel_urlsr  variantsr  files_to_inspectfilesur   rh   r  rp  rq  r  local_channelr  pkg_vendoring_keypackage_naturer  r  r  r  r  rt  r  vendoring_recordbuild_is_hostrn  rf  srsrw  orig_sysroot_filesrd   replacedtbd_fhlinesinstall_namesdiffslogrr  rs  r  r   r  ru  r  r  rh  r  r  r  r  r   r  !found_interpreted_and_interpreterrunpaths_errorsoverlinking_errorsoverdepending_errorsimportsr   r  r  r9  sQ            `                                                                   @@@@rs   check_overlinking_implrE    s
   2 GFF / /J%%!$d;;;-fll3.?.?.BCCC##D)))dll4--.... 	% 'FF5EFFF	J		BMMMMM-MMME <	'%%dC000\""122& 
 %K  !   $??k??I??	LL"####$677K!! (;'''OOOOOOON   *0022  L
 ++   #,,'<dCC 
rw~~.ABB 
 '( &
 
 :d>4&K&KLL
 
 
 Ivv Mx== 6V$$ 	6 NMMH-I$*5DDMMu%% 	6$~H-I$*5DDM&,",I VVN '4 '4 ))#..AggGcM$W--EE}EEE+sV$$ "	4!%m!4!4M' / /::f%% 6 bgll7A66== ! !(.(<(<W(E(E(P(P(R(R! ! !                
6) )RW) ) )) )@M) ) ) $1#3ABB#7#,,S11 6'/"~H$$X....*++c-.@.@@E 4&x00#VGT%[[1-=>>  
 '4s# ~##%%+?+?@@@ N -A!- -)O) ,@	, 	,(M1a   %a(+1<<>> 	 	'JD&z2H'',, ++,@AA !++,EFF NN$$EE=+DEEEF FF**$$ #&PPPPiPPP$ $L $ =#>>>WJWWWXXXX'227;; 
 ;	> #  ( L((.8....8...-(---"33 	 	Cc"&LLL-@Rkkl$(888**05-!444!^4E%FFF4810 #tt<M<Rttiliqttt#    
  $55" Z ZnS&9 Z ZC Z Z Z $    6{{  	 #)  O ?## 4"?333" "#" " "
 %&& ;&'9:::$ $#)$ $ $  '(( ?()=>>>? HQKKK,,,"#45vvs   0AO  OOrn   r*   c                8   |                      dg           fd|D             }t          |                                 |                                 |                                 |                                 | j        j        |                      d          d |                      dg           D             d |                      dg           D             d |                      d	g           D             |p| j        j        | j        j	        |                      d
g           |                      dg           | j        j
        | j        j        | j        j        d|| j        j        | j        j        g | j        j        d| j        j        | j        j                  S )Nz!build/overlinking_ignore_patternsc                L    g | ]t          fd D                        S )c                0    g | ]}t          |          S r   r   )r   r  r   s     rs   r   z0check_overlinking.<locals>.<listcomp>.<listcomp>  s#    CCCwGD'**CCCr   r  )r   r   patternss    @rs   r   z%check_overlinking.<locals>.<listcomp>	  sM       CCCC(CCCDD  r   zbuild/ignore_run_exportsc                D    g | ]}|                     d           d         S r  r  r  s     rs   r   z%check_overlinking.<locals>.<listcomp>  s'    JJJs3	JJJr   zrequirements/runc                D    g | ]}|                     d           d         S r  r  r  s     rs   r   z%check_overlinking.<locals>.<listcomp>  s'    LLLs3	LLLr   zrequirements/buildc                D    g | ]}|                     d           d         S r  r  r  s     rs   r   z%check_overlinking.<locals>.<listcomp>  s'    KKKs3	KKKr   zrequirements/hostzbuild/missing_dso_whitelistzbuild/runpath_whitelistTlocal)	get_valuerE  r   r   build_idr  r   target_subdirr}   r  r  r+  r  bldpkgs_dirr.  r/  r  rz   )rn   r   r}   rI  s      @rs   check_overlinkingrR    s   {{>CCH     E
 "					

			.//JJakk2Db&I&IJJJLLakk2F&K&KLLLKKakk2Er&J&JKKK+qx+		1266	-r22	"	$			)!(
))		/  r   c           	        |s| j         j        }t          ||          }t          |d          }|r|                    d          rd S |                     ddg          }|t          k    r)t          ||||                     dd                      d S |t          k    rW| j         j	        dk    r1t          j        t                    }|                    d	|           d S t          ||| ||
           d S d S )NTr?   z.debugzbuild/rpathsr   zbuild/rpaths_patcher)r  r+  r<   zGFound Mach-O file but patching is only supported on macOS, skipping: %s)r   r  )r   r}   r   r5   r   rN  r6   r4  r7   host_platformr!   r$  r%  warnr  )rn   rd   r   r}   rh   r  r  r?  s           rs   post_process_shared_librV  )  s(    +h*QDd$777H t}}X.. [[%11F7;;5t<<		
 	
 	
 	
 	
 	
 
Y		8!U**"8,,CHHY   Fk1E&IIIIII 
	r   c                   t          d           t          j        |          D ]+}|                                rt	          |j        d           ,| D ]'}t          ||          }t          j        |          }t          j	        |j
                  }|}|t          j        z  r|t          j        z  t          j        z  }|t          j        z  t          j        z  t          j        z  t          j        z  t          j        z  }||k    rq	 t	          ||           # t&          t(          j        f$ rF}t)          j        t.                    }|                    t3          |                     Y d }~d }~ww xY w)d S )NzFixing permissionsrA   )ra   rJ   r   is_dirr#   rh   r   lstatrK   S_IMODEst_modeS_IXUSRS_IXGRPS_IXOTHS_IWUSRS_IWGRPS_IRUSRS_IRGRPS_IROTHrZ   r!   PermissionErrorr$  r%  rU  r   )	r   re   rh   rd   stold_modenew_moder   r?  s	            rs   fix_permissionsrh  C  s   	

6"" % %;;== 	%49e$$$ ! !FAXd^^<
++dl" 	>$,.=H ll l l	
 l 	 x!tX&&&&U23 ! ! !&x00Q        !  #! !s   	DE60;E11E6Nonec                N   t          | d          }|sdS t          d           t          j        t          d          }	 ddl}ddlm} nC# t          $ r6}|	                    dd	
                    |          |
           Y d}~dS d}~ww xY w	  |d          }t          |          5 }t          j        |          }	ddd           n# 1 swxY w Y   |j                            |	          }
 |
|	          }nB# |j        t          j        t$          f$ r#}|	                    d||
           Y d}~dS d}~ww xY w|D ]}	 t          t          ||                    5 }|                                }ddd           n# 1 swxY w Y   d|vr|	                    d|           g|                    t          j        |                     |                    d|           # |j        t          j        t$          f$ r"}|	                    d||
           Y d}~d}~ww xY wdS )a  
    Check that Menu/*.json files are valid menuinst v2 JSON documents,
    as defined by the CEP-11 schema. This JSON schema is part of the `menuinst`
    package.

    Validation can fail if the menu/*.json file is not valid JSON, or if it doesn't
    comply with the menuinst schema.

    We validate at build-time so we don't have to validate at install-time, saving
    `conda` a few dependencies.
    z&[Mm][Ee][Nn][Uu][/\]*.[Jj][Ss][Oo][Nn]NzValidating Menu/*.json filesF)deduper   )	data_pathz3Found 'Menu/*.json' files but couldn't validate: %sz, )exc_infozmenuinst.schema.jsonz#'%s' is not a valid menuinst schemaz$schemaz2menuinst v1 JSON document '%s' won't be validated.z&'%s' is a valid menuinst JSON documentz+'%s' is not a valid menuinst JSON document!)r   ra   r!   r$  r%  
jsonschemamenuinst.utilsrl  ImportErrorr&  r   rN   rE  load
validatorsvalidator_forSchemaErrorJSONDecodeErrorrZ   rQ   validaterF  r   ValidationError)r   re   
json_filesr?  rn  rl  excschema_pathrd   schemaValidatorClass	validatorrK  r  s                 rs   check_menuinst_jsonr~  b  s/     'PQQJ 	
()))

8E
2
2
2C	,,,,,,,   AIIj!! 	 	
 	
 	

 	i 677+ 	"!Yq\\F	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"#.<<VDD"N6**		"D$8'B   9;QTUUU   J J		Jd69--..  !vvxx                             $$H)   tz$//000 HH=yIIII *D,@'J 	 	 	KK=         	J Js    
A 
B+BBC; )C
>C; 
CC; C(C; ;D:D55D:G$F 4G$ F	G$F	G$&'G$$H" HH"c                   t          dt          |                     |s| j        j        }|s|D ]}t	          ||           | j        j                            d          s|                                 }|st          d           | j        j                            d          o"t          | 	                    dd                    }t          ||| j        j                   t          j        |          }|D ]Y}|                    d          rt          ||||           |d	u st          |t                     r||v rt#          | |||           Zt%          | ||           t'          ||           d S )
Nznumber of files:r;   z Skipping binary relocation logicr  zbuild/osx_is_appFzbin/)re   rf   rg   T)ra   r   r   r}   make_hardlink_copyrP  r   binary_relocationboolrN  check_symlinkscrootr!   r:   rt   
isinstancer   rV  rR  r~  )	rn   r   rf   r}   is_already_linkedrd   r  rg   r:   s	            rs   
post_buildr    s   	
c%jj))) +h* / 	/ 	/Aq+....8!,,U33 I//11  	64555X+66v>> 
4KK*E22D
 D

 	uk18>:::)+66 	I 	IA||F## &!-)	    !D((,d33 )89=N8N8N'1lKHHHa,,,{+++++r   c           
     j   g }t          |          }| D ]b}t          ||          }t          |          r?t          j        |          }t          |          }t          |          t          |          k    s;t          |d          r*t          j        |           t          j	        ||           |
                    |          r|t          |t          |                    }	|
                    d          sH||	k    rBt          d| d| d|	 d           t          j        |           t          j        |	|           2|
                    |          r|                    | d| d           d|r9|D ] }
t          d	|
z  t           j        
           !t!          j        d           d S d S )NTr?   rv   z"Making absolute symlink relative (z -> z :-> r   zI is a symlink to a path that may not exist after the build is completed (z	Error: %s)r   r    )r   r   r   rJ   readlinkr   r5   remover!   r   r   r   ra   r   symlinkr   r   stderrr   )r   re   r  msgsreal_build_prefixrd   rh   	link_pathreal_link_pathrelative_pathmsgs              rs   r  r    s    D (( ! !%q))$<< 	D))I%d^^N 9%%)@)@@@^F F F@ 	$5555**+<==  !( F F ++C00 	4Y-5O5O
 dQddIddTaddd   IdOOOJ}d333 ",,U33 KK L L?HL L L  
   	6 	6C+##*55555 r   c                   t          |           st          t          ||                     } t          |           }t	          j        |           j        dk    rut                      5 }t          j	        | |           t          j
        |            t          j	        t          ||          |            ddd           dS # 1 swxY w Y   dS dS )zkHardlinks create invalid packages.  Copy files to break the link.
    Symlinks are OK, and unaffected here.r    N)r   r   r   r   rJ   rY  st_nlinkr"   r!   r   r   )rh   re   r   dests       rs   r  r    s     ;; ,VT**++	$B	x~~""!! 	2TOD$'''K ODrNND111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 #"s   'ACCCc                &   | j         j        }t          t          |d                    rt	          d          t          t          |d                    rt	          d          t          t          |d                    rt	          d          d S )Nz__conda_version__.txtzsupport for __conda_version__ has been removed as of Conda-build 3.0.Try Jinja templates instead: http://conda.pydata.org/docs/building/meta-yaml.html#templating-with-jinjaz__conda_buildnum__.txtzsupport for __conda_buildnum__ has been removed as of Conda-build 3.0.Try Jinja templates instead: http://conda.pydata.org/docs/building/meta-yaml.html#templating-with-jinjaz__conda_buildstr__.txtzsupport for __conda_buildstr__ has been removed as of Conda-build 3.0.Try Jinja templates instead: http://conda.pydata.org/docs/building/meta-yaml.html#templating-with-jinja)r   work_dirr   r   
ValueError)rn   src_dirs     rs   get_build_metadatar    s    hGd734455 
Y
 
 	

 d745566 
Y
 
 	

 d745566 
Y
 
 	

 
r   )F)r   )FFr   r   )r	  )r	  N)r9  r   re   r:  r;  r<  )r9  r   re   r:  r;  rA  )r9  r   re   r:  r;  rO  )
r  r   r  r   r  r   r  r  r  r   )rn   r*   )r;  ri  )NF)u
__future__r   rE  rO   rJ   rT   r   rK   r   collectionsr   r   r   r	   r   r   r
   r  	functoolsr   os.pathr   r   r   r   r   r   r   r   r   r   r   r   r   pathlibr   
subprocessr   r   r   typingr   conda.core.prefix_datar   conda.models.recordsr   r  r!   conda_interfacer"   r#   r$   r%   
exceptionsr&   r'   r(   inspect_pkgr)   metadatar*   os_utilsr+   r,   os_utils.lieflddr-   r.   r/   r0   r1   r2   os_utils.pylddr3   r4   r5   r6   r7   r8   r9   r:   r  rt   r   r   r   r   r   r   r   r   r   r   r  r  r4  r  r@  rN  rb  r"  r#  rx  r  r  r  r  r  r  rE  rR  rV  rh  r~  r  r  r  r  r   r   rs   <module>r     s    # " " " " "   				 				   



 0 0 0 0 0 0 0 0       , , , , , ,       2 2 2 2 2 2                                          = = = = = = = = = =       - - - - - - - - - - - -                  K J J J J J J J J J & & & & & &       % % % % % % % %                             0 / / / / / / / / / W<Z  C( C( C( C(L
  
  
 >2 >2 >2 >2B
* 
* 
*( ( (( ( (  7, 7, 7, 7,t  , 2 2 2 24'8 '8 '8 '8T6 6 6r(= (= (= (=V=@DE DE DE DEN        @4 4 4 4p, , , `   2.1 .1 .1bWO WO WOt    _
 _
 _
DC C CL\ \ \j /h h h h hV	    DJ J J J4! ! !>8J 8J 8J 8Jv!, !, !, !,H) ) )X2 2 2$
 
 
 
 
r   