
    8xd                        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Zd dlZd dl	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 d dlmZ d dl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"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/m0Z0m1Z1m2Z2 dZ3dZ4d Z5d Z6d Z7d Z8d Z9d Z: ed          	 d<d            Z;d Z<d Z=	 	 	 	 	 d=dZ>d Z?d Z@d  ZAd! ZBd" ZCd>d#ZD ed          d$             ZEd% ZFd& ZGd' ZHd( ZI ed          d)             ZJd* ZKd+ ZLd, ZMd- ZN G d. d/eO          ZPd0 ZQd1 ZR G d2 d3          ZSi aTd aU	 	 	 	 	 	 	 	 	 	 	 d?d6ZV	 	 	 	 	 d@d7ZWd8 ZXd9 ZYd: ZZd; Z[dS )A    N)	lru_cache)glob)joinnormpath)utils)BuildLockErrorDependencyNeedsBuildingError)feature_list)get_build_index)external)ensure_listenv_varprepend_bin_path)get_default_variant   )
CondaError	LinkError	LockErrorNoPackagesFoundErrorPaddingErrorTemporaryDirectoryUnsatisfiableErrorcreate_default_packagesdisplay_actionsexecute_actionsexecute_planget_version_from_git_taginstall_actionspackage_cache	pkgs_dirsreset_contextroot_dir)PERLLUARNUMPYPYTHON)zr-basezmro-basezr-implc                     d                     | j                            dt          |           d                                       d          d d                   S )N.perl   r   variantgetr   splitconfigs    3lib/python3.11/site-packages/conda_build/environ.pyget_perl_verr3   3   sU    886#6v#>#>v#FGGMMcRRSUTUSUV      c                     d                     | j                            dt          |           d                                       d          d d                   S )Nr)   luar+   r,   r0   s    r2   get_lua_verr7   9   sU    885"5f"="=e"DEEKKCPPQSRSQST  r4   c                     | j                             dt          |           d                   }t          |d          s|d         }d                    |                    d          d d                   S )Npythonr/   r   r)   r+   )r-   r.   r   hasattrr   r/   )r1   pys     r2   
get_py_verr<   ?   sg    			H&9&&A&A(&K	L	LB2w U88BHHSMM"1"%&&&r4   c                     d                     | j                            dt          |           d                                       d          d d                   S )Nr)   r_base   r,   r0   s    r2   	get_r_verr@   F   sV    888%8%@%@%JKKQQRUVVQB	
  r4   c                     d                     t          | j                            d          pt	          |           d                                       d                    }|d         dz   |dd          z   S )N numpyr)   r   r   )r   strr-   r.   r   r/   )r1   	conda_npys     r2   get_npy_verrF   N   st    FNw''O+>v+F+Fw+OPPVV	
 	
 I Q<#	!""--r4   c                 ,    t          | j        d          S )Ninclude)r   host_prefixr0   s    r2   get_lua_include_dirrJ   Z   s    "I...r4   )maxsizeFHEADc           	      L   t           j                                        }t          j        t
                    }|rd nt          j        }|sdS d}	||d<   	 t          j        | ddddd|z  z   g||	          }
|
	                    d
          }
t          j        | ddd|g||	          }|	                    d
          }|
|k    rdS t          j        | ddg||	          }|	                    d
          }|
                    d          d         
                                d         }t          |t                    s(|                    t          j                    pd
          }	 t          j        | d|ddg||	          }nj# t          j        $ rX t          j        dk    r)|                    d          rt          j        |          }t          j        | d|ddg||	          }Y nw xY w|	                    d
          }|
                    d          d         
                                d         }t          j        dk    r)|                    d          rt          j        |          }t           j                            |          rt-          |          }t           j                            |          s|                                |                                k    rk|                    d           |                    d|                                z              |                    d|                                z              d}	nU# t          j        $ rC}|                    d           |                    t          |                     d}	Y d }~nd }~ww xY w|	S )NFTGIT_DIRlogz-n1z--format=%HrL   ^)envstderrutf-8remotez-v
r   r   z	--git-dirwin32/zremote does not match git_urlzRemote: z	git_url: z@Error obtaining git information in verify_git_repo.  Error was: )osenvironcopyr   
get_logger__name__
subprocessDEVNULLcheck_output_envdecoder/   
isinstancerD   encodesysgetfilesystemencodingCalledProcessErrorplatform
startswithconvert_unix_path_to_winpathexistsr   isdirlowerdebug)git_exegit_dirgit_urlgit_commits_since_tagrm   expected_revrQ   rO   rR   OKcurrent_commitexpected_tag_commitcache_details	cache_dirremote_details
remote_urlerrors                    r2   verify_git_repor{   ^   s    *//

C

8
$
$C2TT
 2F u	BC	NF/444 

 

 

 (..w77#4eUM<@cRX
 
 
 288AA0005 .h%3v
 
 
 &,,W55!''--a06688;	)S)) 	Q!(()B)D)D)OPPI	"3+y(DA  NN
 , 	 	 	|w&&9+?+?+D+D&!:9EE	"3+y(DA  NNN	 (..w77#))$//288::1=
 <7""z'<'<S'A'A"7@@J7>>*%% 	.!*--J w}}Z(( 	Z-=-=-?-?7==??-R-RII5666IIj:#3#3#5#55666IIkGMMOO3444B(   		TUUU		#e** IsF   A.M BM $F  M A$G(%M 'G((E&M N!9NN!c                    i }t          j        t                    }|rdnt          j        }t
          j                                        }||d<   g d}	 t          j        | ddddg|t
          j	        
                    |          |                                          d	         }|                    d
          }|                    dd          }	t          |	          dk    r0|                    t!          t#          ||	                               t%          t'          |                    |d<   n,# t          j        $ r d}
|                    |
           Y nw xY wd|vr	 t          j        | ddddg|t
          j	        
                    |          |                                          d	         }|                    d
          }|                    dd          }	t          |	          dk    r|	d         |d<   nS# t          j        $ rA}|                    d           |                    t%          |                     Y d}~nd}~ww xY w	 t          j        | ddg|t
          j	        
                    |          |                                          d	         }|                    d
          }||d<   nS# t          j        $ rA}|                    d           |                    t%          |                     Y d}~nd}~ww xY wd|v r)d|v r%d                    |d         |d                   |d<   t/          d |                                D                       rJ |S )z
    Given a repo to a git repo, return a dictionary of:
      GIT_DESCRIBE_TAG
      GIT_DESCRIBE_TAG_PEP440
      GIT_DESCRIBE_NUMBER
      GIT_DESCRIBE_HASH
      GIT_FULL_HASH
      GIT_BUILD_STR
    from the output of git describe.
    :return:
    NrN   )GIT_DESCRIBE_TAGGIT_DESCRIBE_NUMBERGIT_DESCRIBE_HASHdescribez--tagsz--longrL   )rQ   cwdrR   r   rS   -r+   r?   GIT_DESCRIBE_TAG_PEP440zFailed to obtain git tag information.
Consider using annotated tags if you are not already as they are more reliable when used with git describe.r   z--allz4Error obtaining git commit information.  Error was: z	rev-parseGIT_FULL_HASHr~   {}_{}GIT_BUILD_STRc              3      K   | ]}d |v V  	dS )rU   N ).0values     r2   	<genexpr>zget_git_info.<locals>.<genexpr>  s&      99U45=999999r4   )r   r[   r\   r]   r^   rX   rY   rZ   r_   ri   dirname
splitlinesr`   rsplitlenupdatedictziprD   r   re   rm   formatanyvalues)rn   reporm   drO   rR   rQ   keysoutputpartsmsgrz   s               r2   get_git_infor      s    	A

8
$
$C2TT
 2F *//

CC	NKKKD'j(Hf=%%	
 
 

 *,,q w''c1%%u::??HHT#dE**++,,,'*+CF+K+K'L'L
#$$(   E 	
 			# !##	"+*gx@GOOD))	  
 jll1F ]]7++FMM#q))E5zzQ */r%&, 	" 	" 	"IILMMMIIc%jj!!!!!!!!	"'k6*%%	
 
 

 *,,q w''#/(   		HIII		#e**
 !!&9Q&>&>$^^#$a(;&<
 
/
 99ahhjj99999999HsE   CD4 4&EE%BH I7IIA*K   L7LLc                    t           j                                        }| |d<   d |                                D             }i }g d}t	          j        ||t           j                            |                     }|                    d          }|	                    d          \  }}}}}	|dk    r||d<   |	d	k    rd
}	|	|d<   ||d<   ||d<   ||d<   d
                    |d         |d                   |d<   |S )NHG_DIRc                 N    i | ]"\  }}t          |          t          |          #S r   )rD   )r   keyr   s      r2   
<dictcomp>z%get_hg_build_info.<locals>.<dictcomp>  s*    
>
>
>JC3s88SZZ
>
>
>r4   )hgrO   z
--templatez;{rev}|{node|short}|{latesttag}|{latesttagdistance}|{branch}z--revr)   )rQ   r   rS   |nullHG_LATEST_TAGrB   default	HG_BRANCH	HG_NUM_IDHG_LATEST_TAG_DISTANCEHG_SHORT_IDr   HG_BUILD_STR)rX   rY   rZ   itemsr   r_   ri   r   r`   r/   r   )
r   rQ   r   cmdr   revshort_idtagdistancebranchs
             r2   get_hg_build_infor     s   
*//

CCM
>
>#))++
>
>
>C
A  C #CSbgood6K6KLLLF]]7##F+1<<+<+<(C3&
f}} /||AkNAkN"*AAmq~q7GHHAnHr4   Tc                 (   |s| j         j        }| j        | j         _        t	          || j                   }|                    t          | ||                     |                    t          | ||                     |                    t          | ||                     |                    t          | ||                     | r$|                    t          | |                     |                    t          | |                     |                    d t          D                        |p| j         j        }|                                D ]=\  }}|r1|                                |vr |                                t           vr|||<   >|S )N)skip_build_idc                 r    i | ]4\  }}|                                 t          t          |                    5S r   )upperrD   int)r   featr   s      r2   r   zget_dict.<locals>.<dictcomp>I  s2    LLLedjjllCE

OOLLLr4   )r1   rI   build_is_host_merge_build_hostconda_build_varsr   python_vars	perl_varslua_varsr_vars	meta_varsos_varsr
   r-   r   r   	LANGUAGES)	mprefixfor_envr   escape_backslashr-   r   kvs	            r2   get_dictr   ,  s     &%!"AH 	**A HH[F$455666HHYq&"233444HHXa!122333HHVAv/00111 <	1M:::;;; HHWQ    HHLL|LLLMMM))G  1 	17799A--!''))92L2LAaDHr4   c                    t           j                            |           d d         dk    r|j        n|j        }i ddddd|j        dt          |j                  d| d	|j        d
t          j
        dt          j        d|j        d|j        d|dt          j        dd          dt          j        dd          dt          j        dd          d|j        rdnddt           S )Nr+   _tCONDA_BUILD1PYTHONNOUSERSITECONDA_DEFAULT_ENVARCHPREFIXBUILD_PREFIX
SYS_PREFIX
SYS_PYTHONSUBDIRbuild_platformSRC_DIRHTTPS_PROXYrB   
HTTP_PROXYREQUESTS_CA_BUNDLEDIRTYROOT)rX   ri   basenametest_dirwork_dirrI   rD   	host_archbuild_prefixrc   r   
executablehost_subdirbuild_subdirgetenvdirtyr"   )r   r1   src_dirs      r2   r   r   R  sF   7++F33BQB74??V_ sC 	V/ 	F$%%	 	&  	+!" 	cj#$ 	cn%& 	&$'( 	&-)* 	7+, 	ry33-. 	bib11/0 	bi(<bAA12 	,"34 	5 r4   c           	      Z   t          | j                  }t          j        ||          }t          j        ||          }t          j        r.|r,|                    dd          }|                    dd          }d                    |                    d          d d                   t          t          t          |d                   dk                        |||d}| j        rd	nd
}d |                     |          D             }d|v s|                     d          dk    r`| j                            || j        j                  }	t          j        r|r|	                    dd          }	|                    d|	i           | j        j                            dt'          | j                  d                   }
d                    |
                    d          d d                   |d<   d                    |
                    d          d d                   |d<   d|d<   |S )N\\\rB   r)   r+   r   r?   )CONDA_PYPY3KPY_VER
STDLIB_DIRSP_DIRhostbuildc                 6    g | ]}t          |j                  S r   rD   namer   mss     r2   
<listcomp>zpython_vars.<locals>.<listcomp>       FFFRCLLFFFr4   r9   Tfail_okr'   rC   NPY_VER	CONDA_NPYr   NPY_DISTUTILS_APPEND_FLAGS)r<   r1   r   get_stdlib_dirget_site_packageson_winreplacer   r/   rD   r   is_cross
ms_dependsr   
python_binr   r   r-   r.   r   )metadatar   r   py_ver
stdlib_dirsp_dirvars_build_or_hostdepsr  np_vers              r2   r   r   t  s!   ((F%ff55J$VV44F| .( .''f55
f-- GGFLL--bqb122CF1I!+,,--  E '/<FFWMFF8#6#6}#E#EFFFD48===66(BB_//8STT
< 	:, 	:#++D&99J *	
 	
 	
 _$(($X_55g> F xxS 1 1"1" 566E)c!2!22A2!677E+*-E
&'Lr4   c                    t          | j                  t          | j                  d}| j        rdnd}d |                     |          D             }d|v s|                     d          dk    r`| j                            || j        j                  }t          j        r|r|	                    dd	          }|
                    d
|i           |S )N)PERL_VER
CONDA_PERLr   r   c                 6    g | ]}t          |j                  S r   r   r   s     r2   r   zperl_vars.<locals>.<listcomp>  r   r4   r*   Tr   r   r   r#   )r3   r1   r  r  r   perl_binr   r   r  r  r   )r  r   r   r  r  r  r  s          r2   r   r     s     11"8?33 E '/<FFWMFF8#6#6}#E#EFFFD~~t44>>?++FHO4OPP< 	6, 	6''f55H 	
 	
 	
 Lr4   c                    t          | j                  t          | j                  d}| j        rdnd}d |                     |          D             }d|v r| j                            || j        j                  }t          | j                  }t          j        r.|r,|	                    dd          }|	                    dd          }|
                    ||d           |S )	N)LUA_VER	CONDA_LUAr   r   c                 6    g | ]}t          |j                  S r   r   r   s     r2   r   zlua_vars.<locals>.<listcomp>  r   r4   r6   r   r   )r$   LUA_INCLUDE_DIR)r7   r1   r  r  lua_binr   rJ   r   r  r  r   )r  r   r   r  r  r  r  lua_include_dirs           r2   r   r     s    x// 11 E '/<FFWMFF8#6#6}#E#EFFFD}}/))&(/2MNN-ho>>< 	D, 	DoodF33G-55dFCCO#2 	
 	
 	
 Lr4   c                    t          | j                  t          | j                  d}| j        rdnd}d |                     |          D             t	          fdt
          D                       s|                     d          t
          v rr| j                            || j        j                  }t          |dd	          }t          j        r|r|                    d
d          }|                    ||d           |S )N)R_VERCONDA_Rr   r   c                 6    g | ]}t          |j                  S r   r   r   s     r2   r   zr_vars.<locals>.<listcomp>  r   r4   c              3       K   | ]}|v V  	d S Nr   )r   r_pkgr  s     r2   r   zr_vars.<locals>.<genexpr>  s'      22eETM222222r4   Tr   Libsr%   r   r   )r%   R_USER)r@   r1   r  r  r   
R_PACKAGESr   r_binr   r   r   r  r  r   )r  r   r   r  r  r%  r_userr  s          @r2   r   r     s   8?++X_-- E
 '/<FFWMFF8#6#6}#E#EFFFD2222z22222
===&&*44%%fho.IJJffc**< 	0, 	0MM$//E  	
 	
 	
 Lr4   c                    i }t          |                     dg                     D ]}d|v r|                    dd          \  }}nt          j        |          }|t          j        d|z  t                     T|||<   t          j        d|d| j        j	        rdn|dt                     |                     d	d
          }t          | j        j        |          }t          |d          }t          |d          }t          |t                    s(|                    t          j                    pd          }t#          j        d| j        j                  }	|	r t          j                            |          r |                     d          }
t          j                            |
          rFt          j        dk    rt/          j        |
          }
t3          t          | j        |
                    }
d}|
r<t5          |	||
| j        j        | j        j        |                     dd                    }|s|                     d          r.|                    t=          |	|| j        j                             n`t#          j        d| j        j                  rAt          j                            |          r"|                    t?          |                     |                     d          |d<   |                                  |d<   t          | !                                          |d<   | j"        r>|s<t          | #                                          |d<   | $                                |d<   n
d|d<   d|d<   | j        |d<   |S )Nzbuild/script_env=r   z+The environment variable '%s' is undefined.zThe environment variable 'z&' is being passed through with value 'z<hidden>z'.  If you are splitting build and test phases with --no-test, please ensure that this value is also set similarly at test time.zsource/0/folderrB   z.gitz.hgrS   gitzsource/0/git_urlrV   Fzsource/0/git_revrL   zsource/0/pathr   zpackage/namePKG_NAMEPKG_VERSIONPKG_BUILDNUMPKG_BUILD_STRINGPKG_HASHplaceholder1234567
RECIPE_DIR)%r   	get_valuer/   rX   r   warningswarnUserWarningr1   suppress_variablesr   r   ra   rD   rb   rc   rd   r   find_executabler   ri   rj   rf   r   rh   r   r{   rq   rm   r   r   r   versionbuild_numberfinalbuild_idhash_dependencies)metar   r   var_namer   folderrepo_dirro   hg_dirrn   rp   _xs               r2   r   r     sm   
A/A2 F FGG  (??&nnS!44OHeeIh''E=M=H+     AhKMM 884;+ITZZuTTV     ^^-r22FDK(&11H8V$$G(E""Fgs## I..!:!<!<!GHH&udk.FGGG ,27>>'** ,..!3447>>'"" 	9|w&&8AAtDIw7788G 	 1!16:: B  	H00 	HHH\'7DK4EFFGGG		!$(@	A	A ,bgnnG G , 	
"6**+++ NN>22AjM||~~AmD--//00Anz "- " #DMMOO 4 4
..00* -
!*iAlOHr4   c                  @   t           j        dk    r]t          j        ddt          j                                                  \  } }|                     d                                          S 	 t          t          j
                              S # t          $ r Y dS w xY w)Ndarwinzsysctl -n hw.logicalcpuT)shellstdoutrS   r   )rc   rf   r]   PopenPIPEcommunicater`   striprD   multiprocessing	cpu_countNotImplementedError)out_s     r2   get_cpu_countrP  1  s    
|x !%T*/
 
 

+-- 	Q zz'""((***	022333" 	 	 	33	s   /B 
BBc                     |                      d          rdS | dv rdS |                      d          rdS | dk    rt          t          j                  S t	          |           )Nwinz.dll)osxrD  z.dyliblinuxz.sonoarch)rg   get_shlib_extrc   rf   rM  )host_platforms    r2   rV  rV  A  st    && 1v	+	+	+x		!	!'	*	* 1u	(	"	" S\***!-000r4   c                    t          | j        j                  dk    rdnd}d}t          |d          }| j        j                            d          \  }} |dt          |d                      |d	|            |d
t          |d                      |dt          |d                      |dt          |d                      |dd                    d|                                |                    dd          f                      |d            |d            |d            |d            |d            |d            |d            |d            |d            |d            |d            |d             |d!            |d"            |d#            |d$            |d%            |d&            |d'            |d(            |d)            |d*            |d+            |d,            |d-            |d.            |d/            |d0            |d1            |d2            |d3            |d4|d5z   |z              t          j	        
                                D ]C}t          j        d6|          r ||           #t          j        d7|          r ||           Dd8S )9LThis is setting variables on a dict that is part of the get_default function32i386amd64z19.0.0Library:SCRIPTSScriptsLIBRARY_PREFIXLIBRARY_BINbinLIBRARY_INCrH   LIBRARY_LIBlibCYGWIN_PREFIXrB   z
/cygdrive/r   rW   ALLUSERSPROFILEAPPDATACommonProgramFileszCommonProgramFiles(x86)CommonProgramW6432COMPUTERNAMEComSpec	HOMEDRIVEHOMEPATHLOCALAPPDATALOGONSERVERNUMBER_OF_PROCESSORSPATHEXTProgramDataProgramFileszProgramFiles(x86)ProgramW6432PROMPTPSModulePathPUBLICSystemDrive
SystemRootTEMPTMP
USERDOMAINUSERNAMEUSERPROFILEwindirPROCESSOR_ARCHITEW6432PROCESSOR_ARCHITECTUREPROCESSOR_IDENTIFIERBUILDz-pc-windows-zVS[0-9]{2,3}COMNTOOLSzVS[0-9]{4}INSTALLDIRN)rD   r1   r   r   rI   r/   rl   r  rX   rY   r   rematch)	r   get_defaultr   win_archwin_msvclibrary_prefixdrivetailr   s	            r2   windows_varsr  Q  s    QX/00D88vvgHH&),,N(&,,S11KE4K	4	22333K .111KtNE::;;;KtNI>>???KtNE::;;;K,t||DRU?V?V!WXX   K!"""K	K$%%%K)***K$%%%KK	KK
KKK&'''K	KKK#$$$KKKKKKKKKK
KKK()))K()))K&'''KN2X=>>>Z__  8+Q// 	KNNNNX,a00 	KNNN	 r4   c                      |dd            |dt          |dd                      |dd            |d           d	S )
rY  HOMEUNKNOWNPKG_CONFIG_PATHrf  	pkgconfigCMAKE_GENERATORzUnix MakefilesSSL_CERT_FILEN)r   )r   r  r   s      r2   	unix_varsr    s]    K	"""K!4{#C#CDDDK!#3444K     r4   c                 b   t          | j        j                  dk    rd}d}n&t          | j        j                  dk    rd}d}nd}d}t          | j        j                  dk    rd}n"t          | j        j                  dk    rd}nd	} |d
|            |d|            |d|           dS )rY  rZ  r[  g%@arm64g      &@x86_64zi386-apple-darwin13.4.0zarm64-apple-darwin20.0.0zx86_64-apple-darwin13.4.0OSX_ARCHMACOSX_DEPLOYMENT_TARGETr  N)rD   r1   r   arch)r   r  r   r  r  r  s         r2   osx_varsr    s    
18$&&#'  	QX	 	 G	+	+#'  #' 
18=T!!)	QX]		w	&	&*+ K
H%%%K*,DEEEKr4   c                  N    t          j                    t          j                    fS r   )rf   machinearchitecturer   r4   r2   _machine_and_architecturer    s    x46666r4   c                 n   t                      \  }}|}|dk    r;|d         dk    r/t          d           t          d           t          d           d}|                    d          r|                    dd	          }|                    d	          s*|                    d
          s|                    d          rd}nd} |d            |d            |d            |d            |d            |d            |d            |d|dz               |d|dz   |z   dz              dS )rY  r  r   32bitzEWarning: You are running 32-bit Python on a 64-bit linux installationzE         but have not launched it via linux32. Various qeuries *will*zC         give unexpected results (uname -m, platform.machine() etc)i686ppcpowerpcaarch64s390xcos7cos6CFLAGSCXXFLAGSLDFLAGSQEMU_LD_PREFIX
QEMU_UNAMEDEJAGNUDISPLAYLD_RUN_PATHz/libr  z-conda_z
-linux-gnuN)r  printrg   r  )r   r  r   platform_machineplatform_architecture
build_archbuild_distros          r2   
linux_varsr    s   .G.I.I++!J X"7":g"E"EUVVVUVVVSTTT
U## :''y99
i((  ++   ))
 
 KK
K	K !!!KK	K	Kv///Ki/,>MNNNNNr4   c                 p    t          j        |          }|s|                    ||          }|r|| |<   d S d S r   )rX   r   r.   )out_dictr   r-   r   r   s        r2   set_from_os_or_variantr    sI    IcNNE *C))  r4   c                 V    t          j        dt                     t          ||          S )Nz`conda_build.environ.system_vars` is pending deprecation and will be removed in a future release. Please use `conda_build.environ.os_vars` instead.)r3  r4  PendingDeprecationWarningr   )env_dictr   r   s      r2   system_varsr    s1    M	L!  
 1fr4   c                 d    t                      d fd	} |dt                                  |d            |d            |d           t           j        j                  d<   t
          j                                        d         d<    j        j        st           j        j
                  t          j        d	k    rt           ||           nt           ||            j        j        d
k    rt           ||           n! j        j        dk    rt!           ||           S )NrB   c                 <    t          | j        j        |          S r   )r  r1   r-   )r   r   r   r   s     r2   <lambda>zos_vars.<locals>.<lambda>  s     *@	3 '+ + r4   	CPU_COUNTLANGLC_ALL	MAKEFLAGS	SHLIB_EXTPATHrV   rS  rT  )rB   )r   rP  rV  r1   rW  rX   rY   rZ   activater   rI   rc   rf   r  r  r  r  )r   r   r  r   s   `  @r2   r   r     sF   A     K K]__---KKK"18#9::AkN
!!&)AfI8 6Q 455
|wQV,,,,![&)))x&&K((((	
	7	*	*1k6***Hr4   c                       e Zd ZdS )InvalidEnvironmentN)r\   
__module____qualname__r   r4   r2   r  r    s        Dr4   r  c                 |    t          |           5 }t          j        |          }d d d            n# 1 swxY w Y   |S r   )openjsonload)ri   finxs      r2   
_load_jsonr  
  sr    	d sIcNN              Hs   155c                     t          t          j        |                     \  }}}i }|D ]7}|                    d          r t	          t          ||                    ||<   8|S )zp
    Load all json files in a directory.  Return dictionary with filenames mapped to json
    dictionaries.
    z.json)nextr   walkendswithr  r   )ri   rootrO  filesresultfs         r2   _load_all_jsonr    sh    
 %*T**++ND!UF 2 2::g 	2"4a==11F1IMr4   c                        e Zd Zd Zd Zd ZdS )Environmentc                     || _         t          |d          | _        t          j                             |          r-t          j                             | j                  r	i | _        dS t          d|           )z
        Initialize an Environment object.

        To reflect changes in the underlying environment, a new Environment object should be
        created.
        z
conda-metazUnable to load environment N)ri   r   _metarX   rk   	_packagesr  )selfri   s     r2   __init__zEnvironment.__init__  sm     	$--
7== 	K27==#<#< 	KDNNN$%I4%I%IJJJr4   c                 J    | j         st          | j                  | _         d S d S r   )r  r  r  )r  s    r2   _read_package_jsonzEnvironment._read_package_json,  s+    ~ 	8+DJ77DNNN	8 	8r4   c                     |                                   | j                                        }g }|D ]7}|d         |d         |d         }}}|                    | d| d|            8|S )z<
        List all package specs in the environment.
        r   r8  r    )r  r  r   append)r  	json_objsspecsipr   bs          r2   package_specszEnvironment.package_specs0  s     	!!!N))++	 	) 	)Ai9qz!qALLAA((((r4   N)r\   r  r  r  r  r  r   r4   r2   r  r    sD        K K K8 8 8
 
 
 
 
r4   r    r?   c                 .	   i }t          j        t                    }t          j        }t          |          }|r|                    t                     |s|rt          j	        }|rt          j
        }nt           j        }t          D ]\  }}|r|                    d|z              t          |          }t          |t          |          d         ||||||	          \  }}}t!          d |D                       }|||||
ft"          v r:t$          |k    r/t"          |||||
f                                         }d|v r| |d<   nQ|rNt          j        |          5   |            5  	 t+          | ||d          }nz# t,          t.          f$ r}t1          ||          d }~wt2          t4          t6          t0          t8          t:          t<          f$ r"}d	t?          |          v r%|                     d
t?          |                     n[dt?          |          v s'dt?          |          v stC          |t:                    r#t          j"        |||	          }t          j#        ||	          5  t?          |          }d}tH          j%        &                    |          tN          vrV|dk     rPtH          j%        &                    |          }|dz  }tH          j%        &                    |          tN          vr|dk     P|                     d|           |tN          v r3tH          j%        (                    |          rt          j)        |           d d d            n# 1 swxY w Y   ||k     rk|                     d
t?          |                     tU          | t!          |          ||dz   ||||t!          |          |	|
||t!          |                    }n|+                    d            Y d }~nd }~ww xY wd d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |
r7dD ]4tY          fd|D                       sfd|d         D             |d<   5t          j-        |           |                                t"          |||||
f<   |a|S )Nz%s@r   )output_folderchannel_urlsrm   verboselockingtimeoutc              3      K   | ]:}t          |                              d           $t          j        |          V  ;dS )@N)rD   r  r   ensure_valid_spec)r   specs     r2   r   z&get_install_actions.<locals>.<genexpr>o  s[        *.s4yy?Q?QRU?V?V%%     r4   r   T)force)subdirlockz;failed to get install actions, retrying.  exception was: %s requires a minimum conda versionlink a source that does notr     r   zYI think conda ended up with a partial extraction for %s. Removing the folder and retrying)retriesr  r  rm   r  bldpkgs_dirsr  disable_pipmax_env_retryr  r  z4Failed to get install actions, max retries exceeded.)pip
setuptoolswheelc              3   b   K   | ])}t          j        d z  t          |                    V  *dS )z^%s(?:$|[\s=].*)N)r  r  rD   )r   deppkgs     r2   r   z&get_install_actions.<locals>.<genexpr>  sL        FIBH036CAA     r4   c                 *    g | ]}|j         k    |S r   )r   )r   r  r  s     r2   r   z'get_install_actions.<locals>.<listcomp>  s,     ' ' '!%DI<L<L<L<L<Lr4   LINK).r   r[   r\   loggingWARNlistextendr   
contextlibnullcontextDEBUGcapturer
   r  r   r   tuplecached_actionslast_index_tsrZ   LoggingContextr   r   r   r	   
SystemExitr   r   r   AssertionErrorr   rD   r4  ra   get_conda_operation_lockstry_acquire_locksrX   ri   r   r    rk   rm_rfget_install_actionsrz   r   trim_empty_keys)r   r  rQ   r  r  r  rm   r  r  r  r  r  r  r  actionsrO   conda_log_levelr  featurer   indexindex_tsrO  exclockspkg_dirr?  r  s                              @r2   r  r  A  s8   $ G

8
$
$ClOKKE .,---  %  ( 	,%mO-& * * 	*LL)))|,,L(\1#!	 	 	E8Q   27    E
 	 
  *X55 %flK!PQVVXXw &GH	 V! !/22 E	 E	 D DC-feU$OOOGG,.@A K K K6s6JJJJ 0"" ? ? ? S))YHH   
 ;c#hhFF8CHHDD%c>:: E !& ?#\7! ! #4UGLLL 5 5&)#hhG%&F " 8 8	 I I$*RKK*,'//'*B*B &!	 !# 8 8	 I I$*RKK  HH!C '  
  ')33g8N8N3 %G 4 4 45 5 5 5 5 5 5 5 5 5 5 5 5 5 5  ..YHH   #6"!%LL$+aK#)$+"'$+).|)<)<$+(3*7*7).|)<)<# # #" 		R   )  W?D D D D D D D D D D D D D D DE	 E	 E	 E	 E	 E	 E	 E	 E	 E	 E	 E	 E	 E	 E	L  		5       MR     ' ' ' ')0' ' 'GFO 	g&&&JQ,,..sFL+FG Ns   P&P(E=;P=O4F3O4BO/,C M	O/MO/M B
O/*P/O44P7PP	P
P	PP!Pc
                    |j         rt          j        t          j                  }
nt          j        t          j                  }
t          j                            |           rDt          t          j        
                    | d                    D ]}t          j        |           |
5  t          j        t                    }|r|                     d|            |                     t          |                     |st          j        |          }	 t          j        ||j                  5  t%          |d          st'          t)          |                    }t+          | t-          |          |||j        |j         |j        t-          |j                  |j        |j        |j        |j        t-          |j                            }n|}t=          ||j        |j        |j        |j         |j        |j        |j                  \  }}}t          j         |           tC          ||           t          j"        r@t          j#        $                                D ]!\  }}t          |          t          j#        |<   "tK          d|j         tL                    5  tK          d|j         tL                    5  tO          ||           d	d	d	           n# 1 swxY w Y   d	d	d	           n# 1 swxY w Y   d	d	d	           n# 1 swxY w Y   n# tP          tR          tT          tV          tX          tZ          f$ r}d
t          |          v s7t]          j/        dt          |                    sta          |tR                    r|j1        dk    r|j2        r|3                    d|j1                   |3                    d           |3                    t          |                     |3                    d           |3                    d           |3                    d           d|_1        d| v }|r|j4        n|j5        } | |d<   tm          | ||||||           n dt          |          v rJ||j        k     r=|3                    dt          |                     tm          | ||||||dz   |           ndt          |          v sdt          |          v rht          j        ||j                  5  t          |          }d}t          j        7                    |          tp          vrV|dk     rPt          j        7                    |          }|dz  }t          j        7                    |          tp          vr|dk     P|3                    d|           t          j        9                    |          rt          j        |           d	d	d	           n# 1 swxY w Y   ||j        k     r>|3                    dt          |                     tm          | ||||||dz   |           n|:                    d             Y d	}~nmd	}~wtv          tx          tz          t|          t~          f$ rC}ta          |tv                    rt          j        ||j                  5  t          j        7                    t          j        7                    t          |                              }|3                    d|           t          j        9                    |          rt          j        |           d	d	d	           n# 1 swxY w Y   ||j        k     r>|3                    dt          |                     tm          | ||||||dz   |           n|:                    d            Y d	}~nd	}~ww xY wd	d	d	           d	S # 1 swxY w Y   d	S )zD
    Create a conda envrionment for the given prefix and specs.
    *zCreating environment in %sr   r   )
r  r  rm   r  r  r  r  r  r  r  )r  bldpkgs_dirr  r  rm   r  r  r  CONDA_QUIET
CONDA_JSONNztoo short inz-post-link failed for: (?:[a-zA-Z]*::)?opensslP   z)Build prefix failed with prefix length %dzError was: zYOne or more of your package dependencies needs to be rebuilt with a longer prefix length.z6Falling back to legacy prefix length of 80 characters.z<Your package will not install into prefixes > 80 characters._h_envr   )r1   r  rQ   clear_cacher  r  z2failed to create env, retrying.  exception was: %sr   )r1   r  rQ   r0  retryr  r  r  r   r  zZI think conda ended up with a partial extraction for %s.  Removing the folder and retryingz+Failed to create env, max retries exceeded.)@rm   r   r  r  r  r  rX   ri   rj   r   r   r  r[   r\   rD   r  r  r  r:   r  setr  r  r  r  r  r  r  r  r  r   r+  r   r   r  rY   r   r   r!   r   r  r   r   r	   r   r   r  searchra   prefix_lengthprefix_length_fallbackr4  rI   r   
create_envr   r    rk   rz   r  OSError
ValueErrorRuntimeErrorr   )r   specs_or_actionsrQ   r1   r  r0  r1  r'  r  is_condaexternal_logger_contextentryrO   r  r!  r$  rO  r   r   r&  r   r(  r?  s                          r2   r6  r6    s	    | E"'"6w}"E"E"'"6w|"D"D	w~~f "',,vs3344 	 	EK	  ~ ~x((
  x	II2F;;;IIc*++,,, @7??r,UFNKKK &< &<"#3V<< 3 $S)9%:%: ; ;"5"!%LL#)$*N"(,$*N).v/B)C)C$*N(.(:*0*>*0*>).v/B)C)C# # #  #3"1%$*$6&,&:%+%8$l & & &	# 	# 	#KE1a )'222#GU333| 3$&J$4$4$6$6 3 3DAq,/FFBJqMM FN0BMRR < <$\v~3E}UU < <+GU;;;< < < < < < < < < < < < < < << < < < < < < < < < < < < < <I&< &< &< &< &< &< &< &< &< &< &< &< &< &< &<P , f f f #c#hh..yGS  / "#|44	 /
 *R//4 #G"0   ///S***;   T   Z   02,'61 8<!T!3!3AT,2)""##)#) #(3%-     s3xx''v333PHH   #",#)#) #(3"'!)%-	 	 	 	 83< <  2c#hh>>0OOO 1 1"%c((!" goog66iGGFUWKK&(goog&>&>G"aKF !goog66iGGFUWKK ?#  
 7==11 1!K0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 v333PHH   #",#)#) #(3"'!)%-	 	 	 	 	 		"OPPP  ! ! ! c>22 	10OOO 1 1"$'//"'//#c((2K2K"L"L?#  
 7==11 1!K0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 6///HHLcRUhh   (%%$/#ai!)	 	 	 	 	 IIKLLL	 	 	 	 	+!{~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~s	  *A+_L1E*LK,8K		K,KK,KK, L,K00L3K04L7LL	L
L	L_*^5:F=Y7CWYWY!W"A#Y_'^520^0"B]5^0]^0]	A"^0+_0^55__	_	c                      fd| D             S )Nc                 F    g | ]}t          j        |j                   S )r   )r   get_lockr  )r   r?  r1   s     r2   r   z&get_pkg_dirs_locks.<locals>.<listcomp>  s*    NNNvEN66>:::NNNr4   r   )dirsr1   s    `r2   get_pkg_dirs_locksrB    s    NNNNNNNNr4   c           
         |j         rt          | |          ng }t          j        ||j                  5  | D ]r}|D ]m}|g}t
          j                            |          s0t          t
          j        	                    ||dz                       }|D ]}t          j
        |           ns	 d d d            d S # 1 swxY w Y   d S )Nr   r*  )r  rB  r   r  r  rX   ri   isabsr   r   r  )rA  fnsr1   r'  r?  fn	all_filesr=  s           r2   remove_existing_packagesrH    s(   06FtV,,,BE		 	?	?	? ' ' 	' 	'F ' 'D	w}}R(( E $RW\\&"s(%C%C D DI& ' 'EK&&&&'	'	'' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   A6B99B= B=c           
      2    g }t           j        }|j        rt           j        }t	          j        |          5  t          |j        gt          z   |          }t	          j	        ||j
                  5  d                               d                               g}t          |           t          D ]}t          j                            t          j                            |                     s^t          j                            t          j                            | dz                       st#          d  d z   fD                       r~t	          j        t&                    }|                    d            |                    d           t)                      } fd	|                                D             }|D ]	}	|	|v r||	= 
	 d d d            n# 1 swxY w Y   t-          t           g|           d d d            d S # 1 swxY w Y   d S )
Nr   zRM_EXTRACTED {0} local::{0}zRM_FETCHED {0} local::{0}z.tar.bz2c              3   6   K   | ]}|t                      v V  d S r   )r   )r   pkg_ids     r2   r   z"clean_pkg_cache.<locals>.<genexpr>  s<        6<-//1     r4   zlocal::z>Conda caching error: %s package remains in cache after removalzmanually removing to compensatec                     g | ]}|v |	S r   r   )r   r   dists     r2   r   z#clean_pkg_cache.<locals>.<listcomp>  s    GGGC43;;C;;;r4   )r  r  rm   r  r   r  rB  r+  r    r  r  r   r   rX   ri   rj   r   r   r[   r\   r   r   rH  )
rM  r1   r'  r"  rmplanr?  rO   cacher   rK  s
   `         r2   clean_pkg_cacherP    s   ElO| (!-		o	.	. "< "<"F$6#7)#CVLL$UFNCCC 	. 	.-44T::+22488F    
 $ . .GNN27<<#=#=>>.w~~bgll64*;L&M&MNN.   AEySWGW@X    .  *844CIIX   II?@@@)OOEGGGG5::<<GGGD"& . .!U?? %f%.	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.@ 	!TFF;;;E"< "< "< "< "< "< "< "< "< "< "< "< "< "< "< "< "< "<s6   :H1EGHG!	!H$G!	%HHHc                 
   t          d          5 }t          |t          |                     |                    || j        j        | j        j        | j        j        | j        j        t          | j        j	                  | j        j
        | j        j        | j        j        | j        j        t          | j        j                            }d d d            n# 1 swxY w Y   d |                    dg           D             }|S )NrO  )r   )
r  rm   r  r  r  r  r  r  r  r  c                 j    g | ]0}d                      |j                            dd                    1S )r  r   r+   )r   	dist_namer   )r   links     r2   r   z#get_pinned_deps.<locals>.<listcomp>  sC       48&&sA..//  r4   r  )r   r  r  r  r1   target_subdirrm   r  r  r  r  r  r  r  r  r.   )r   sectiontmpdirr!  runtime_depss        r2   get_pinned_depsrY    s*   	3	'	'	' 
6%!,,w''((8)(.H$H$qx455H$,(0(0qx455
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
  <CKKPR<S<S  L s   B;CCC)FrL   )NTFFN)F)r   NTFTNr  Fr?   NN)Tr   NFF)\r  r  r  rK  rX   rf   r  r]   rc   r3  	functoolsr   r   os.pathr   r   conda_buildr   conda_build.exceptionsr   r	   conda_build.featuresr
   conda_build.indexr   conda_build.os_utilsr   conda_build.utilsr   r   r   conda_build.variantsr   conda_interfacer   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r   r$  r3   r7   r<   r@   rF   rJ   r{   r   r   r   r   r   r   r   r   r   rP  rV  r  r  r  r  r  r  r  r   	Exceptionr  r  r  r  r  r  r  r6  rB  rH  rP  rY  r   r4   r2   <module>re     s:             				  				     



              " " " " " " " "       O O O O O O O O - - - - - - - - - - - - ) ) ) ) ) ) D D D D D D D D D D 4 4 4 4 4 4                                     , 4	-
    ' ' '  	. 	. 	./ / / 4PVU U U UpU U Up  > # # # #L  D% % %P  ,  0  8H H H HV 4  1 1 1 5 5 5p! ! !     4 47 7 7"O "O "OJ      <	 	 	 	 	 	 	 	  
 
 
       @  
S S S Sx 

V V V VrO O O
' 
' 
')< )< )<X    r4   