U :eg@sdZddlZddlmZddlmZddlTdddd gZej d d d d gZ ej ddddgZ ddZ d+ddZ d,ddZd-ddZd.ddZd/ddZd0ddZd1d d!Zd2d"d#Zd3d$d%Zd4d&dZd5d'dZd(d)Zed*kredS)6z dyld emulation N)framework_info) dylib_info)* dyld_findframework_findrrz~/Library/Frameworksz/Library/Frameworksz/Network/Library/Frameworksz/System/Library/Frameworksz~/libz/usr/local/libz/libz/usr/libcCs.|dkrtj}||}|dkr$gS|dS)N:)osenvirongetsplit)envvarZrvalr9/usr/local/python38/lib/python3.8/ctypes/macholib/dyld.pydyld_envs  rcCs|dkrtj}|dS)NZDYLD_IMAGE_SUFFIX)rr r r rrrdyld_image_suffix'srcCs t|dS)NZDYLD_FRAMEWORK_PATHrrrrrdyld_framework_path,srcCs t|dS)NZDYLD_LIBRARY_PATHrrrrrdyld_library_path/srcCs t|dS)NZDYLD_FALLBACK_FRAMEWORK_PATHrrrrrdyld_fallback_framework_path2srcCs t|dS)NZDYLD_FALLBACK_LIBRARY_PATHrrrrrdyld_fallback_library_path5srcCs(t|}|dkr|S||fdd}|S)z>For a potential path iterator, add DYLD_IMAGE_SUFFIX semanticsNcssF|D]<}|dr0|dtd |dVn ||V|VqdS)Nz.dylib)endswithlen)iteratorsuffixpathrrr_inject=s   z)dyld_image_suffix_search.._inject)r)rr rrrrrdyld_image_suffix_search8s rccs\t|}|dk r2t|D]}tj||dVqt|D]}tj|tj|Vq:dSNname)rrrrjoinrbasename)r r frameworkrrrrdyld_override_searchFs   r$ccs2|dr.|dk r.tj||tddVdS)Nz@executable_path/) startswithrrr!r)r executable_pathrrrdyld_executable_path_searchWsr'ccs|Vt|}|dk rsD