
    -Ph7                       d dl mZ d dlmZ d dlZd dlZd dlZd dlZddl	m
Z
mZmZ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 ddlmZ ddlmZmZ ddlmZmZm Z m!Z! ddl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* ddl+m,Z, ej-        rNd dl.m/Z/ ddl	m0Z0 ddl1m2Z2 ddlm3Z3m4Z4 ddl5m6Z6 ddlm7Z7 ddl"m8Z8 ddl9m:Z:  G d de/          Z; G d de/          Z< G d de          Z= G d d e
          Z>d%d$Z?dS )&    )annotations)PathN   )ExtensionModuleModuleReturnValueNewExtensionModule
ModuleInfo   )mlogbuild)CFLAGS_MAPPING)ENV_VAR_PROG_MAP)InternalDependency)PkgConfigInterface)
FeatureNew)ENV_KW
DEPENDS_KW)ContainerTypeInfo	KwargInfotyped_kwargstyped_pos_args)EnvironmentExceptionMesonException
Popen_safeMachineChoiceget_variable_regexdo_replacement	join_argsrelpath)	OptionKey)	TypedDict)ModuleState)ImmutableListProtocol)BuildTargetCustomTarget)Interpreter)TYPE_var)EnvironmentVariables)EnvironOrDictc                      e Zd ZU ded<   dS )
DependencystrsubdirN__name__
__module____qualname____annotations__     c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/modules/external_project.pyr+   r+   $   s         r4   r+   c                  B    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
S )
AddProjectT.List[str]configure_optionscross_configure_optionsboolverboser(   envz*T.List[T.Union[BuildTarget, CustomTarget]]dependsNr.   r3   r4   r5   r7   r7   (   sK         &&&&,,,,!!!!;;;;;;r4   r7   c            	           e Zd ZU ded<   d, fdZd-dZd.dZd/dZd0dZd1dZ	d2d!Z
 ed"e           ed" ed#ed$%                    d3d+                        Z xZS )4ExternalProjectzImmutableListProtocol[str]makestate'ModuleState'configure_commandr,   r9   r8   r:   r=   r(   r<   r;   extra_depends.T.List[T.Union['BuildTarget', 'CustomTarget']]c                   t                                                       | j                            d| j        i           t          |j                  | _        |j        | _        |j        | _        |j	        | _
        || _        || _        || _        || _        || _        t          | j
                                        | j                  | _        t          | j
                                        | j        d          | _        t          | j
                                        | j        d          | _        | j
        j        j                            t1          d                    }t3          |t4                    s
J d            t          |          | _        | j
        j        j                            t1          d                    }	t3          |	t4                    s
J d            t          |	          | _        | j
        j        j                            t1          d                    }	t3          |	t4                    s
J d            t          |	          | _        | j
        j        j                            t1          d                    }
t3          |
t4                    s
J d            t          |
          | _        | j        j        | _        | j        j         r1t          tC          | j        | j        j                             | _        t          tC          | j        | j        j"                            | _#        | $                    |           | %                    |          | _&        d S )	N
dependencyr   distprefixfor mypylibdirbindir
includedir)'super__init__methodsupdatedependency_methodr   r-   project_version
subprojectenvironmentr=   rD   r9   r:   r<   user_envget_source_dirsrc_dirget_build_dir	build_dirinstall_dircoredataoptstoreget_value_forr    
isinstancer,   rJ   rL   rM   rN   namedriver   root
rel_prefix
_configure_create_targetstargets)selfrB   rD   r9   r:   r=   r<   rE   _p_l_i	__class__s              r5   rP   zExternalProject.__init__5   s    	\4+A  	  	  	  5<(($4*$!2!2'>$DH3355t{CCdh4466WMM 6 6 8 8$+vNNX'55i6I6IJJ"c""..J...2hhX'55i6I6IJJ"c""..J...2hhX'55i6I6IJJ"c""..J...2hhX'55i6M6MNN"c""..J...r((L%	
 ; 	Hwt{DK4EFFGGDK wt{DK4DEEFF++M::r4   returnNonec                F	   | j         dk    rt          dd                              | j        |j                   |                    d          }|                                }|ddt          | j                  gz  }| j	        }|                                dgz   | _
        nt          | j	        | j                   }|                    |                                          }|                                }| j        }|                    d                                          | _
        dd	| j                                        fd
d| j                                        fdd| j                                        fdd | j                                        fg}|                     ||           ||                     | j        |          z  }| j                                        r}d                    |j        j        j        j        |j        j        j        j        dv rdnd|j        j        j        j                  }dd |fg}||                     | j        |          z  }g }	g }
t<          j                                         | _!        | j        j"        j#        tH          j%                 &                                D ]:\  }tO          fdtP          tR          fD                       r.| j        j"        *                    tH          j%                  }tW          |tX                    s
J d            | -                    |.                                          | j!        tP                   <   | -                    |          | j!        tR                   <   |	s_|/                                }	| j        j"        0                    tH          j%                  }tW          |tX                    s
J d            |}
<|	r	 | -                    |
          | j!        d<   | j1        2                    | j!                  | _!        tg          j4        | j!        | j        tH          j%        d          | _!        | j        5                    dd           | 6                    d||           d S )NwafzWaf external projectz0.60.0	configurez-or   rA   PREFIXz--prefix=@PREFIX@LIBDIRz--libdir=@PREFIX@/@LIBDIR@BINDIRz--bindir=@PREFIX@/@BINDIR@
INCLUDEDIRz{}-{}-{}>   x86x86_64pcunknownHOSTc              3      K   | ]}|vV  	d S Nr3   ).0ilangs     r5   	<genexpr>z-ExternalProject._configure.<locals>.<genexpr>   s'      MMQ4q=MMMMMMr4   rK   LDFLAGST)uninstalled)parentsexist_ok)7rD   r   userU   current_nodefind_programget_commandr,   r[   rY   rA   r   as_posixrJ   rL   rM   rN   _validate_configure_options_format_optionsr9   r=   is_cross_buildformatrV   machineshostcpu
cpu_familysystemr:   osenvironcopyrun_envr]   	compilersr   rz   itemsanyr   r   get_external_argsr`   list_quote_and_joinget_exelistget_linker_exelistget_external_link_argsrW   get_envr   	setup_envmkdir_run)rh   rB   rp   configure_cmdworkdirconfigure_pathconfigure_progdr   link_exelist	link_argscompilercargsrj   r   s                 @r5   re   zExternalProject._configurei   s=   !U**-x88<<T_eN`aaa$$U++COO--Mk4T^1D1DEEMlG))WI5DII "$,0FGGN"//0G0G0I0IJJN*6688MnG**622>>@@DI+T[-A-A-C-CD4dk6J6J6L6LM4dk6J6J6L6LMD$/":":"<"<=
 	((E222--d.DaHHH8""$$ 	S$$U%6%?%D%H-2->-G-L-W[l-l-lTT*3%*%6%?%D%KM MD $%&AT11$2NPQRRRM %'!#	&(joo&7&7"h/9-:LMSSUU 	 	ND(MMMM+;^*LMMMMM H%778JDQQEeT**66J666373G3GH\H\H^H^3_3_DL)$/0151E1Ee1L1LDL-. '::<<X&==m>PRVWW!"d++77Z777	 	 "&"6"6y"A"AY},,T\::)3DL$(ML^@DF F F 	TD999		+}g66666r4   arrayc                @    d                     d |D                       S )N c                6    g | ]}t          j        |          S r3   )shlexquote)r}   r~   s     r5   
<listcomp>z3ExternalProject._quote_and_join.<locals>.<listcomp>   s     777AQ777r4   )join)rh   r   s     r5   r   zExternalProject._quote_and_join   s#    xx77777888r4   	variablesT.List[T.Tuple[str, str, str]]c                    |D ]g\  }}}|	d| d}| j         D ]}||v r nI	t          dd                              | j        |j                   | j                             |           hd S )N@zDefault configure_optionz0.57.0)r9   r   r   rU   r   append)rh   r   rB   keydefaultval
key_formatoptions           r5   r   z+ExternalProject._validate_configure_options   s     "+ 		7 		7C##SJ0 7 7''E ( 5x@@DDT_V[Vhiii&--g666		7 		7r4   optionsc                f   g }t                      }t          d          }d |D             }|D ]A}t          ||d|          \  }}	|                    |	           |                    |           B|r?d                    d t          |          D                       }
t          d|
 d          |S )Nmesonc                     i | ]\  }}}||d fS r|   r3   )r}   k_vs       r5   
<dictcomp>z3ExternalProject._format_options.<locals>.<dictcomp>   s(    ?f?f?fQXQRTUWXAt9?f?f?fr4   z, c              3  4   K   | ]}t          |          V  d S r|   )repr)r}   ms     r5   r   z2ExternalProject._format_options.<locals>.<genexpr>   s(       B BQa B B B B B Br4   z
Variables z" in configure options are missing.)setr   r   rR   r   r   sortedr   )rh   r   r   outmissingregexconfdataoargmissing_varsvar_lists              r5   r   zExternalProject._format_options   s    %%"7++?f?f\e?f?f?f 	 	A .ua( K KCNN<(((JJsOOOO 	Kyy B B&// B B BBBH&IXIIIK K K
r4   stepcommandr   r   c                   t          j        d| j         dt          j        |                     dt	          |          z   dz   t	          |          z   dz   }t          t          j                    | j         d| d          }d }| j        s?t          |dd	
          }|	                    |dz              |
                                 nt          j        |           t          ||| j        t          j        |          ^}}|j        dk    r8| d|j         d}| j        s|dt	          |          z   z  }t!          |          d S )NzExternal project :zRunning command z in directory 
-z.logwzutf-8)encoding)cwdr=   stderrstdoutr   z step returned error code .z
See logs: )r   logra   boldr,   r   get_log_dirr<   openwriteflushr   r   
subprocessSTDOUT
returncoder   )	rh   r   r   r   r   log_filenameoutputpr   s	            r5   r   zExternalProject._run   sX   1TY11149T??CCCW-0@@3w<<ORVVD,..490I0It0I0I0IJJ| 	,g>>>FLLT"""LLNNNNHQKKK7T\","3"(* * *A <1BB1<BBBA< 8^c,&7&777 ###	 r4   T.List['TYPE_var']c                   | j                                         }|ddd| j        d| j                                        d| j                                        d| j                                        dt          j                    dt          | j
                  gz  }| j        r|                    d	           t          j        | j        | j                                        | j        | j         |d
dgz   g | j         dg| j         dd|d          | _        t          j        | j                                        t'          d| j                                                  ddd d dd| j        	  	        }| j        |gS )Nz
--internalexternalprojectz--namez--srcdirz
--builddirz--installdirz--logdirz--makez	--verbosez@OUTPUT@z	@DEPFILE@z.stampz.dTzGenerating external project {})depfileconsolerE   descriptionrI   r   F)r\   install_dir_nameinstall_modeexcludestrip_directoryfrom_source_dirrU   )r=   get_build_commandra   rY   r   r[   r\   r   r   r   rA   r<   r   r   r%   r-   rU   target
InstallDirr   rd   )rh   rE   cmdidirs       r5   rf   zExternalProject._create_targets   s   h((**/$)DL1133dn5577 0 9 9 ; ;D,..)DI.. 	 < 	$JJ{###(IK  ""OH:{++	!!!"y$$$'8
 
 
  4 4 6 6 $VT_ = = F F H H,/14-1(,0405+/?< < < T""r4   zexternal_project.dependencyr-    r   argsT.Tuple[str]kwargs'Dependency'r   c                F   |d         }t          | j        | j        | j                  }|d         rt          ||d                   }t          | j        | j        | j                  }| j        }d| g}d| d| g}	| j        }
t          |g ||	g g |
gg g i g g g           }|S )Nr   r-   z-Iz-Lz-l)r   r\   rd   rN   rL   rT   r   r   )rh   rB   r   r   libnameabs_includedir
abs_libdirversioncompile_argsr   sourcesdeps               r5   rS   z!ExternalProject.dependency_method  s     q'd.QQ( 	D!.&2BCCN$*DOT[II
&-^--.&*&&W7	+ "lIr!#gYBBBH H
r4   )rB   rC   rD   r,   r9   r8   r:   r8   r=   r(   r<   r;   rE   rF   )rB   rC   rm   rn   )r   r8   rm   r,   )r   r   rB   rC   rm   rn   )r   r8   r   r   rm   r8   )r   r,   r   r8   r   r   rm   rn   )rE   rF   rm   r   )rB   rC   r   r   r   r  rm   r   )r/   r0   r1   r2   rP   re   r   r   r   r   rf   r   r,   r   r   rS   __classcell__rl   s   @r5   r@   r@   1   s        $$$$2; 2; 2; 2; 2; 2;h>7 >7 >7 >7@9 9 9 97 7 7 7   $ $ $ $(%# %# %# %#N ^1377\/8SRT1U1U1UVV   WV 87    r4   r@   c                  0    e Zd Z eddd          Zd  fdZ ede           ed	 e	d
 e
ee          g d           e	d e
ee          dgd           e	ded          e ej        d                    d!d                        Zd"dZ xZS )#ExternalProjectModulezExternal build systemz0.56.0T)unstableinterpreter'Interpreter'c                    t                                          |           d | _        | j                            d| j        i           d S )Nadd_project)rO   rP   devenvrQ   rR   r  )rh   r  rl   s     r5   rP   zExternalProjectModule.__init__  sR    %%%8<]D,<  	  	  	  	  	 r4   z external_project_mod.add_projectzexternal_project.add_projectr9   )r   listifyr:   z--host=@HOST@r<   Fr   z0.63.0)sincerB   rC   r   r   r   'AddProject'rm   r   c           
        |d         }t          |||d         |d         |d         |d         |d                   }t          |j        |j        |j                                                  }t          |j        |j        |j                                                  }|j                            |h|h          }| j	        || _	        n| j	        
                    |           t          ||j                  S )Nr   r9   r:   r=   r<   r>   )r@   r   r\   rd   rL   r   rM   rV   get_env_for_pathsr  merger   rg   )	rh   rB   r   r   rD   projectr  
abs_bindirr=   s	            r5   r  z!ExternalProjectModule.add_project!  s     !G!%"3"()<"="()B"C"(-"("3"("35 5 '-w/A7>RR[[]]
'-w/A7>RR[[]]
11:,MM;DKKKc""" '/:::r4   bbuild.Buildrn   c                V    | j         !|j                             | j                    d S d S r|   )r  r   )rh   r  s     r5   postconf_hookz#ExternalProjectModule.postconf_hook<  s.    ;"HOODK((((( #"r4   )r  r  )rB   rC   r   r   r   r  rm   r   )r  r  rm   rn   )r/   r0   r1   r	   INFOrP   r   r,   r   r   r   r   r;   r   r   evolver  r  r
  r  s   @r5   r  r    s,       :-x$GGGD            ^6<<\&	%'8'8s'C'CRY]^^^	+->->tS-I-ITcSdnrsss	)T5111
))) ; ; ;  =<;$) ) ) ) ) ) ) )r4   r  interpr  rm   c                     t          |           S r|   )r  )r"  s    r5   
initializer$  A  s     (((r4   )r"  r  rm   r  )@
__future__r   pathlibr   r   r   r   typingTr   r   r   r   r	   r   r   compilers.compilersr   	envconfigr   dependenciesr   dependencies.pkgconfigr   interpreterbaser   interpreter.type_checkingr   r   interpreterbase.decoratorsr   r   r   r   mesonlibr   r   r   r   r   r   r   r   r   r    TYPE_CHECKINGtyping_extensionsr!   r"   _typingr#   r$   r%   r  r&   r'   r(   
utils.corer)   r+   r7   r@   r  r$  r3   r4   r5   <module>r5     s"   # " " " " "       				          P P P P P P P P P P P P         0 0 0 0 0 0 ( ( ( ( ( ( - - - - - - 7 7 7 7 7 7 ( ( ( ( ( ( : : : : : : : : c c c c c c c c c c c cP P P P P P P P P P P P P P P P P P P P      ? <++++++//////11111111))))))******//////******    Y   < < < < <Y < < <c c c c c( c c cL') ') ') ') ')O ') ') ')T) ) ) ) ) )r4   