add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
�

��Vc76cs��ddlZddlZddlZddlZejdkr
d�Zd�Zd�Zn�ejdkrejdkr
ddl	m
Zd	�Zn�ej�d
��rddl
mZnhejdkr]ddlZddlZd�Zd
�Zejdkrd�Znd�Zej�d��rd�Zd�Znejdkrd�Zdd�Zn	d�Zd�Zd�Zd�Zedkre��dSdS)�N�ntcsx�	d}tj�|��}|dkrdS|t|��z}tj|d��dd��\}}t|dd���dz
}|dkr|dz
}t|dd	���d
z}|dkrd}|dkr||zSdS)NzMSC v.������z �i�����
iig$@r)�sys�versionZfindZlen�split�int)ZprefixZiZsZrestZmajorVersionZminorVersion�      �$/usr/lib64/python3.11/ctypes/util.py�_get_build_versionr	s���	����K���V�$�$����7�	��1�
��F���O���+�a�b�b�/�'�'��Q�/�/���4��1�S�b�S�6�{�{�Q����2��	��A��L��1�Q�q�S�6�{�{�T�)���1��	��L��1��	/��,�.�.��t�cs��	t��}|�dS|dkrd}n|dkr	d|dzz}ndSddl}d|jjvr|dz
}|d	zS)
Nr�msvcrtrzmsvcr%di
rz_d.pyd�d�.dll)rZimportlib.machineryZ	machineryZEXTENSION_SUFFIXES)rZclibnameZ	importlib�   r�find_msvcrtr"s���3�$�&�&���	��4��a�<�	��H�H�
��]�	� �G�b�L�1�H�H��4�	#�"�"�"��y�*�=�=�	���O�H����r
cs��|dvrt��Stjd�tj��D]�}tj�||��}tj�|��r|cS|����	d��r�m|dz}tj�|��r|cS��dS)N)�c�mZPATHr)
r�os�environrZpathsep�path�joinZisfileZlowerZendswith)�nameZ	directoryZfnamerr�find_libraryr7s����:��	!��=�=� ���F�+�1�1�"�*�=�=�	�	�I��G�L�L��D�1�1�E��w�~�~�e�$�$�
������{�{�}�}�%�%�f�-�-�
���F�N�E��w�~�~�e�$�$�
�����
��tr
�posix�darwin)�	dyld_findcsr�d|zd|z|�d|��g}|D]#}	t|��cS#t$rY� wxYwdS)Nzlib%s.dylibz%s.dylibz.framework/)�
_dyld_find�
ValueError)rZpossible�  rrrHsv��!�D�(���%�)-���t�t�4�6���	�	�D�
�!�$�'�'�'�'�'���
�
�
���
�����ts�'�
4�4�aix)rcs��	d}t|d��5}|�d��|kcddd��S#1swxYwYdS)NsELFZbr�)Zopen�read)ZfilenameZ
elf_headerZthefilerr�_is_elfr$`s���6��
�
�(�D�
!�
!�	1�W��<�<��?�?�j�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s
�:�>�>cs��tjdtj|��z��}t	jd��}|st	jd��}|sdSt
j��}	|dd|jd|zg}ttj
��}d|d<d|d	<	tj|tj
tj|�
��}n7#t$r*Y	|���dS#t"$rYdSwxYwwxYw|5|j���}ddd��n#1swxYwY	|���n:#t"$rYn.wxYw#	|���w#t"$rYwwxYwxYwtj||��}|sdS|D]'}	t+|	��s�tj|	��cSdS)N�[^\(\)\s]*lib%s\.[^\(\)\s]*ZgccZccz-Wl,-t�-oz-l�C�LC_ALL�LANG��stdout�stderr�env)r�fsencode�re�escape�shutil�which�tempfileZNamedTemporaryFiler�dictr�
subprocess�Popen�PIPEZSTDOUT�OSErrorZcloseZFileNotFoundErrorr+r#�findallr$�fsdecode)
r�exprZ
c_compilerZtemp�argsr-�procZtrace�res�files
          r�_findLib_gccr@fsf��
�{�9�B�I�d�O�O�K�L�L���\�%�(�(�
��	,���d�+�+�J��	��4��*�,�,��	���$��	�4�$�;�G�D��r�z�"�"�C��C��M��C��K�
�!�'��/9��/9�/@�,/�1�1�1�����
�
�
��
��
�
�������$�
�
�
����
����
�����
+�
+���(�(�*�*��
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+�
��
�
������$�
�
�
���
�����
��
�
������$�
�
�
���
��������j��u�%�%���	��4��	%�	%�D��4�=�=�
���;�t�$�$�$�$�$�
	%�	%s��,2E�,C�E�
D�E�C.�.
C<�;C<�?D�E�D+�E�+D/�/E�2D/�3E�7E�
E�E�F�E3�2F�3
F�=F�?F�FZsunos5csr�|sdS	tjdd|ftjtj���}n#t$rYdSwxYw|5|j���}ddd��n#1swxYwYtjd|��}|sdStj
|�d����S)Nz/usr/ccs/bin/dumpz-Lpv�r+r,s\[.*\]\sSONAME\s+([^\s]+)r)r5r6r7�DEVNULLr8r+r#r/�searchrr:�group)�fr=�datar>s    r�_get_sonamerG�s���
��t�
�!�'�)<�f�a�(H�/9��/9�/A�C�C�C�����
�
�
��t�t�
�����
*�
*��{�'�'�)�)��
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*��)�9�4�@�@�C��
��t��;�s�y�y��|�|�,�,�,s!�.5�
A�A�A.�.A2�5A2cs��|sdStjd��}|sdS	tj|ddd|ftjtj���}n#t$rYdSwxYw|5|j���}ddd��n#1swxYwYtj
d|��}|sdStj|�
d����S)N�objdump�-pz-jz.dynamicrAs\sSONAME\s+([^\s]+)r)r1r2r5r6r7rBr8r+r#r/rCrr:rD)rErHr=Zdumpr>s     rrGrG�s/���
��t��l�9�-�-�G��
��t�
�!�'��$��j�!�(L�/9��/9�/A�C�C�C�����
�
�
��t�t�
�����
*�
*��{�'�'�)�)��
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*��)�3�T�:�:�C��
��t��;�s�y�y��|�|�,�,�,s#�0A�
A�A�"B�B�B)ZfreebsdZopenbsdZ	dragonflycs��|�d��}g}	|r7|�dt|�������|�7n#t$rYnwxYw|pt
jgS)Ns.r)rZinsertr	Zpoprr�maxsize)ZlibnameZpartsZnumsrr�_num_versionrK�s����M�M�$�'�'�E��D�
��5��K�K��3�u�y�y�{�{�#3�#3�4�4�4��5����
�
�
���
�����(�C�K�=�(s�9A�
A �A cs�tj|��}d|�d|�d�}tj|��}	t	jdtjtj���}|5|j�	��}ddd��n#1swxYwYn#t$rd}YnwxYwtj||��}|stt|����S|�t���tj|d��S)	Nz:-lz\.\S+ => \S*/(libz\.\S+))�/sbin/ldconfigz-rrAr
)Zkeyr)r/r0rr.r5r6r7rBr+r#r8r9rGr@ZsortrKr:)rZenamer;r=rFr>r
rrr�sO���I�d�O�O�E�E�8=���u�u�u�E�D��;�t�$�$�D�
.�!�'�(@�/9��/9�/A�C�C�C���.�.��;�+�+�-�-�D�.�.�.�.�.�.�.�.�.�.�.����.�.�.�.����
�
�
�����
�����*�T�4�(�(�C��
7�"�<��#5�#5�6�6�6��H�H��H�&�&�&��;�s�2�w�'�'�'s#�+B� B�B
�
B
�B!� B!cs��tj�d��sdSttj��}d|d<|rd}nd}d}	tj|t
jt
j|���}n#t$rYdSwxYw|5|j
D]W}|���}|�d��r,tj
|�����d}�X	ddd��n#1swxYwY|sdS|�d	��D]H}tj�|d
|z��}tj�|��r|cS�IdS)N�
/usr/bin/crler'r()rM�-64)rMr*sDefault Library Path (ELF):r"�:zlib%s.so)rrZexistsr4rr5r6r7rBr8r+Zstrip�
startswithr:rr)	r�is64r-r<Zpathsr=ZlineZdirZlibfiles	         r�
_findLib_crlerR�s����7�>�>�/�2�2�
��t��r�z�"�"�C��C��M��
*�/���)���E�
�!�'��/9��/9�/A�,/�1�1�1�����
�
�
��t�t�
�����
=�
=� �K�=�=�D��:�:�<�<�D����'E�F�F�=� "��D� 1� 1� 7� 7� 9� 9�!� <���=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=����
=�
=�
=�
=��
��t��{�{�3�'�'�
#�
#���'�,�,�s�J��,=�>�>���7�>�>�'�*�*�#�"�N�N�N�#��4s%�
,A7�7
B�B�
A C7�7C;�>C;FcsZ�tt||��pt|����S�N)rGrRr@)rrQr rrr	s'���}�T�4�8�8�N�L��<N�<N�O�O�Or
c	s��ddl}|�d��dkrtj��jdz}ntj��jdz}dddddd	�}|�|d
��}d}tj|tj|��|fz��}	tj
dd
gtjtjtjddd����5}tj
||j�����}|r3tj|�d����cddd��S	ddd��dS#1swxYwYdS#t$$rYdSwxYw)NrZlr"z-32rNzlibc6,x86-64zlibc6,64bitzlibc6,IA-64)z	x86_64-64zppc64-64z
sparc64-64zs390x-64zia64-64Zlibc6z\s+(lib%s\.[^\s]+)\s+\(%srLrIr')r(r))Zstdinr,r+r-r)�structZcalcsizerZuname�machine�getr.r/r0r5r6rBr7rCr+r#r:rDr8)rrTrUZmach_mapZabi_typeZregex�pr>s        r�_findSoname_ldconfigrXs����M�M�M����s�#�#�q�(�
5��(�*�*�,�u�4����(�*�*�,�u�4��+�)�+�)�(���H� �|�|�G�W�5�5�H�1�E��K����4���(�(C� C�D�D�E�

��%�'7��&>�,6�,>�-7�-?�-7�_�58�#�*F�*F�	H�H�H�9�LM��)�E�1�8�=�=�?�?�;�;�C��9�!�{�3�9�9�Q�<�<�8�8�9�9�9�9�9�9�9�9�9�
9�9�9�9�9�9�9�9�9�9�9�9����9�9�9�9�9�9���
�
�
����
���s=�!<E�AE
�2E�E�
E�E�E�E�
E(�'E(csv�dtj|��z}ddg}tj�d��}|r/|�d��D]}|�d|g���|�dtjd|zg��d}	tj	|tj
tj
d	�
��}|���\}}tj|tj
|����}	|	D]'}
t|
��s�tj
|
��cSn#t$rYnwxYw|S)Nr%Zldz-tZLD_LIBRARY_PATHrOz-Lr&z-l%sT)r+r,Zuniversal_newlines)r/r0rrrVrZextendZdevnullr5r6r7Zcommunicater9r:r$Z	Exception)rr;ZcmdZlibpathrZresultrWZoutZ_r>r?s           r�_findLib_ldrY,sM��1�B�I�d�O�O�C�D���,�C��j�n�n�%6�7�7�G��
*� ���s�+�+�*�*�A��J�J��a�y�)�)�)�)��J�J��b�j�&�4�-�8�9�9�9��F�
��$�S���,6�O�8<�>�>�>���������Q��j��r�{�3�'7�'7�8�8���-�-�D�#�4�=�=�!� ��;�t�,�,�,�,�,�
-���
�
�
���
�����Ms�BD)�)
D6�5D6cs��t|��p7tt|����ptt|����SrS)rXrGr@rY)rs rrrGsE��'��-�-�U��|�D�1�1�2�2�U�6A�+�d�BS�BS�6T�6T�
Ur
cs��ddlm}tjdkrRt	|j��t	|�d����t	td����tjdk�r�t	td����t	td����t	td����tj	d	kr�t	|�
d
����t	|�
d����t	|�
d����t	|�
d
����dStj	�d���r�ddlm}tj
dkr�t	d|dtj������t	d|�
d������t	td����t	|�
d����nKt	d|dtj������t	d|�
d������t	dtd������t	d|�
td��������t	dtd������t	d|�
td��������dSt	|�
d����t	|�
d����t	td����dSdS)Nr)�cdllrrrrrZbz2rz
libm.dylibzlibcrypto.dylibzlibSystem.dylibzSystem.framework/Systemr!)�CDLLlz"Using CDLL(name, os.RTLD_MEMBER): z
libc.a(shr.o)zUsing cdll.LoadLibrary(): Zrpmz	librpm.sozlibc.a(shr_64.o)z	crypt	:: Zcryptz
crypto	:: Zcryptozlibm.sozlibcrypt.so)ZctypesrZrrZprintrZloadrr�platformZLoadLibraryrPr[rJZRTLD_MEMBER)rZr[r r�testr]OsB��������	�w�$��&�
�d�k����
�d�i�i��!�!�"�"�"�
�l�8�$�$�%�%�%�	�w�'��)�
�l�3��� � � �
�l�3��� � � �
�l�5�!�!�"�"�"��<�8�#�	)��$�"�"�<�0�0�1�1�1��$�"�"�#4�5�5�6�6�6��$�"�"�#4�5�5�6�6�6��$�"�"�#<�=�=�>�>�>�>�>�
�\�
$�
$�U�
+�
+�	)�#�#�#�#�#�#��{�U�"�
[��b�4�4��QS�Q_�;`�;`�b�b�c�c�c��V�4�3C�3C�O�3T�3T�V�V�W�W�W��l�5�)�)�*�*�*��d�&�&�{�3�3�4�4�4�4��e�4�4�@R�TV�Tb�;c�;c�e�e�f�f�f��Y�4�3C�3C�DV�3W�3W�Y�Y�Z�Z�Z��6�|�G�4�4�6�6�7�7�7��H�t�/�/��W�0E�0E�F�F�H�H�I�I�I��8��X� 6� 6�8�8�9�9�9��J�� 0� 0��h�1G�1G� H� H�J�J�K�K�K�K�K��$�"�"�9�-�-�.�.�.��$�"�"�=�1�1�2�2�2��,�w�'�'�(�(�(�(�(�?)�)r
Z__main__)F)rr1r5rrrrrr\Zctypes.macholib.dyldrrrPZctypes._aixr/r3r$r@rGrKrRrXrYr]Z__name__)r
r�<module>r^sQ��	�	�	�	�
�
�
�
�����
�
�
�
��7�d�?�CU����2���*
�
�
�
��W���DU�C�L�H�4�DU�<�<�<�<�<�<�	�	�	�	�	�\���U�#�#�wU�)�(�(�(�(�(�(��W���nU���������1�1�1�/%�/%�/%�d�|�x��'-�	-�	-�	-�	-�"	-�	-�	-�,�|���B�C�C�IU�		)�		)�		)�	(�	(�	(�	(�*

���	!�gU�"	�"	�"	�H	P�	P�	P�	P�	P�
	�	�	�<	�	�	�6	U�	U�	U�&)�&)�&)�P�z����D�F�F�F�F�F��r