add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
B

�/g^�"c@s�ddlZddlZddlZddlZddlZddlZddlmZmZddl	m
Z
dgZejdkrvddl
Z
Gdd�de�Zn,Gd	d�de�Zd
d�Zdd
�Ze�ee�Gdd�de�ZGdd�de�ZdS)�N�)�	reduction�assert_spawning)�util�
BufferWrapperZwin32c@s,eZdZe��Zdd�Zdd�Zdd�ZdS)�ArenacCsz||_xTtd�D]@}dt��t|j�f}tjd||d�}t��dkrHP|�	�qWt
d��||_||_|j|jf|_
dS)Nidz	pym-%d-%s������ZtagnamerzCannot find name for new mmap)�sizeZrange�os�getpidZnext�_rand�mmap�_winapiZGetLastError�closeZFileExistsError�name�buffer�_state)�selfr	�irZbuf�r�,/usr/lib64/python3.7/multiprocessing/heap.py�__init__"s�Arena.__init__cCst|�|jS�N)rr)rrrr�__getstate__1szArena.__getstate__cCs,|\|_|_|_tjd|j|jd�|_dS)Nrr)r	rrr
r)rZstaterrr�__setstate__5szArena.__setstate__N)	�__name__�
__module__�__qualname__�tempfileZ_RandomNameSequencerrrrrrrrrsrc@s4eZdZejdkrdgZngZd	dd�Zdd�ZdS)
rZlinuxz/dev/shmrcCsx||_||_|dkrbtjdt��|�|�d�\|_}t�|�t�	|tj
|jf�t�|j|�t�|j|j�|_
dS)Nrzpym-%d-)ZprefixZdir)r	�fdrZmkstempr
r�_choose_dirZunlinkr�FinalizerZ	ftruncater
r)rr	r rrrrrDs

rcCs6x,|jD]"}t�|�}|j|j|kr|SqWt��Sr)�_dir_candidatesr
ZstatvfsZf_bavailZf_frsizerZget_temp_dir)rr	ZdZstrrrr!Ps

zArena._choose_dirN)r)rrr�sys�platformr#rr!rrrrr>s


cCs(|jdkrtd��t|jt�|j�ffS)NrzDArena is unpicklable because forking was enabled when it was created)r �
ValueError�
rebuild_arenar	rZDupFd)Zarrr�reduce_arenaYs
r(cCst||���Sr)rZdetach)r	Zdupfdrrrr'_sr'c@sZeZdZdZejfdd�Zedd��Zdd�Z	dd	�Z
d
d�Zdd
�Zdd�Z
dd�ZdS)�HeapicCsJt��|_t��|_||_g|_i|_i|_	i|_
t�|_g|_
g|_dSr)r
r�_lastpid�	threadingZLock�_lock�_size�_lengths�_len_to_seq�_start_to_block�_stop_to_blockZset�_allocated_blocks�_arenas�_pending_free_blocks)rr	rrrrls

z
Heap.__init__cCs|d}|||@S)Nrr)ZnZ	alignmentZmaskrrr�_roundupysz
Heap._roundupc	Cs�t�|j|�}|t|j�krj|�t|j|�tj�}|jd9_t	�
d|�t|�}|j�
|�|d|fS|j|}|j|}|��}|s�|j|=|j|=|\}}}|j||f=|j||f=|S)Niz"allocating a new mmap of length %dr)�bisectZbisect_leftr.Zlenr5�maxr-r
�PAGESIZErZinforr3�appendr/�popr0r1)	rr	r�length�arena�seq�block�start�stoprrr�_mallocs"



zHeap._mallocc	Cs�|\}}}y|j||f}Wntk
r0YnX|�|�\}}y|j||f}Wntk
rfYnX|�|�\}}|||f}||}y|j|�|�Wn.tk
r�|g|j|<t�|j|�YnX||j||f<||j||f<dSr)	r1ZKeyError�_absorbr0r/r9r6Zinsortr.)	rr>r<r?r@Z
prev_blockZ_Z
next_blockr;rrr�_free�s(

z
Heap._freecCs^|\}}}|j||f=|j||f=||}|j|}|�|�|sV|j|=|j�|�||fSr)r0r1r/�remover.)rr>r<r?r@r;r=rrrrB�s


zHeap._absorbcCsFx@y|j��}Wntk
r&PYnX|j�|�|�|�qWdSr)r4r:Z
IndexErrorr2rDrC�rr>rrr�_free_pending_blocks�szHeap._free_pending_blockscCsrt��|jkr$td�t��|j���|j�d�s>|j�|�n0z"|�	�|j
�|�|�|�Wd|j�
�XdS)Nz$My pid ({0:n}) is not last pid {1:n}F)r
rr*r&�formatr,Zacquirer4r9rFr2rDrCZreleaserErrr�free�s
z	Heap.freec	Cs�|dkrtd�|���tj|kr.td�|���t��|jkrD|��|j	�h|�
�|�t|d�|j
�}|�|�\}}}||}||kr�|�|||f�|||f}|j�|�|SQRXdS)Nr�Size {0:n} out of range�Size {0:n} too larger)r&rGr$�maxsize�
OverflowErrorr
rr*rr,rFr5r7�
_alignmentrArCr2Zadd)rr	r<r?r@Znew_stopr>rrr�malloc�s 

zHeap.mallocN)rrrrMr
r8rZstaticmethodr5rArCrBrFrHrNrrrrr)hs

r)c@s"eZdZe�Zdd�Zdd�ZdS)rcCs^|dkrtd�|���tj|kr.td�|���tj�|�}||f|_t	j
|tjj|fd�dS)NrrIrJ)Zargs)r&rGr$rKrLr�_heaprNrrr"rH)rr	r>rrrrs

zBufferWrapper.__init__cCs&|j\\}}}}t|j�|||�Sr)rZ
memoryviewr)rr<r?r@r	rrr�create_memoryviewszBufferWrapper.create_memoryviewN)rrrr)rOrrPrrrrr�s	)r6r
r
r$rr+ZcontextrrZrZ__all__r%rZobjectrr(r'Zregisterr)rrrrrZ<module>
s$