meson: pass library install paths to g-ir-scanner

We are patching g-ir-scanner to produce absolute paths in the GIR
files. When an application uses an internal library placed in a
non-standard path (e.g. $out/lib/gnome-shell), the scanner needs
to be informed. For autotools-based apps, the full path was
obtained from libtool-wrapped files; with Meson, this is no longer
possible – we need to pass the path information some way.

This commit channels the --fallback-library-path option added
to g-ir-scanner in aforementioned patch.

Changed files
+22
pkgs
development
tools
build-managers
+9
pkgs/development/tools/build-managers/meson/default.nix
···
popd
'';
+
patches = [
+
# Unlike libtool, vanilla Meson does not pass any information
+
# about the path library will be installed to to g-ir-scanner,
+
# breaking the GIR when path other than ${!outputLib}/lib is used.
+
# We patch Meson to add a --fallback-library-path argument with
+
# library install_dir to g-ir-scanner.
+
./gir-fallback-path.patch
+
];
+
postPatch = ''
sed -i -e 's|e.fix_rpath(install_rpath)||' mesonbuild/scripts/meson_install.py
'';
+13
pkgs/development/tools/build-managers/meson/gir-fallback-path.patch
···
+
--- a/mesonbuild/modules/gnome.py
+
+++ b/mesonbuild/modules/gnome.py
+
@@ -427,6 +427,10 @@
+
scan_command += ['--no-libtool', '--namespace=' + ns, '--nsversion=' + nsversion, '--warn-all',
+
'--output', '@OUTPUT@']
+
+
+ fallback_libpath = girtarget.get_custom_install_dir()[0]
+
+ if fallback_libpath is not None and isinstance(fallback_libpath, str) and len(fallback_libpath) > 0 and fallback_libpath[0] == "/":
+
+ scan_command += ['--fallback-library-path=' + fallback_libpath]
+
+
+
header = kwargs.pop('header', None)
+
if header:
+
if not isinstance(header, str):