add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
�

��Vcn/csD�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddl	mZddlm
Z
ddl	mZddl	mZddl	mZgd	�Zd
Zejd��ZGd�d
e��Zdd�Zd�Zd�Zd�Ze��ZejZejZejZejZdS)�N�)�
connection)�process)�	reduction)�resource_tracker)�spawn)�util)�ensure_running�get_inherited_fds�connect_to_new_process�set_forkserver_preloadiZqcs8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�
ForkServercs~�d|_d|_d|_d|_t	j��|_dg|_dS)N�__main__)�_forkserver_address�_forkserver_alive_fd�_forkserver_pid�_inherited_fds�	threadingZLock�_lock�_preload_modules��self� �3/usr/lib64/python3.11/multiprocessing/forkserver.py�__init__zForkServer.__init__"sA��#'�� �$(��!�#���"����^�%�%��
�!+������csn�|j5|���ddd��dS#1swxYwYdS�N)r�_stop_unlockedrrr�_stopzForkServer._stop*s���
�Z�	"�	"����!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�	"�	"s�*�.�.cs�|j�dStj|j��d|_tj|jd��d|_tj|j��stj|j��d|_dS)Nr)	r�os�closer�waitpidr�is_abstract_socket_namespacerZunlinkrrrrzForkServer._stop_unlocked/s�����	��F�	���*�+�+�+�$(��!�
�
�4�'��+�+�+�#����0��1I�J�J�	0��I�d�.�/�/�/�#'�� � � rcsn�td�|jD����std���||_dS)z>Set list of module names to try to load in forkserver process.c3sBK�|]}t|��tuV��dSr)ZtypeZstr)�.0Zmod�  rz	<genexpr>z4ForkServer.set_forkserver_preload.<locals>.<genexpr>@s-����E�E��4��9�9��#�E�E�E�E�E�Erz&module_names must be a list of stringsN)ZallrZ	TypeError)rZ
modules_namesr#rrz!ForkServer.set_forkserver_preload>sB���E�E�t�/D�E�E�E�E�E�	F��D�E�E�E� -����rcs�|jS)z�Return list of fds inherited from parent process.

        This returns None if the current process was not started by fork
        server.
        )rrrrr	zForkServer.get_inherited_fdsDs
���"�"rcs��|���t|��dztkrtd���t	jtj��5}|�|j��tj	��\}}tj	��\}}|||j
tj��g}||z
}	tj||��||ftj|��tj|��cddd��S#tj|��tj|���xYw#tj|��tj|��wxYw#1swxYwYdS)a;Request forkserver to create a child process.

        Returns a pair of fds (status_r, data_w).  The calling process can read
        the child process's pid and (eventually) its returncode from status_r.
        The calling process should write to data_w the pickled preparation and
        process data.
        iztoo many fdsN)r�len�MAXFDS_TO_SENDZ
ValueError�socket�AF_UNIXZconnectrr�piperrZgetfdrZsendfdsr)r�fdsZclientZparent_r�child_w�child_rZparent_wZallfdss        rr
z!ForkServer.connect_to_new_processLs���	
�������s�8�8�a�<�>�)�	-��^�,�,�,�
�]�6�>�
*�
*�	"�f��N�N�4�3�4�4�4� "��	�	��H�g� "��	�	��G�X��w��(A�&�,�.�.�0�F��c�M�F�	
"��!�&�&�1�1�1���)����!�!�!����!�!�!�!	"�	"�	"�	"�	"�	"�	"�	"��
����"�"�"����"�"�"���������!�!�!����!�!�!�!����!	"�	"�	"�	"����	"�	"�	"�	"�	"�	"s7�A(E.�D�(E.�+D>�>E�*E+�+E.�.E2�5E2cs���|j5tj��|j�et	j|jtj��\}}|s	ddd��dSt	j|j��d|_	d|_d|_d}|j
r9ddh�tjd��}�fd�|�
��D��}ni}tjtj��5}t!jd��}|�|��t'j|��st	j|d��|���t	j��\}}	|���|g}	||���||j
|fz}tj��}
|
gt'j��z}|d	|gz
}t'j|
||	��}n#t	j|���xYw	t	j|��n#t	j|��wxYw||_	||_||_ddd��n#1swxYwYddd��dS#1swxYwYdS)
z�Make sure that a fork server is running.

        This can be called from any process.  Note that usually a child
        process will just reuse the forkserver started by its parent, so
        ensure_running() will do nothing.
        NzCfrom multiprocessing.forkserver import main; main(%d, %d, %r, **%r)�	main_path�sys_pathZignorecs$��i|]\}}|�v�	||��
S�r.)r"ZxZy�desired_keyss   �r�
<dictcomp>z-ForkServer.ensure_running.<locals>.<dictcomp>�s)���K�K�K���A��l�9J�K��1�K�K�Krr'i�z-c)rrrrrr �WNOHANGrrrrrZget_preparation_data�itemsr&r'rZarbitrary_addressZbindrr!ZchmodZlistenr(�filenoZget_executableZ_args_from_interpreter_flagsZspawnv_passfds)
r�pidZstatusZcmd�data�listenerZaddress�alive_rZalive_wZfds_to_passZexeZargsr/s
            @rrzForkServer.ensure_runningis����Z�1	+�1	+��+�-�-�-��#�

,� �j��)=�r�z�J�J���V����1	+�1	+�1	+�1	+�1	+�1	+�1	+�1	+����2�3�3�3�+/��(�,0��)�'+��$�,�C��$�
� +�Z�8���1�(�;�;��K�K�K�K������K�K�K�������v�~�.�.�
+�(�$�6�y�A�A���
�
�g�&�&�&��8��A�A�-��H�W�e�,�,�,����!�!�!�$&�7�9�9� ���&�#+�?�?�#4�#4�g�">�K��H�O�O�-�-�w��8M� �"�"�C��.�0�0�C��5�4�#D�#F�#F�F�D��T�3�K�'�D��-�c�4��E�E�C�C����H�W�%�%�%������
�H�W�%�%�%�%��B�H�W�%�%�%�%����+2��(�,3��)�'*��$�3
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+�11	+�1	+�1	+�1	+�1	+�1	+�1	+�1	+�1	+�1	+�1	+�1	+����1	+�1	+�1	+�1	+�1	+�1	+si�AI)�BI)�+A=I�)A=G'�&H�'G>�>H�I�H-�-I�I)�I	�I)�I	�I)�)I-�0I-N)
Z__name__Z
__module__Z__qualname__rrrrr	r
rr.rrrr s}������-�-�-�"�"�"�

(�
(�
(�.�.�.�#�#�#�"�"�"�:8+�8+�8+�8+�8+rrc
s�
�|r�d|vr[|�Ydtj��_	tj|��tj��`n#tj��`wxYw|D]"}	t|���#t$rY�wxYwtj��tj
��\}}tj|d��tj|d��d�}tj
|tjtji}	d�|	���D��}
tj|��i}t%jt$j|���5}t)j��5}
|���t._|
�|t(j��|
�|t(j��|
�|t(j��			d�|
���D��}|rn�"||vr*tj|d	��d
ks
Jd���t:�||vr�tj|d��		tjd
tj��\}}n#t@$rYn�wxYw|dkrn{|�!|d��}|�Ktj"|��}	tG||��n#tH$rYnwxYwtj%|��ntMj'd|z����||v�r|�(��d5}tSj*|tVd	z��}tY|��tVkr/t[d�.tY|�������|^}}}|�%��tj/��}|dkr�d	}	|�%��|
�%��||||g}|�0|�1����te||||
��}nM#tf$r@tij5tij6���thj7�8��YnwxYwtj9|��nm#tj9|��wxYw	tG||��n#tH$rYnwxYw|||<tj%|��|D]}tj%|���ddd��n#1swxYwYn-#tt$r }|j;tvj<kr�Yd}~nd}~wwxYw��Y#1swxYwYddd��dS#1swxYwYdS)zRun forkserver.r
NTFcs�dSrr.)Z_unusedrr�sigchld_handlerzmain.<locals>.sigchld_handler�s���rcs@�i|]\}}|tj||����Sr.)�signal)r"�sig�val�   rr0zmain.<locals>.<dictcomp>�s:��8�8�8�"��c����s�C�0�0�8�8�8r)r3cs"�g|]\}}|j��
Sr.)Zfileobj)r"ZkeyZeventsr<rz
<listcomp>zmain.<locals>.<listcomp>�s��O�O�O�M�S�&�C�K�O�O�OrrrzNot at EOF?i�����rz.forkserver: waitpid returned unexpected pid %dzToo many ({0:n}) fds to send)=rZcurrent_processZ_inheritingrZimport_main_pathZ
__import__ZImportErrorrZ_close_stdinrr(Zset_blockingr9ZSIGCHLDZSIGINTZSIG_IGNr2�
set_wakeup_fdr&r'�	selectorsZDefaultSelectorZgetsockname�_forkserverrZregisterZ
EVENT_READZselect�readZ
SystemExitr r1ZChildProcessErrorZpopZwaitstatus_to_exitcode�write_signedZBrokenPipeErrorr�warningsZwarnZacceptrZrecvfdsr%r$�RuntimeErrorZformatZforkZextendZvalues�
_serve_oneZ	Exception�sysZ
excepthookZexc_infoZstderrZflushZ_exitZOSError�errnoZECONNABORTED)Zlistener_fdr7Zpreloadr,r-ZmodnameZsig_rZsig_wr8�handlersZold_handlersZ	pid_to_fdr6ZselectorZrfdsr4Zstsr*Z
returncode�sr)r+�code�
unused_fds�fdZes                          r�mainrM�s������� �	:�Y�	:�48�G�#�%�%�1�
:��&�y�1�1�1��+�-�-�9�9��G�+�-�-�9�9�9�9�9��	�	�G�
��7�#�#�#�#���
�
�
���
����	������7�9�9�L�E�5��O�E�5�!�!�!��O�E�5�!�!�!�
�
�
�	����
�v�~�	
�H�8�8�&.�n�n�&6�&6�8�8�8�L��������I�	��v�~�k�	:�	:�	:�Y�h�	�	"�	$�	$�Y�(0�*2�*>�*>�*@�*@��'����(�I�$8�9�9�9����'�9�#7�8�8�8����%��!5�6�6�6�Q	�P
��O�O�X�_�_�=N�=N�O�O�O�D�����
�d�?�%��7�7�A�.�.�#�5�D�D�}�D�D�D�$�$��D�=�E��G�E�5�)�)�)�E�"�')�z�"�b�j�'A�'A�H�C����0�"�"�"�!�E�"�����!�8�"�!�"+�-�-��T�":�":��"�
E�)+�)B�3�)G�)G�J�%� ,�W�j� A� A� A� A��#2�%�%�%� $��%�����H�W�-�-�-�-�%�M�+>�@C�+D�E�E�E�+E�0�t�#�&-�!���*�*�1�-�$-��'�/��>�A�3E�F�F���s�8�8�n�4�/�".� >� E� E�$'��H�H�!.�!.�#/�#/�/�25�.���3����	�	�	� �g�i�i���!�8�-�#$�D�/� (��� 0� 0� 0� (��� 0� 0� 0�.5�w��u�-M�
� *� 1� 1�)�2B�2B�2D�2D� E� E� E�'1�'�3�2<�2>�(@�(@����$-�3�3�3� #������ ?� ?� #�
� 0� 0� 2� 2� 2� 2� 2�3����!#������������������%� ,�W�c� :� :� :� :��#2�%�%�%� $��%����.5�I�c�N��H�W�-�-�-�&)�-�-�� "�������I$-�$-�$-�$-�$-�$-�$-�$-�$-�$-�$-����$-�$-�$-�$-���L�
�
�
��7�e�0�0������������
����_Q	�Y�Y�Y�Y����Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y����Y�Y�Y�Y�Y�YsC�A
�
A�'A7�7
B�B�U�)BU�*A+T�"I9�8T�9
J�T�J�6T�=K�
T�
K�T�K�AT�*BT�A'P,�+R�,AQ6	�3R�5Q6	�6R�9T�R$	�$T�(R9�8T�9
S	�T�S	�5T�;T�T�T�T�T�U�
T=�T8�3U�8T=�=U�U	�U�	U	�
U�U�!Ucs`�tjd��|���D]\}}tj||���|D]}tj|���|^t
_tj_	t
_
tj|��}tj
||��}|S)Nr=)r9r>r2rrr@rrZ_resource_trackerZ_fdrZduprZ_main)	r+r)rKrHr:r;rLZparent_sentinelrJs	         rrErE+s���
�������N�N�$�$� � ���S��
�c�3���������
�������%(�"�[�%��'�+�� ��f�W�o�o�O��;�w��0�0�D��Krcs �d}tj}t|��|krNtj||t|��z
��}|std���||z
}t|��|k�Nt�|��dS)Nrzunexpected EOFr)�
SIGNED_STRUCTZsizer$rrAZEOFErrorZunpack)rLr5ZlengthrI�    r�read_signedrPBs����D�
�
�F�

�d�)�)�f�
���G�B���T���*�+�+���	-��+�,�,�,���	��	�d�)�)�f�
��
����%�%�a�(�(rcs��t�|��}|r8tj||��}|dkrt	d���||d�}|�6dSdS)Nrzshould not get here)rNZpackrZwriterD)rLZnZmsgZnbytesrOrrBrBLst��
�
�
�Q�
�
�C�

����"�c�"�"���Q�;�	6��4�5�5�5��&�'�'�l��	�����r)NN) rGrr?r9r&ZstructrFrrCZrrZcontextrrrrZ__all__r%ZStructrNZobjectrrMrErPrBr@rr	r
rr.rr�<module>rQs�������	�	�	�	�����
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
���������������������������������������������%�%�%������
�c�"�"�
�A+�A+�A+�A+�A+��A+�A+�A+�NA�A�A�A�H���.)�)�)�����j�l�l���+���1��$�;��$�;���r