gobject-introspection: Fix macos shared lib paths
Uses patch Nirbheek Chauhan's patch from this issue upstream issue: https://gitlab.gnome.org/GNOME/gobject-introspection/issues/222 Fixes #40599
This commit is contained in:
parent
61e0bcdb6c
commit
363f78fb4c
|
@ -87,8 +87,8 @@
|
||||||
+ m = pattern.search(line)
|
+ m = pattern.search(line)
|
||||||
if m:
|
if m:
|
||||||
del patterns[library]
|
del patterns[library]
|
||||||
- shlibs.append(m.group(1))
|
- shlibs.append(_sanitize_install_name(m.group(1)))
|
||||||
+ shlibs.append(os.path.join(options.fallback_libpath, m.group(1)))
|
+ shlibs.append(os.path.join(options.fallback_libpath, _sanitize_install_name(m.group(1))))
|
||||||
break
|
break
|
||||||
|
|
||||||
if len(patterns) > 0:
|
if len(patterns) > 0:
|
||||||
|
|
|
@ -39,6 +39,7 @@ stdenv.mkDerivation rec {
|
||||||
setupHook = ./setup-hook.sh;
|
setupHook = ./setup-hook.sh;
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
./macos-shared-library.patch
|
||||||
(substituteAll {
|
(substituteAll {
|
||||||
src = ./absolute_shlib_path.patch;
|
src = ./absolute_shlib_path.patch;
|
||||||
inherit nixStoreDir;
|
inherit nixStoreDir;
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
diff --git a/giscanner/shlibs.py b/giscanner/shlibs.py
|
||||||
|
index c93d20c..4d4915d 100644
|
||||||
|
--- a/giscanner/shlibs.py
|
||||||
|
+++ b/giscanner/shlibs.py
|
||||||
|
@@ -43,6 +43,22 @@ def _resolve_libtool(options, binary, libraries):
|
||||||
|
|
||||||
|
return shlibs
|
||||||
|
|
||||||
|
+def _sanitize_install_name(install_name):
|
||||||
|
+ '''
|
||||||
|
+ On macOS, the dylib can be built with install_name as @rpath/libfoo.so
|
||||||
|
+ instead of the absolute path to the library, so handle that. The name
|
||||||
|
+ can also be @loader_path or @executable_path.
|
||||||
|
+ '''
|
||||||
|
+ if not install_name.startswith('@'):
|
||||||
|
+ return install_name
|
||||||
|
+ if install_name.startswith('@rpath/'):
|
||||||
|
+ return install_name[7:]
|
||||||
|
+ if install_name.startswith('@loader_path/'):
|
||||||
|
+ return install_name[13:]
|
||||||
|
+ if install_name.startswith('@executable_path/'):
|
||||||
|
+ return install_name[17:]
|
||||||
|
+ raise RuntimeError('Unknown install_name {!r}'.format(install_name))
|
||||||
|
+
|
||||||
|
|
||||||
|
# Assume ldd output is something vaguely like
|
||||||
|
#
|
||||||
|
@@ -121,7 +137,7 @@ def _resolve_non_libtool(options, binary, libraries):
|
||||||
|
m = pattern.search(line)
|
||||||
|
if m:
|
||||||
|
del patterns[library]
|
||||||
|
- shlibs.append(m.group(1))
|
||||||
|
+ shlibs.append(_sanitize_install_name(m.group(1)))
|
||||||
|
break
|
||||||
|
|
||||||
|
if len(patterns) > 0:
|
Loading…
Reference in New Issue