add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
U

�AT^�Uc@s�ddlZddlZddlZddlZddlZddlmZmZmZm	Z	m
Z
ddlmZm
Z
ddlmZddlmZddlmZdd�Zd	d
�Zddd
dd�Zdd�Zdd�Zddd�Zddddd�Zedg�ZGdd�de�ZdS)�N)�DistutilsExecError�DistutilsPlatformError�CompileError�LibError�	LinkError)�	CCompiler�gen_lib_options)�log)�get_platform)�countcCsztjtjdtjtjBd�}Wn tk
r>t�d�YdSXd}d}|��t�D]�}zt�	||�\}}}Wntk
r�Yq�YnX|rT|tj
krTtj�
|�rTztt|��}Wnttfk
r�YqTYnX|dkrT||krT||}}qTW5QRX||fS)Nz'Software\Microsoft\VisualStudio\SxS\VC7)ZaccesszVisual C++ is not registered�NNri)�winregZ	OpenKeyExZHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEY�OSErrorr�debugr
Z	EnumValueZREG_SZ�os�path�isdirZintZfloatZ
ValueErrorZ	TypeError)�key�best_version�best_dirZiZvZvc_dirZvtZversion�r�//usr/lib64/python3.8/distutils/_msvccompiler.py�_find_vc2015s2
�



rc
Cs�ddl}tj�d�ptj�d�}|s(dSz8tjtj�|ddd�dd	d
ddd
ddg	ddd���}Wntj	t
tfk
r~YdSXtj�|ddd�}tj�|�r�d|fSdS)NrzProgramFiles(x86)ZProgramFilesrzMicrosoft Visual StudioZ	Installerzvswhere.exez-latestz-prereleasez	-requiresz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64z	-propertyZinstallationPathz	-productsZ*ZmbcsZstrict)Zencoding�errorsZVCZ	AuxiliaryZBuildi)
�jsonr�environ�get�
subprocess�check_outputr�joinZstrip�CalledProcessErrorr
ZUnicodeDecodeErrorr)rZrootrrrr�_find_vc2017:s2
��r �x86�x64ZarmZarm64)r!�	x86_amd64�x86_arm�	x86_arm64c	Cst�\}}d}|tkr t|}nd|kr,dnd}|r�tj�|ddddd|dd	�	}zd
dl}|j|dd�d
}Wntttfk
r�d}YnX|s�t	�\}}|r�tj�|d|dd	�}|s�t
�d�dStj�|d�}tj�|�s�t
�d|�dS|�rtj�|��st
�d|�d}||fS)NZamd64r"r!z..ZredistZMSVCz**zMicrosoft.VC14*.CRT�vcruntime140.dllrT)Z	recursivei����zMicrosoft.VC140.CRTz$No suitable Visual C++ version foundrz
vcvarsall.batz%s cannot be found)
r �PLAT_SPEC_TO_RUNTIMErrr�globZImportErrorr
�LookupErrorrrr�isfile)	�	plat_spec�_r�	vcruntimeZvcruntime_platZvcredistr(r�	vcvarsallrrr�_find_vcvarsallcsD

�

�
r/c
Cs�t�d�rdd�tj��D�St|�\}}|s6td��z&tjd�||�tj	d�j
ddd	�}Wn@tjk
r�}z t�
|j�td
�|j���W5d}~XYnXdd�dd
�|��D�D�}|r�||d<|S)NZDISTUTILS_USE_SDKcSsi|]\}}|��|�qSr��lower)�.0r�valuerrr�
<dictcomp>�s�z_get_vc_env.<locals>.<dictcomp>zUnable to find vcvarsall.batzcmd /u /c "{}" {} && set)Zstderrzutf-16leZreplace)rzError executing {}cSs$i|]\}}}|r|r|��|�qSrr0)r2rr,r3rrrr4�s
�css|]}|�d�VqdS)z=N)Z	partition)r2ZlinerrrZ	<genexpr>�sz_get_vc_env.<locals>.<genexpr>�py_vcruntime_redist)r�getenvrZitemsr/rrr�formatZSTDOUTZdecoderrZerrorZoutput�cmdZ
splitlines)r+r.r-ZoutZexcZenvrrr�_get_vc_env�s4
�
��
��r9cCsN|st�d��tj�}|D].}tj�tj�|�|�}tj�|�r|Sq|S�Nr)rr6�split�pathseprr�abspathr*)Zexe�paths�pZfnrrr�	_find_exe�s	
r@r#r$r%)Zwin32z	win-amd64z	win-arm32z	win-arm64r&c
s�eZdZdZiZdgZdddgZdgZdgZeeeeZ	dZ
d	Zd
ZdZ
dZZd
Zd)dd�Zd*dd�Zd+dd�Zd,dd�Zd-dd�Zd.dd�Zdd�Z�fdd �Zd!d"�Zd#d$�Zd%d&�Zd/d'd(�Z�ZS)0�MSVCCompilerZmsvcz.cz.ccz.cppz.cxx�.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs t�||||�d|_d|_dS)NF)r�__init__�	plat_name�initialized)�selfZverboseZdry_runZforcerrrrC�szMSVCCompiler.__init__NcCs2|dkrt�}|tkr(td�tt����t|}t|�}|sDtd��|�dd�|_|j�t	j
�}td|�|_td|�|_
td|�|_td|�|_td	|�|_td
|�|_|�dd�|_|�dd��t	j
�D]}|r�|�|�t	j��q�|�d
d��t	j
�D]}|r�|�|�t	j��q�d|_dddddg|_|j�|j�r>dnd�ddddddg|_dddg}|j�sr|�d�ddddg}|d#�|_|d$�|_|d%�|_|d&�|_|�|_ |�|_!t"j#df|jt"j#d!f|jt"j#d"f|jt"j$df|jt"j$d!f|jt"j$d"f|jt"j%df|j t"j%d!f|j t"j%d"f|j!i	|_&d"|_'dS)'Nz--plat-name must be one of {}z7Unable to find a compatible Visual Studio installation.r�zcl.exezlink.exezlib.exezrc.exezmc.exezmt.exer5Zinclude�libz/nologoz/Oxz/W3z/GLz/DNDEBUGz/MDz/MTz/Odz/MDdz/Ziz/D_DEBUGz/INCREMENTAL:NOz/LTCG)z/nodefaultlib:libucrt.libzucrt.libz/DEBUG:FULL�/MANIFEST:EMBED,ID=1�/DLL�/MANIFEST:EMBED,ID=2�/MANIFESTUAC:NOFT�rIrM�rJrKrLrN)(r	�PLAT_TO_VCVARSrr7Ztupler9r�_pathsr;rr<r@�cc�linkerrH�rc�mcZmt�_vcruntime_redistZadd_include_dirZrstrip�sepZadd_library_dirZpreprocess_options�compile_options�append�compile_options_debug�extendZldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugrZ
EXECUTABLEZ
SHARED_OBJECTZSHARED_LIBRARY�_ldflagsrE)rFrDr+Zvc_envr>�dir�ldflagsZ
ldflags_debugrrr�
initialize�s�����
�



�zMSVCCompiler.initializerGcsT�fdd��jD��fdd��j�jD����p4d����fdd�}tt||��S)Nc�i|]}|�j�qSr)�
obj_extension�r2�ext�rFrrr4G�z1MSVCCompiler.object_filenames.<locals>.<dictcomp>cr_r)�
res_extensionrarcrrr4HrdrGcs�tj�|�\}}�r"tj�|�}n2tj�|�\}}|�tjjtjjf�rT|dd�}ztj��|�|�WSt	k
r�t
d�|���YnXdS)NizDon't know how to compile {})rr�splitext�basenameZ
splitdriveZ
startswithrVZaltseprr)rr7)r?�baserbr,)�ext_map�
output_dir�	strip_dirrr�
make_out_pathMsz4MSVCCompiler.object_filenames.<locals>.make_out_path)�src_extensions�_rc_extensions�_mc_extensionsZlistZmap)rFZsource_filenamesrkrjrlr)rirjrFrkr�object_filenamesBs�zMSVCCompiler.object_filenamesc	Cs�|js|��|�||||||�}	|	\}}
}}}|p6g}
|
�d�|rT|
�|j�n|
�|j�d}|
D�]}z||\}}Wntk
r�YqhYnX|r�tj	�
|�}||jkr�d|}�nD||jkr�d|}d}�n*||j
k�r@|}d|}z|�|jg|||g�Wqhtk
�r:}zt|��W5d}~XYqhXqhn�||jk�r�tj	�|�}tj	�|�}z\|�|jd|d||g�tj	�tj	�|��\}}tj	�||d	�}|�|jd||g�Wqhtk
�r�}zt|��W5d}~XYqhXqhntd
�||���|jg|
|}|�r"|�d�|�|�|�d|�|�|�z|�|�Wqhtk
�r~}zt|��W5d}~XYqhXqh|
S)
Nz/cFz/Tcz/TpTz/foz-hz-rrBz"Don't know how to compile {} to {}z/EHscz/Fo)rEr^Z_setup_compilerXrZrYrWZKeyErrorrrr=�
_c_extensions�_cpp_extensionsrn�spawnrSrrro�dirnamerTrfrgrr7rQ)rFZsourcesrjZmacrosZinclude_dirsr�
extra_preargs�extra_postargsZdependsZcompile_info�objectsZpp_optsZbuildZcompile_optsZadd_cpp_optsZobjZsrcrbZ	input_optZ
output_opt�msgZh_dirZrc_dirrhr,Zrc_fileZargsrrr�compilecsx
�




�


zMSVCCompiler.compilec	
Cs�|js|��|�||�\}}|j||d�}|�||�r�|d|g}|rJz,t�d|jd�|��|�	|jg|�Wq�t
k
r�}zt|��W5d}~XYq�Xnt�d|�dS)N)rj�/OUT:�Executing "%s" %s� �skipping %s (up-to-date))rEr^�_fix_object_args�library_filename�
_need_linkrrrHrrsrr)	rFrwZoutput_libnamerjr�target_lang�output_filenameZlib_argsrxrrr�create_static_lib�s�zMSVCCompiler.create_static_libc
Cs�|js|��|�||�\}}|�|||�}|\}}}|rL|�dt|��t||||�}|dk	rptj�	||�}|�
||��r�|j||	f}dd�|p�gD�}||||d|g}tj�|d�}|dk	�rtj�
tj�|��\}}tj�	||�|��}|�d|�|
�r|
|dd�<|�r.|�|�tj�tj�|��}|�|�z6t�d|jd�	|��|�|jg|�|�|�Wn,tk
�r�}zt|��W5d}~XYnXnt�d	|�dS)
Nz5I don't know what to do with 'runtime_library_dirs': cSsg|]}d|�qS)z/EXPORT:r)r2ZsymrrrZ
<listcomp>�sz%MSVCCompiler.link.<locals>.<listcomp>rzrz/IMPLIB:r{r|r})rEr^r~Z
_fix_lib_argsZwarnZstrrrrrr�r[rtrfrgrrXrZr=ZmkpathrrrRrs�_copy_vcruntimerr)rFZtarget_descrwr�rjZ	librariesZlibrary_dirsZruntime_library_dirsZexport_symbolsrrurvZ
build_tempr�Z
fixed_argsZlib_optsr]Zexport_optsZld_argsZdll_nameZdll_extZimplib_filerxrrr�link�sb�
��
��

��

zMSVCCompiler.linkcCs\|j}|rtj�|�sdStj�|���tkr2dSt�d|�t	�
||�}t�|tj
�dS)NzCopying "%s")rUrrr*rgr1�
_BUNDLED_DLLSrr�shutilZcopyZchmod�statZS_IWRITE)rFrjr-rrrr�szMSVCCompiler._copy_vcruntimec	s8t�d�}z|jtjd<t��|�W�S|tjd<XdSr:)rr6rrPZsuperrs)rFr8Zold_path�Z	__class__rrrs)s

zMSVCCompiler.spawncCsd|S)Nz	/LIBPATH:r�rFr\rrr�library_dir_option5�zMSVCCompiler.library_dir_optioncCstd��dS)Nz:don't know how to set runtime library search path for MSVC)rr�rrr�runtime_library_dir_option8s�z'MSVCCompiler.runtime_library_dir_optioncCs
|�|�S�N)r)rFrHrrr�library_option<r�zMSVCCompiler.library_optioncCs\|r|d|g}n|g}|D]:}|D]0}tj�||�|��}tj�|�r$|Sq$qdS)NZ_d)rrrrr*)rFZdirsrHrZ	try_namesr\ZnameZlibfilerrr�find_library_file?szMSVCCompiler.find_library_file)rrrr�)rrG)NNNrNNN)NrN)
NNNNNrNNNN)r)Z__name__Z
__module__Z__qualname__Z
compiler_typeZexecutablesrqrrrnrormrer`Zstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ
exe_extensionrCr^rpryr�r�r�rsr�r�r�r�Z
__classcell__rrr�rrA�sf
��

T�
"�
]�
�
FrAr�)rr�r�rrZdistutils.errorsrrrrrZdistutils.ccompilerrrZ	distutilsrZdistutils.utilr	Z	itertoolsr
rr r'r/r9r@rOZ	frozensetr�rArrrrZ<module>s4#�' 
�