Skip to content
Snippets Groups Projects
  • Simon McVittie's avatar
    c3a06cce
    Build -system-info and -check-locale with relative DT_RPATH · c3a06cce
    Simon McVittie authored
    
    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>
    c3a06cce
    History
    Build -system-info and -check-locale with relative DT_RPATH
    Simon McVittie authored
    
    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>
control 3.68 KiB
Source: steam-runtime-tools
Section: libs
Priority: optional
Maintainer: Simon McVittie <smcv@collabora.com>
Standards-Version: 4.3.0
Build-Depends:
 debhelper,
 g++ (>= 4:4.8) | g++-4.8,
 glslang-tools,
 gtk-doc-tools <!nodoc>,
 libcapsule-tools,
 libglib2.0-dev,
 libjson-glib-dev (>= 1.0),
 libtheora0 <!nocheck>,
 libvulkan-dev,
 libxcb1-dev,
 locales <!nocheck> | locales-all <!nocheck>,
 meson,
 pandoc,
 zlib1g <!nocheck>,
Build-Depends-Indep:
 libglib2.0-dev,
Vcs-Git: https://gitlab.steamos.cloud/steam/steam-runtime-tools.git
Vcs-Browser: https://gitlab.steamos.cloud/steam/steam-runtime-tools

Package: libsteam-runtime-tools-0-0
Architecture: any
Multi-Arch: same
Section: libdevel
Depends:
 libsteam-runtime-tools-0-helpers,
 ${misc:Depends},
 ${shlibs:Depends},
Description: Steam Runtime utility library - shared library
 The Steam Runtime is the library stack used to run the Steam client
 on Linux. The Steam Runtime Tools utility library contains open-source
 supporting code used by the Steam client to discover system information.
 .
 This package contains the shared library.

Package: libsteam-runtime-tools-0-dev
Architecture: any
Multi-Arch: same
Section: libdevel
Depends:
 libc6-dev,
 libglib2.0-dev,
 libjson-glib-dev (>= 1.0),
 libsteam-runtime-tools-0-0 (= ${binary:Version}),
 ${misc:Depends},
 ${shlibs:Depends},
Description: Steam Runtime utility library - development files
 The Steam Runtime is the library stack used to run the Steam client
 on Linux. The Steam Runtime Tools utility library contains open-source
 supporting code used by the Steam client to discover system information.
 .
 This package contains development files.

Package: libsteam-runtime-tools-0-doc
Architecture: all
Multi-Arch: foreign
Section: doc
Depends:
 ${misc:Depends},
Description: Steam Runtime utility library - documentation
 The Steam Runtime is the library stack used to run the Steam client
 on Linux. The Steam Runtime Tools utility library contains open-source
 supporting code used by the Steam client to discover system information.
 .
 This package contains documentation.

Package: libsteam-runtime-tools-0-helpers
Architecture: amd64 i386
Multi-Arch: same
Section: misc
Depends:
 ${misc:Depends},
 ${shlibs:Depends},
 waffle-utils-multiarch,
Description:
 The Steam Runtime is the library stack used to run the Steam client
 on Linux. The Steam Runtime Tools utility library contains open-source
 supporting code used by the Steam client to discover system information.
 .
 This package contains helper tools used to examine the library stack
 available for each architecture.

Package: libsteam-runtime-tools-0-tests
Architecture: any
Section: misc
Depends:
 ${misc:Depends},
 ${shlibs:Depends},
 libtheora0,
 steam-runtime-tools-bin,
 zlib1g,
Description:
 The Steam Runtime is the library stack used to run the Steam client
 on Linux. The Steam Runtime Tools utility library contains open-source
 supporting code used by the Steam client to discover system information.
 .
 This package contains automated tests.

Package: steam-runtime-tools-bin
Architecture: any
Multi-Arch: foreign
Section: libdevel
Breaks:
 libsteam-runtime-tools-0-tests (<< 0.20190806.0~),
Replaces:
 libsteam-runtime-tools-0-tests (<< 0.20190806.0~),
Depends:
 libsteam-runtime-tools-0-0,
 ${misc:Depends},
 ${shlibs:Depends},
Description: Steam Runtime utility library - command-line tools
 The Steam Runtime is the library stack used to run the Steam client
 on Linux. The Steam Runtime Tools utility library contains open-source
 supporting code used by the Steam client to discover system information.
 .
 This package contains the command-line tool steam-runtime-system-info,
 which summarizes everything that the libsteam-runtime-tools library
 can find out.