add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
a

Z��^.:c@spdZddlZddlmZmZmZmZmZddlm	Z	m
Z
ddlmZddl
mZddlmZGdd	�d	e	�ZdS)
z�distutils.bcppcompiler

Contains BorlandCCompiler, an implementation of the abstract CCompiler class
for the Borland C++ compiler.
�N)�DistutilsExecError�CompileError�LibError�	LinkError�UnknownFileError)�	CCompiler�gen_preprocess_options)�
write_file)�newer)�logc
@s�eZdZdZdZiZdgZgd�ZeeZdZ	dZ
dZdZZ
d	Zddd�Zddd�Zddd�Zddd�Zddd�Zd dd�Zd!dd�Zd
S)"�BCPPCompilerzConcrete class that implements an interface to the Borland C/C++
    compiler, as defined by the CCompiler abstract class.
    Zbcppz.c)z.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exercCsnt�||||�d|_d|_d|_d|_gd�|_gd�|_gd�|_gd�|_	g|_
gd�|_gd�|_dS)	Nz	bcc32.exezilink32.exeztlib.exe)�/tWMz/O2�/q�/g0)rz/Odr
r)z/Tpd�/Gnr
�/x)rr
r)rr
rz/r)
r�__init__�cc�linker�libZpreprocess_options�compile_options�compile_options_debug�ldflags_shared�ldflags_shared_debugZldflags_static�ldflags_exe�ldflags_exe_debug)�selfZverboseZdry_run�force�r�./usr/lib64/python3.9/distutils/bcppcompiler.pyr5s




zBCPPCompiler.__init__Nc	Cs�|�||||||�\}}	}}
}|p$g}|�d�|rB|�|j�n|�|j�|	D�]>}
z||
\}}Wnty~YqRYn0tj�|�}tj�|
�}
|�	tj�
|
��|dkr�qR|dk�rz|�dd|
|g�WqRt�y}zt
|��WYd}~qRd}~00qR||jv�rd}n||jv�r*d}nd}d|
}z,|�|jg||
||g||g�WqRt�y�}zt
|��WYd}~qRd}~00qR|	S)	Nz-c�.res�.rcZbrcc32z-fo�z-P�-o)Z_setup_compile�append�extendrrZKeyError�os�path�normpath�mkpath�dirname�spawnrr�
_c_extensions�_cpp_extensionsr)rZsources�
output_dir�macros�include_dirs�debug�
extra_preargs�extra_postargsZdepends�objects�pp_optsZbuildZcompile_optsZobjZsrc�ext�msgZ	input_optZ
output_optrrr�compileQsT��



���
 zBCPPCompiler.compilec	
Cs�|�||�\}}|j||d�}|�||�r�|dg|}|r:z|�|jg|�Wq�ty|}zt|��WYd}~q�d}~00nt�d|�dS)N)r-z/u�skipping %s (up-to-date))	�_fix_object_args�library_filename�
_need_linkr*rrrr
r0)	rr3Zoutput_libnamer-r0�target_lang�output_filenameZlib_argsr6rrr�create_static_lib�s� zBCPPCompiler.create_static_libc 
Cs�|�||�\}}|�|||�\}}}|r8t�dt|��|durNtj�||�}|�||��r�|t	j
kr�d}|	r~|jdd�}q�|jdd�}n&d}|	r�|j
dd�}n|jdd�}|dur�d}n�tj�|�\}}tj�|�\}}tj�|d�}tj�|d|�}dg}|�pgD]}|�d||f��q|�t||fd	|�ttjj|�}|g}g}|D]>}tj�tj�|��\}}|d
k�r�|�|�n
|�|��q`|D]}|�dtj�|���q�|�d�|�|�|�d
|g�|�d�|D]4}|�|||	�}|du�r|�|�n
|�|��q�|�d�|�d�|�d
|g�|�d
�|�|�|
�rp|
|dd�<|�r�|�|�|�tj�|��z|�|jg|�Wn.t�y�}zt|��WYd}~n
d}~00nt�d|�dS)Nz7I don't know what to do with 'runtime_library_dirs': %sZc0w32Zc0d32r!rz%s.defZEXPORTSz  %s=_%sz
writing %srz/L%sz/L.z,z,,Zimport32Zcw32mtr8) r9Z
_fix_lib_argsr
ZwarnZstrr%r&�joinr;rZ
EXECUTABLErrrrZsplit�splitextr)r#ZexecuterZmapr'�normcaser$�find_library_filer(r*rrrr0) rZtarget_descr3r=r-Z	librariesZlibrary_dirsZruntime_library_dirsZexport_symbolsr0r1r2Z
build_tempr<Zstartup_objZld_argsZdef_fileZheadZtailZmodnamer5Ztemp_dirZcontentsZsymZobjects2Z	resourcesZfile�baseZlr�libfiler6rrr�link�s���
�










 zBCPPCompiler.linkc	Csr|r"|d}|d|d||f}n|d|f}|D]:}|D]0}tj�||�|��}tj�|�r:|Sq:q2dS)NZ_dZ_bcpp)r%r&r?r:Zexists)	rZdirsrr0ZdlibZ	try_namesZdirZnamerDrrrrB4s
zBCPPCompiler.find_library_filer!cCs�|durd}g}|D]�}tj�tj�|��\}}||jddgvrRtd||f��|rbtj�|�}|dkr�|�tj�|||��q|dkr�|�tj�||d��q|�tj�|||j	��q|S)Nr!r rz"unknown file type '%s' (from '%s'))
r%r&r@rA�src_extensionsrZbasenamer#r?�
obj_extension)rZsource_filenamesZ	strip_dirr-Z	obj_namesZsrc_namerCr5rrr�object_filenamesNs$��zBCPPCompiler.object_filenamesc
Cs�|�d||�\}}}t||�}dg|}	|dur>|	�d|�|rN||	dd�<|r\|	�|�|	�|�|js~|dus~t||�r�|r�|�tj�	|��z|�
|	�Wn4ty�}
zt|
�t
|
��WYd}
~
n
d}
~
00dS)Nz	cpp32.exer"r)Z_fix_compile_argsrr#r$rr	r(r%r&r)r*rZprintr)rZsourceZoutput_filer.r/r1r2Z_r4Zpp_argsr6rrr�
preprocessis&	�



zBCPPCompiler.preprocess)rrr)NNNrNNN)NrN)
NNNNNrNNNN)r)rr!)NNNNN)Z__name__Z
__module__Z__qualname__�__doc__Z
compiler_typeZexecutablesr+r,rFrGZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ
exe_extensionrr7r>rErBrHrIrrrrrsX�
�
D�
�


�
�r)rJr%Zdistutils.errorsrrrrrZdistutils.ccompilerrrZdistutils.file_utilrZdistutils.dep_utilr	Z	distutilsr
rrrrrZ<module>s