
    daf                        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 Ze j                  j                  e      Ze j                  j                  e      Z e       Z ej                  d      Ze j                  j#                  ed      Ze j                  j#                  ed      Z G d de      Zdd	d
Zd Zd Zd Zd ZddZd Zd Zy)    N)supportc                      t        j                  d      } | st        j                  d      } t        j                  j	                  |       S )N
abs_srcdirsrcdir)	sysconfigget_config_varospathabspath)src_dirs    //root/Python-3.12.4/Tools/freeze/test/freeze.pyget_python_source_dirr   
   s8    &&|4G**8477??7##    makez	freeze.pyoutdirc                       e Zd ZdZy)UnsupportedErrorzThe operation isn't supported.N)__name__
__module____qualname____doc__ r   r   r   r      s    (r   r   cwdc                   |rt        dd|d       t        dt        j                  |       d       	 t        j                  | |ddd      S # t        j
                  $ ru}t        |j                  j                   d|        t        d       t        |j                         t        d       t        |j                         t        d	        d }~ww xY w)
N+cdT)flush)r   capture_outputtextcheckz: z--- STDOUT ---z--- STDERR ---z---- END ----)
printshlexjoin
subprocessrunCalledProcessError	__class__r   stdoutstderr)cmdr   errs      r   
_run_quietr-      s    
c4D)	#uzz#d+~~
 	
 (( ''(3%01cjjcjjos   A C!A0CCc                 L    t        |       }|j                  j                         S N)r-   r)   strip)r+   procs     r   _run_stdoutr2   5   s    c?D;;r   c                 r    d| }| d}t        |       D ]  \  }}||k(  s|j                  |      s|c S  y)N--=)	enumerate
startswith)argsnameoptoptstartiargs         r   find_optr?   :   sK    tf+CayHD/ 3#:1H r   c                    d| }t        | |      }||dk  r| j                  |       y || |<   y |dk  r| j                  ||g       y | |   }||k(  r'|t        |       dz
  k(  rt	        | |f      || |dz   <   y | d| | |<   y )Nr4   r      r5   )r?   appendextendlenNotImplementedError)r9   r:   valuer;   posr>   s         r   
ensure_optrH   C   s    tf+C
4
C}7KKDI	qS%L!3i#:c$i!m#)4+66!DqM%q(DIr   c                    t        d| d|  d       t        j                  j                  |       r)| t        k(  rt        d      t        j                  |        t        j                  || t        j                         t        j                  j                  t        j                  j                  | d            rt        t        dg|        y y )	Nzcopying the source tree from z to ...z#this probably isn't what you wanted)ignoreMakefile	distcleanr   )r"   r	   r
   existsSRCDIR	Exceptionshutilrmtreecopytreer   copy_python_src_ignorer$   r-   MAKE)newrootoldroots     r   copy_source_treerX   W   s    	)'$wis
CD	ww~~gfBCCg
OOGWW-K-KL	ww~~bggll7J78 	D+&G4 9r   c                     t                t        dt        j                                |st        }t        j                  |d       | rVt        j
                  j                  |d      }t        d|        t        |dd      5 }|j                  |        d d d        t        j
                  j                  |d	      }t        |t               t        j
                  j                  |d
      }t        j                  |d       t        d| d       t        j                  t        j                  d      xs d      }t        j
                  j                  |d      g|}t        |dt        j
                  j                  |d             t        j
                  j                  |d      }t        |d|       t!        ||       t"        st%        d      t        j&                         }	|	r|	dk\  r|	dz  dz  }
d|
 }nd}t        d|d| d       t!        t"        |g|       t        d| d       t!        t"        dg|       t        j
                  j                  |dd      }||fS # 1 sw Y   xY w) Nzcwd:Texist_okzapp.pyz$creating the script to be frozen at wzutf-8)encodingcpythonzpython-buildzconfiguring python in rJ   CONFIG_ARGS 	configurez
cache-filezpython-config.cachezpython-installationprefixr   r         z-jz-j2zbuilding python parallel=z in zinstalling python into installbinpython3)r"   r	   getcwdOUTDIRmakedirsr
   r$   openwriterX   rO   r#   splitr   r   rH   r-   rU   r   	cpu_count)scriptr   
scriptfileoutfiler   builddirconfig_argsr+   rb   coresjobsparallelpythons                r   preparerx   h   s   	G	&"))+KK& WW\\&(3
4ZLAB*cG4 	"MM&!	"
 WW\\&),FVV$ ww||FN3HKK4( 
"8*C
01++i66}EKLK77<<,
;{
;CsL"'',,v7L"MNWW\\&"78FsHf%s!v&&LLNE! qyA~v; 
&XKtH:S
9:hX. 
#F83
/0i h/WW\\&%3F:v%%W	" 	"s   I33I=c                    t         st        d      t        d| d       t        j                  |d       t        | dt        d||g|       t        t         gt        j                  j                  |             t        j                  j                  |      j                  d	      d
   }t        j                  j                  ||      }|S )Nr   z	freezing rJ   TrZ   z-Ez-or   .r   )rU   r   r"   r	   rj   r-   FREEZEr
   dirnamebasename
rpartitionr$   )rw   rp   r   r:   
executables        r   freezer      s    v&&	Ij\
%&KK&fdFJ?VLv277??:6777J'2237:Dfd+Jr   c                     t        | g      S r/   )r2   )r   s    r   r&   r&      s    
|$$r   )NN)r	   os.pathr#   rQ   r%   r   testr   r   r
   r|   __file__	TESTS_DIR	TOOL_ROOTrO   whichrU   r$   r{   ri   rP   r   r-   r2   r?   rH   rX   rx   r   r&   r   r   r   <module>r      s    	      $ GGOOH%	GGOOI&			 v||F	i	-	i	*)y )   .
)(5"7&t%r   