
    -PhG                    t    d dl mZ d dlZd dlZd dlZd dlmZ d dlZddl	m
Z
mZmZ  G d d          ZddZdS )    )annotationsN)Path   )
Popen_safe
split_argsdetermine_worker_countc                  @    e Zd ZddZddZddZdd	ZddZdddZdS )ExternalProjectoptionsargparse.Namespacec                    |j         | _         |j        | _        |j        | _        |j        | _        |j        | _        |j	        | _	        |j
        | _
        |j        | _        t          |j                  | _        d S N)namesrcdirsrc_dirbuilddir	build_dir
installdirinstall_dirlogdirlog_dirverbose	stampfiledepfiler   make)selfr   s     b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/scripts/externalproject.py__init__zExternalProject.__init__   sc    L	~ )"-~ *w|,,			    returnNonec                   t          | j        dd          5 }|                    | j         d           t	          j        | j                  D ]\  }}}d |D             |d d <   |D ]v}|                    d          rt          ||          }|                    d	                    |
                                                    dd	                               w	 d d d            d S # 1 swxY w Y   d S )
Nwutf-8encodingz: \
c                <    g | ]}|                     d           |S ).)
startswith).0ds     r   
<listcomp>z1ExternalProject.write_depfile.<locals>.<listcomp>   s)    LLLQ!,,s:K:KLqLLLr   r(   z  {} \
 z\ )openr   writer   oswalkr   r)   r   formatas_posixreplace)r   fdirpathdirnames	filenamesfnamepaths          r   write_depfilezExternalProject.write_depfile   si   $,g666 	U!GGt~---...020E0E U U,9LL(LLL& U UE'',, ! //DGGK..t}}/F/FsE/R/RSSTTTT	UU	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	Us   CC..C25C2c                h    t          | j        dd          5  	 d d d            d S # 1 swxY w Y   d S )Nr#   r$   r%   )r.   r   )r   s    r   write_stampfilezExternalProject.write_stampfile%   s    $.#888 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   '++boolc                h    t          | j        dgz             \  }}}|j        dk    r
d|v sd|v rdS dS )Nz	--versionr   zGNU MakewafTF)r   r   
returncode)r   poes       r   supports_jobs_flagz"ExternalProject.supports_jobs_flag)   sE    TY+6771a<1*//UaZZ4ur   intc                   | j                                         }|                                 r$|                    dt	                                  |                     d|          }|dk    r|S | j                                         }i }| j        |d<   |                    d           |                     d||          }|dk    r|S |                                  |                                  dS )Nz-jbuildr   DESTDIRinstall)	r   copyrE   appendr   _runr   r;   r=   )r   make_cmdrcinstall_cmdinstall_envs        r   rH   zExternalProject.build/   s    9>>##""$$ 	=OO;!7!9!9;;<<<YYw))77Iinn&&!%!1I9%%%YYy+{;;77Iqr   NstepstrcommandT.List[str]envT.Optional[T.Dict[str, str]]c                   dt          |          z   dz   t          | j                  z   dz   }t          | j        | j         d| d          }d }| j        s?t          |dd          }|                    |dz              |                                 nt          |           t          j                                        }|r|                    |           t          |t          j        || j        |	          \  }}	}
|j        d
k    r8| d|j         d}| j        s|dt          |          z   z  }t          |           |j        S )NzRunning command z in directory 
-z.logr#   r$   r%   )stderrstdoutcwdrV   r   z step returned error code r(   z
See logs: )rS   r   r   r   r   r   r.   r/   flushprintr0   environrK   updater   
subprocessSTDOUTrA   )r   rR   rT   rV   mlog_filenameoutputrun_envrB   rC   rD   s              r   rM   zExternalProject._runD   sU   W-0@@3t~CVCVVY]]DLTY*C*C*C*C*CDD| 	,g>>>FLLT"""LLNNNN!HHH*//## 	 NN3WZ->v!%!(* * *1a <1BB1<BBBA< 8^c,&7&777!HHH|r   )r   r   )r    r!   )r    r>   )r    rF   r   )rR   rS   rT   rU   rV   rW   r    rF   )	__name__
__module____qualname__r   r;   r=   rE   rH   rM    r   r   r
   r
      s        	- 	- 	- 	-	U 	U 	U 	U         *      r   r
   argsrU   r    rF   c                   t          j                    }|                    d           |                    d           |                    d           |                    d           |                    d           |                    d           |                    dd	           |                    d
           |                    d           |                    |           }t	          |          }|                                S )Nz--namez--srcdirz
--builddirz--installdirz--logdirz--makez	--verbose
store_true)actionr   r   )argparseArgumentParseradd_argument
parse_argsr
   rH   )rl   parserr   eps       r   runrv   [   s    $&&F
!!!

###
%%%
'''

###
!!!
L999
$$$
	"""%%G		!	!B88::r   )rl   rU   r    rF   )
__future__r   r0   rp   rb   pathlibr   typingTmesonlibr   r   r   r
   rv   rk   r   r   <module>r|      s    # " " " " " 				                E E E E E E E E E EK K K K K K K KZ     r   