Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at release-19.03 36 lines 1.3 kB view raw
1diff --git a/giscanner/shlibs.py b/giscanner/shlibs.py 2index c93d20c..4d4915d 100644 3--- a/giscanner/shlibs.py 4+++ b/giscanner/shlibs.py 5@@ -43,6 +43,22 @@ def _resolve_libtool(options, binary, libraries): 6 7 return shlibs 8 9+def _sanitize_install_name(install_name): 10+ ''' 11+ On macOS, the dylib can be built with install_name as @rpath/libfoo.so 12+ instead of the absolute path to the library, so handle that. The name 13+ can also be @loader_path or @executable_path. 14+ ''' 15+ if not install_name.startswith('@'): 16+ return install_name 17+ if install_name.startswith('@rpath/'): 18+ return install_name[7:] 19+ if install_name.startswith('@loader_path/'): 20+ return install_name[13:] 21+ if install_name.startswith('@executable_path/'): 22+ return install_name[17:] 23+ raise RuntimeError('Unknown install_name {!r}'.format(install_name)) 24+ 25 26 # Assume ldd output is something vaguely like 27 # 28@@ -136,7 +152,7 @@ def resolve_from_ldd_output(libraries, output, basename=False): 29 m = pattern.match(word) 30 if m: 31 del patterns[library] 32- shlibs.append(m.group()) 33+ shlibs.append(_sanitize_install_name(m.group())) 34 break 35 36 if len(patterns) > 0: