add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
B

��^x_c
@sdZddlZddlZddlmZmZdddddd	d
ddd
dgZddddddddd�ddddddddd�ddddddddd�d d d!d!d"d#d$d%�d&d&d'd(d)d*d$d%�d+d+d,d,d-d*d$d%�d.�Zd%Zej	�
�dZd/ejdd0�Z
d1ejdd0�Zej�ej�Zej�ej�Zej�ej�Zej�ej�ZdadZd2d3�Zej�rPej�eej��Znee���Zej d4k�r�e�!��"d5��r�eej�#eee��Zd6ej$k�r�eej$d6�Zd7d8�Z%e&ed9d�Z'ej d4k�r�d:d;�Z(e(e�Ze(e'�Z'did=d>�Z)e)d?�Z*e*�rx&d@D]Z+dAee+dB<dCee+dD<�q�WdEdF�Z,dGdH�Z-dIdJ�Z.dKdL�Z/dMdN�Z0djdOdP�Z1dQd�Z2dRdS�Z3dTdU�Z4dVdW�Z5dXdY�Z6dkdZd�Z7d[d�Z8d\d
�Z9d]d	�Z:e/�dd?fd^d
�Z;e/�dd?fd_d�Z<d`d�Z=dad�Z>dbd�Z?dcd�Z@ddde�ZAdfdg�ZBeCdhk�r�eB�dS)lz-Access to Python's configuration information.�N)�pardir�realpath�get_config_h_filename�get_config_var�get_config_vars�get_makefile_filename�get_path�get_path_names�	get_paths�get_platform�get_python_version�get_scheme_names�parse_config_hz/{installed_base}/lib64/python{py_version_short}z){platbase}/lib64/python{py_version_short}z1{base}/lib/python{py_version_short}/site-packagesz7{platbase}/lib64/python{py_version_short}/site-packagesz;{installed_base}/include/python{py_version_short}{abiflags}z?{installed_platbase}/include/python{py_version_short}{abiflags}z
{base}/binz{base})�stdlib�
platstdlib�purelib�platlib�include�platinclude�scripts�dataz{installed_base}/lib/pythonz{base}/lib/pythonz{installed_base}/include/pythonz{installed_base}/Libz
{base}/Libz{base}/Lib/site-packagesz{installed_base}/Includez{base}/Scriptsz#{userbase}/Python{py_version_nodot}z1{userbase}/Python{py_version_nodot}/site-packagesz+{userbase}/Python{py_version_nodot}/Includez+{userbase}/Python{py_version_nodot}/Scriptsz
{userbase})rrrrrrrz){userbase}/lib64/python{py_version_short}z5{userbase}/lib/python{py_version_short}/site-packagesz7{userbase}/lib64/python{py_version_short}/site-packagesz+{userbase}/include/python{py_version_short}z{userbase}/binz{userbase}/lib/pythonz#{userbase}/lib/python/site-packagesz{userbase}/include)�posix_prefix�
posix_home�ntZnt_userZ
posix_userZosx_framework_user�%d.%d�z%d%dcCs"yt|�Stk
r|SXdS�N)r�OSError)�path�r�!/usr/lib64/python3.7/sysconfig.py�_safe_realpathdsr r)z\pcbuild\win32z\pcbuild\amd64Z_PYTHON_PROJECT_BASEcCs.x(dD] }tj�tj�|d|��rdSqWdS)N)z
Setup.distzSetup.localZModulesTF)�osrZisfile�join)�dZfnrrr�_is_python_source_dirys
r$Z_homecCs0|r,tj�|��tj�tj�td���r,tS|S)NZPCbuild)r!rZnormcase�
startswithr"�_PREFIX)r#rrr�_fix_pcbuild�sr'FcCs|rtrtt�Stt�Sr)�	_sys_homer$�
_PROJECT_BASE)Z
check_homerrr�is_python_build�sr*T)rrz{srcdir}/Includerz{projectbase}/.rc
Csfy|jf|�Stk
r`y|jftj�Stk
rZ}ztd|�d�Wdd}~XYnXYnXdS)Nz{%s})�formatZKeyErrorr!�environ�AttributeError)ZsZ
local_varsZvarrrr�_subst_vars�sr.cCs4|��}x&|��D]\}}||kr$q|||<qWdSr)�keys�items)Ztarget_dictZ
other_dictZtarget_keys�key�valuerrr�_extend_dict�s
r3cCsfi}|dkri}t|t��xDt|��D]4\}}tjdkrHtj�|�}tj�t	||��||<q*W|S)N)�posixr)
r3r�_INSTALL_SCHEMESr0r!�namer�
expanduser�normpathr.)�scheme�varsZresr1r2rrr�_expand_vars�s
r;cCstjdkrdStjS)Nr4r)r!r6rrrr�_get_default_scheme�s
r<cCsztj�dd�}|r|Sdd�}tjdkrBtj�d�p6d}||d�Stjdkrptjrp|dd	tjd
tjdd��S|dd�S)
NZPYTHONUSERBASEcWstj�tjj|��Sr)r!rr7r")�argsrrr�joinuser��z_getuserbase.<locals>.joinuserrZAPPDATAz~ZPython�darwinZLibraryrrz.local)r!r,�getr6�sys�platformZ
_framework�version_info)Zenv_baser>�baserrr�_getuserbase�s


rFc	Cspddl}|�d�}|�d�}|�d�}|dkr2i}i}i}t|dd��}|��}	WdQRXx�|	D]�}
|
�d�s`|
��d	kr|q`|�|
�}|r`|�d
d�\}}
|
��}
|
�dd	�}d
|kr�|
||<q`yt	|
�}
Wn$t
k
r�|
�dd
�||<Yq`X|
||<q`Wt|���}d}�x t
|�dk�r0�xt|�D�]�}||}|�|�}|�|�}|�rv|�rv|��|��k�rp|n|}n|�r�|n|}|dk	�r|�d
�}d}||k�r�t||�}n�||k�r�d}nx|tjk�r�tj|}n`||k�r0|�d��r
|dd�|k�r
d	}n$d||k�rd}nt|d|�}nd	||<}|�r&||��d�}|d|���}|��|k�rx||7}||7}d
|k�r�|||<n~yt	|�}Wn"t
k
�r�|��||<Yn
X|||<|�|�|�d��r&|dd�|k�r&|dd�}||k�r&|||<n|||<|�|��q,W�qWx.|��D]"\}}
t|
t��r<|
��||<�q<W|�|�|S)z�Parse a Makefile-style file.

    A dictionary containing name/value pairs is returned.  If an
    optional dictionary is passed in as the second argument, it is
    used instead of a new dictionary.
    rNz"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)z\$\(([A-Za-z][A-Za-z0-9_]*)\)z\${([A-Za-z][A-Za-z0-9_]*)}Zsurrogateescape)Zerrorsz#��rz$$z$)ZCFLAGSZLDFLAGSZCPPFLAGSTFZPY_�)�re�compile�openZ	readlinesr%Zstrip�match�group�replace�int�
ValueErrorZlistr/Zlen�tupleZsearchZstartZstrr!r,ZendZremover0Z
isinstance�update)Zfilenamer:rJZ_variable_rxZ_findvar1_rxZ_findvar2_rxZdoneZnotdone�fZlines�line�m�n�vZtmpvZ	variablesZrenamed_variablesr6r2Zm1Zm2ZfoundZitemZafterZkrrr�_parse_makefile�s�	


















rYcCsdtrtj�tptd�Sttd�r0dttj	f}nd}ttj
d�rP|dtj
j7}tj�td�|d�S)z Return the path of the Makefile.ZMakefile�abiflagszconfig-%s%sZconfig�
_multiarchz-%sr)
�
_PYTHON_BUILDr!rr"r(r)�hasattrrB�_PY_VERSION_SHORTrZ�implementationr[r)Zconfig_dir_namerrrrPs
c
Cs(tj�ddjtjtjttjdd�d��S)NZ_PYTHON_SYSCONFIGDATA_NAMEz+_sysconfigdata_{abi}_{platform}_{multiarch}r[rG)ZabirCZ	multiarch)	r!r,rAr+rBrZrC�getattrr_rrrr�_get_sysconfigdata_name]s
rac
Cs�ddl}i}t�}yt||�WnJtk
rj}z,d|}t|d�rR|d|j}t|��Wdd}~XYnXt�}y"t|��}t||�WdQRXWnJtk
r�}z,d|}t|d�r�|d|j}t|��Wdd}~XYnXt	r�|d|d<t
�}dtjk�r$ddl
}|�|�}	||	_|	tj|<d	t�tf}
ttd
��rF|
d7}
tj|
dd
�tj�|
|d�}t|ddd��(}|�d�|�d�|j||d�WdQRXtdddd��}|�|
�WdQRXdS)z;Generate the Python module containing build-time variables.rNz.invalid Python installation: unable to open %s�strerrorz (%s)ZLDSHAREDZ	BLDSHAREDr@zbuild/lib.%s-%sZgettotalrefcountz-pydebugT)Zexist_okz.pyZwZutf8)ZencodingzB# system configuration generated and used by the sysconfig module
zbuild_time_vars = )Zstreamzpybuilddir.txtZascii)�pprintrrYrr]rbrrLr
r\rarBrC�typesZ
ModuleType�build_time_varsZmodulesr
r^r!Zmakedirsrr"Zwrite)rcr:ZmakefileZeZmsgZconfig_hrTr6rdZmoduleZ
pybuilddirZdestfilerrr�_generate_posix_varsfsL







rfcCs0t�}t|t�t�dgd�}|j}|�|�dS)z7Initialize the module as appropriate for POSIX systems.rerN)raZ
__import__ZglobalsZlocalsrerS)r:r6Z_temprerrr�_init_posix�srgcCsVtd�|d<td�|d<td�|d<d|d<d	|d
<t|d<tj�ttj��|d<d
S)z+Initialize the module as appropriate for NTrZLIBDESTrZ
BINLIBDESTrZ	INCLUDEPYz.pyd�
EXT_SUFFIXz.exeZEXEZVERSIONZBINDIRN)r�_PY_VERSION_SHORT_NO_DOTr!r�dirnamer rB�
executable)r:rrr�_init_non_posix�srlc	Cs�|dkri}ddl}|�d�}|�d�}xx|��}|s8P|�|�}|r�|�dd�\}}yt|�}Wntk
rvYnX|||<q*|�|�}|r*d||�d�<q*W|S)z�Parse a config.h-style file.

    A dictionary containing name/value pairs is returned.  If an
    optional dictionary is passed in as the second argument, it is
    used instead of a new dictionary.
    Nrz"#define ([A-Z][A-Za-z0-9_]+) (.*)
z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/
rHr)rJrKZreadlinerMrNrPrQ)	Zfpr:rJZ	define_rxZundef_rxrUrVrWrXrrrr
�s*




cCsBtr,tjdkr"tj�tptd�}q4tp(t}ntd�}tj�|d�S)zReturn the path of pyconfig.h.rZPCrz
pyconfig-64.h)r\r!r6rr"r(r)r)Zinc_dirrrrr�s

cCsttt��S)z,Return a tuple containing the schemes names.)rR�sortedr5rrrrr��cC�tS)z*Return a tuple containing the paths names.)�_SCHEME_KEYSrrrrr�rncCs|rt||�St|SdS)z�Return a mapping containing an install scheme.

    ``scheme`` is the install scheme name. If not provided, it will
    return the default scheme for the current platform.
    N)r;r5)r9r:�expandrrrr	�s
cCst|||�|S)z[Return a path corresponding to the scheme.

    ``scheme`` is the install scheme name.
    )r	)r6r9r:rqrrrr�scGs|tdk�rFiattd<ttd<ttd<ttd<ttd<ttd<ttd<ttd	<ttd
<ttd<yt	j
td<Wntk
r�d
td<YnXtj
dkr�tt�tj
dkr�tt�t�d�}|dk	r�|td<t�td<t�dt�}tj
dk�rt�rtj�t��}tj�||�}ntj�t��}t|�td<t	jdk�rFddl}|�t�|�rtg}x|D]}|�t�|���qVW|StSdS)anWith no arguments, return a dictionary of all configuration
    variables relevant for the current platform.

    On Unix, this means every variable defined in Python's installed Makefile;
    On Windows it's a much smaller set.

    With arguments, return a list of values that result from looking up
    each argument in the configuration variable dictionary.
    N�prefix�exec_prefixZ
py_versionZpy_version_shortZpy_version_nodotZinstalled_baserEZinstalled_platbaseZplatbaseZprojectbaserZrGrr4rh�SOZuserbase�srcdirr@r)�_CONFIG_VARSr&�_EXEC_PREFIX�_PY_VERSIONr^ri�_BASE_PREFIX�_BASE_EXEC_PREFIXr)rBrZr-r!r6rlrgrArFr\rrjrr"r rC�_osx_supportZcustomize_config_varsZappend)r=rtrurEr{Zvalsr6rrrrsP






cCs*|dkrddl}|�dtd�t��|�S)z�Return the value of a single variable using the dictionary returned by
    'get_config_vars()'.

    Equivalent to get_config_vars().get(name)
    rtrNz SO is deprecated, use EXT_SUFFIXr)�warningsZwarnZDeprecationWarningrrA)r6r|rrrrTsc
Cs�tjdkr"dtj��krdStjStjdks6ttd�s<tjSdtjkrPtjdSt��\}}}}}|���	dd�}|�	d	d
�}|�	dd�}|dd
�dkr�d||fS|dd
�dk�r|ddk�r�d}dt
|d�d|dd�f}ddd�}|d|tj7}n�|dd�dk�r(d|||fS|dd�dk�rjd}ddl}|�
d�}|�|�}|�r�|��}n2|dd�d k�r�ddl}	|	�t�|||�\}}}d!|||fS)"a�Return a string that identifies the current platform.

    This is used mainly to distinguish platform-specific build directories and
    platform-specific built distributions.  Typically includes the OS name and
    version and the architecture (as supplied by 'os.uname()'), although the
    exact information included depends on the OS; on Linux, the kernel version
    isn't particularly important.

    Examples of returned values:
       linux-i586
       linux-alpha (?)
       solaris-2.6-sun4u

    Windows will return one of:
       win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc)
       win32 (all others - specifically, sys.platform is returned)

    For other non-POSIX platforms, currently just returns 'sys.platform'.

    rZamd64z	win-amd64r4�unameZ_PYTHON_HOST_PLATFORMz/rGz Z_z-NiZlinuxz%s-%sZsunosrZ5Zsolarisz%d.%srIrZ32bitZ64bit)i���l����z.%sZaixz%s-%s.%siZcygwinz[\d.]+r@z%s-%s-%s)r!r6rB�version�lowerrCr]r,r}rOrPZmaxsizerJrKrMrNr{Zget_platform_osxr)
ZosnameZhostZreleaser~ZmachineZbitnessrJZrel_rerVr{rrrr
`sF


 



cCror)r^rrrrr�r?cCsJxDtt|����D]0\}\}}|dkr2td|�td||f�qWdS)Nrz%s: z
	%s = "%s")Z	enumeratermr0�print)ZtitlerZindexr1r2rrr�_print_dict�sr�cCsfdtjkrt�dStdt��tdt��tdt��t�tdt��t�tdt	��dS)z*Display all information sysconfig detains.z--generate-posix-varsNzPlatform: "%s"zPython version: "%s"z!Current installation scheme: "%s"ZPathsZ	Variables)
rBZargvrfr�r
rr<r�r	rrrrr�_main�s
r�Z__main__)Frr)DZ__doc__r!rBZos.pathrrZ__all__r5rpr~ZsplitrxrDr^rirr8rrr&Zbase_prefixryrsrwZbase_exec_prefixrzrvZ
_USER_BASEr rkrjr)Zgetcwdr6rZendswithr"r,r$r`r(r'r*r\r9r.r3r;r<rFrYrrarfrgrlr
rrrr	rrrr
rr�r�Z__name__rrrrZ<module>s�

	
	

	?
 ML