U ,a@s dZddlZddlmZddlmZddlTzddlmZWne k rXddZYnXd d d d gZ ej d dddgZ ej ddddgZddZd.ddZd/ddZd0ddZd1ddZd2dd Zd3d!d"Zd4d#d$Zd5d%d&Zd6d'd(Zd7d)d Zd8d*d Zd+d,Zed-kredS)9z dyld emulation N)framework_info) dylib_info)*) _dyld_shared_cache_contains_pathcGstdS)N)NotImplementedError)argsr9/opt/alt/python38/lib64/python3.8/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.|dkrtj}||}|dkr$gS|dS)N:)osenvirongetsplit)envvarZrvalrrr dyld_env$s  rcCs|dkrtj}|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|}|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 _injectBs   z)dyld_image_suffix_search.._inject)r)rrrr rrr dyld_image_suffix_search=s r!ccs\t|}|dk r2t|D]}tj||dVqt|D]}tj|tj|Vq:dSNname)rrr rjoinrbasename)r#r frameworkrrrr dyld_override_searchKs   r'ccs2|dr.|dk r.tj||tddVdS)Nz@executable_path/) startswithr rr$r)r#executable_pathrrr dyld_executable_path_search\sr*ccs|Vt|}|dk rsL