a DOg@sdZddlZddlmZddlmZddlTzddlmZWne yVddZYn0gd Z ej d d d d gZ ej ddddgZddZd-ddZd.ddZd/ddZd0ddZd1ddZd2ddZd3d d!Zd4d"d#Zd5d$d%Zd6d&d'Zd7d(d)Zd*d+Zed,kredS)8z dyld emulation N)framework_info) dylib_info)*) _dyld_shared_cache_contains_pathcGstdS)N)NotImplementedError)argsr,/usr/lib64/python3.9/ctypes/macholib/dyld.pyr sr) dyld_findframework_findrrz~/Library/Frameworksz/Library/Frameworksz/Network/Library/Frameworksz/System/Library/Frameworksz~/libz/usr/local/libz/libz/usr/libcCs.|durtj}||}|dur$gS|dS)N:)osenvirongetsplit)envvarZrvalrrr dyld_env$s  rcCs|durtj}|dS)NZDYLD_IMAGE_SUFFIX)r rrrrrr dyld_image_suffix,srcCs t|dS)NZDYLD_FRAMEWORK_PATHrrrrr dyld_framework_path1srcCs t|dS)NZDYLD_LIBRARY_PATHrrrrr dyld_library_path4srcCs t|dS)NZDYLD_FALLBACK_FRAMEWORK_PATHrrrrr dyld_fallback_framework_path7srcCs t|dS)NZDYLD_FALLBACK_LIBRARY_PATHrrrrr dyld_fallback_library_path:srcCs(t|}|dur|S||fdd}|S)z>For a potential path iterator, add DYLD_IMAGE_SUFFIX semanticsNcssF|D]<}|dr0|dtd |dVn ||V|VqdS)Nz.dylib)endswithlen)iteratorsuffixpathrrr _injectBs   z)dyld_image_suffix_search.._inject)r)rrrr rrr dyld_image_suffix_search=s r!ccs\t|}|dur2t|D]}tj||dVqt|D]}tj|tj|Vq:dSNname)rrr rjoinrbasename)r#r frameworkrrrr dyld_override_searchKs   r'ccs2|dr.|dur.tj||tddVdS)Nz@executable_path/) startswithr rr$r)r#executable_pathrrr dyld_executable_path_search\sr*ccs|Vt|}|dursD