add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
3

�
�^Ec@s�dZddlZddlmZddlmZddlTdddd	gZejj	d
�ddd
gZ
ejj	d�dddgZdd�Zd+dd�Z
d,dd�Zd-dd�Zd.dd�Zd/dd�Zd0dd�Zd1d d!�Zd2d"d#�Zd3d$d%�Zd4d&d�Zd5d'd�Zd(d)�Zed*k�r�e�dS)6z
dyld emulation
iN)�framework_info)�
dylib_info)Z*�	dyld_find�framework_findrrz~/Library/Frameworksz/Library/Frameworksz/Network/Library/Frameworksz/System/Library/Frameworksz~/libz/usr/local/libz/libz/usr/libcCs.|dkrtj}|j|�}|dkr$gS|jd�S)Nz:)�os�environ�getZsplit)�envZvarZrval�r�,/usr/lib64/python3.6/ctypes/macholib/dyld.py�dyld_envs
r
cCs|dkrtj}|jd�S)NZDYLD_IMAGE_SUFFIX)rrr�rrrr	�dyld_image_suffix'srcC�
t|d�S)NZDYLD_FRAMEWORK_PATH�r
rrrr	�dyld_framework_path,�rcCr
)NZDYLD_LIBRARY_PATHrrrrr	�dyld_library_path/rrcCr
)NZDYLD_FALLBACK_FRAMEWORK_PATHrrrrr	�dyld_fallback_framework_path2rrcCr
)NZDYLD_FALLBACK_LIBRARY_PATHrrrrr	�dyld_fallback_library_path5rrcCs(t|�}|dkr|S||fdd�}|�S)z>For a potential path iterator, add DYLD_IMAGE_SUFFIX semanticsNcssJxD|D]<}|jd�r2|dtd��|dVn
||V|VqWdS)Nz.dylib)Zendswith�len)�iterator�suffix�pathrrr	�_inject=s



z)dyld_image_suffix_search.<locals>._inject)r)rrrrrrr	�dyld_image_suffix_search8s
rccsdt|�}|dk	r6x$t|�D]}tjj||d�VqWx(t|�D]}tjj|tjj|��Vq@WdS�N�name)rrrr�joinr�basename)rr�	frameworkrrrr	�dyld_override_searchFsrccs2|jd�r.|dk	r.tjj||td�d��VdS)Nz@executable_path/)Z
startswithrrrr)r�executable_pathrrr	�dyld_executable_path_searchWsr!ccs�|Vt|�}|dk	r@t|�}x |D]}tjj||d�Vq$Wt|�}x$|D]}tjj|tjj|��VqNW|dk	r�|r�x tD]}tjj||d�Vq�W|s�x$tD]}tjj|tjj|��Vq�WdSr)	rrrrrrr�DEFAULT_FRAMEWORK_FALLBACK�DEFAULT_LIBRARY_FALLBACK)rrrZfallback_framework_pathrZfallback_library_pathrrr	�dyld_default_search^s



r$cCsPx<ttt||�t||�t||��|�D]}tjj|�r&|Sq&Wtd|f��dS)z:
    Find a library or framework using dyld semantics
    zdylib %s could not be foundN)	rZchainrr!r$rrZisfile�
ValueError)rr rrrrr	rts

cCs�d}yt|||d�Stk
r8}z
|}WYdd}~XnX|jd�}|dkr\t|�}|d7}tjj|tjj|d|���}yt|||d�Stk
r�|�YnXdS)z�
    Find a framework using dyld semantics in a very loose manner.

    Will take input such as:
        Python
        Python.framework
        Python.framework/Versions/Current
    N)r rz
.frameworkii����)rr%Zrfindrrrrr)Zfnr rZerrorZeZ
fmwk_indexrrr	r�s	
cCsi}dS�Nrrrrr	�test_dyld_find�sr'Z__main__r&r&r&r&r&r&r&r&r&�NNr()Z__doc__rZctypes.macholib.frameworkrZctypes.macholib.dylibrZ	itertoolsZ__all__rZ
expanduserr"r#r
rrrrrrrr!r$rrr'Z__name__rrrr	Z<module>s: