Skip to content
Snippets Groups Projects

Build -system-info and -check-locale with relative DT_RPATH

Merged Simon McVittie requested to merge wip/t17169 into master
All threads resolved!
7 files
+ 99
10
Compare changes
  • Side-by-side
  • Inline
Files
7
  • This ensures that they can find the non-ubiquitous json-glib library,
    and the steam-runtime-tools library, even if relocated into a
    non-standard prefix like the LD_LIBRARY_PATH Steam Runtime.
    
    We can't just use a relative version of the standard library directory
    as our RPATH, because if we did that, we would load glibc from the
    same place. This causes crashes in pressure-vessel, where ld.so and
    the rest of glibc are often taken from the host system via
    /overrides/lib, and the glibc in /lib and /usr/lib is incompatible
    with ld.so. Instead, use a private library directory and populate it
    with relative symlinks to our non-glibc dependencies; we assume the
    host version of glibc is new enough that this is OK.
    
    Using DT_RPATH in preference to DT_RUNPATH means we take all our direct
    and indirect dependencies from the same place. This is important when
    libjson-glib (which won't ordinarily have a RUNPATH or RPATH) pulls in
    GIO as an indirect dependency of check-locale, which doesn't directly
    depend on GIO. The GIO library we get must match the versions of GLib
    and GObject we're using.
    
    This also bypasses LD_LIBRARY_PATH.
    
    Signed-off-by: default avatarSimon McVittie <smcv@collabora.com>
+ 4
0
@@ -26,6 +26,10 @@ executable(
'system-info.c',
dependencies : [glib, libsteamrt_dep, json_glib],
install : true,
# Use the adjacent libsteam-runtime-tools and json-glib, ignoring
# LD_LIBRARY_PATH even if set
build_rpath : bin_rpath,
install_rpath : bin_rpath,
)
if get_option('man')
Loading