aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2021-07-14 17:37:39 +0530
committerNirbheek Chauhan <nirbheek@centricular.com>2021-07-14 17:37:39 +0530
commit7747a4bb8867aa87dff82584289495a52c3b38c4 (patch)
tree7f443dcb5d93dad61cbedba68a41492efc1eedda
parent762c073500dacd140f66ea04e6d9be554ce77795 (diff)
downloadmeson-nirbheek/fix-giscanner.zip
meson-nirbheek/fix-giscanner.tar.gz
meson-nirbheek/fix-giscanner.tar.bz2
gnome: Always pass absolute -L paths to g-ir-scannernirbheek/fix-giscanner
g-ir-scanner does not convert relative -L paths to runtime paths which are added to -Wl,-rpath and LD_LIBRARY_PATH / DYLD_LIBRARY_PATH / PATH. This means that the local library will either not be found at runtime (while building introspection data), or the system-wide library will be picked instead. See: giscanner/ccompiler.py:get_internal_link_flags() in gobject-introspection for more details.
-rw-r--r--mesonbuild/modules/gnome.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
index 1b68f6c..3cc8ebd 100644
--- a/mesonbuild/modules/gnome.py
+++ b/mesonbuild/modules/gnome.py
@@ -640,14 +640,18 @@ class GnomeModule(ExtensionModule):
# Because of https://gitlab.gnome.org/GNOME/gobject-introspection/merge_requests/72
# we can't use the full path until this is merged.
libpath = os.path.join(girtarget.get_subdir(), girtarget.get_filename())
+ # Must use absolute paths here because g-ir-scanner will not
+ # add them to the runtime path list if they're relative. This
+ # means we cannot use @BUILD_ROOT@
+ build_root = state.environment.get_build_dir()
if isinstance(girtarget, build.SharedLibrary):
# need to put our output directory first as we need to use the
# generated libraries instead of any possibly installed system/prefix
# ones.
- ret += ["-L@BUILD_ROOT@/{}".format(os.path.dirname(libpath))]
+ ret += ["-L{}/{}".format(build_root, os.path.dirname(libpath))]
libname = girtarget.get_basename()
else:
- libname = os.path.join(f"@BUILD_ROOT@/{libpath}")
+ libname = os.path.join(f"{build_root}/{libpath}")
ret += ['--library', libname]
# Needed for the following binutils bug:
# https://github.com/mesonbuild/meson/issues/1911