umockdev: Make library path references absolute
This simplifies consumers a lot.
This commit is contained in:
parent
35b85a126d
commit
014b59a4b8
|
@ -28,6 +28,12 @@ stdenv.mkDerivation rec {
|
||||||
sha256 = "sha256-FEmWjJVmKKckC30zULGI/mZ3VNtirnweZq2gKh/Y5VE=";
|
sha256 = "sha256-FEmWjJVmKKckC30zULGI/mZ3VNtirnweZq2gKh/Y5VE=";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# Hardcode absolute paths to libraries so that consumers
|
||||||
|
# do not need to set LD_LIBRARY_PATH themselves.
|
||||||
|
./hardcode-paths.patch
|
||||||
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
docbook-xsl-nons
|
docbook-xsl-nons
|
||||||
gobject-introspection
|
gobject-introspection
|
||||||
|
@ -57,6 +63,21 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
# Substitute the path to this derivation in the patch we apply.
|
||||||
|
substituteInPlace src/umockdev-wrapper \
|
||||||
|
--subst-var-by 'LIBDIR' "''${!outputLib}/lib"
|
||||||
|
'';
|
||||||
|
|
||||||
|
preCheck = ''
|
||||||
|
# Our patch makes the path to the `LD_PRELOAD`ed library absolute.
|
||||||
|
# When running tests, the library is not yet installed, though,
|
||||||
|
# so we need to replace the absolute path with a local one during build.
|
||||||
|
# We are using a symlink that will be overridden during installation.
|
||||||
|
mkdir -p "$out/lib"
|
||||||
|
ln -s "$PWD/libumockdev-preload.so.0" "$out/lib/libumockdev-preload.so.0"
|
||||||
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Mock hardware devices for creating unit tests";
|
description = "Mock hardware devices for creating unit tests";
|
||||||
license = licenses.lgpl21Plus;
|
license = licenses.lgpl21Plus;
|
||||||
|
|
69
pkgs/development/libraries/umockdev/hardcode-paths.patch
Normal file
69
pkgs/development/libraries/umockdev/hardcode-paths.patch
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
diff --git a/meson.build b/meson.build
|
||||||
|
index 2ed9027..1f6bbf2 100644
|
||||||
|
--- a/meson.build
|
||||||
|
+++ b/meson.build
|
||||||
|
@@ -38,6 +38,7 @@ g_ir_compiler = find_program('g-ir-compiler', required: false)
|
||||||
|
|
||||||
|
conf.set('PACKAGE_NAME', meson.project_name())
|
||||||
|
conf.set_quoted('VERSION', meson.project_version())
|
||||||
|
+conf.set_quoted('LIBDIR', get_option('prefix') / get_option('libdir'))
|
||||||
|
|
||||||
|
# glibc versions somewhere between 2.28 and 2.34
|
||||||
|
if cc.has_function('__fxstatat', prefix: '#include <sys/stat.h>')
|
||||||
|
@@ -148,7 +149,7 @@ hacked_gir = custom_target('UMockdev-1.0 hacked gir',
|
||||||
|
|
||||||
|
if g_ir_compiler.found()
|
||||||
|
umockdev_typelib = custom_target('UMockdev-1.0 typelib',
|
||||||
|
- command: [g_ir_compiler, '--output', '@OUTPUT@', '-l', 'libumockdev.so.0', '@INPUT@'],
|
||||||
|
+ command: [g_ir_compiler, '--output', '@OUTPUT@', '-l', get_option('prefix') / get_option('libdir') / 'libumockdev.so.0', '@INPUT@'],
|
||||||
|
input: hacked_gir,
|
||||||
|
output: 'UMockdev-1.0.typelib',
|
||||||
|
install: true,
|
||||||
|
diff --git a/src/config.vapi b/src/config.vapi
|
||||||
|
index 5269dd0..a2ec46d 100644
|
||||||
|
--- a/src/config.vapi
|
||||||
|
+++ b/src/config.vapi
|
||||||
|
@@ -2,5 +2,6 @@
|
||||||
|
namespace Config {
|
||||||
|
public const string PACKAGE_NAME;
|
||||||
|
public const string VERSION;
|
||||||
|
+ public const string LIBDIR;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/umockdev-record.vala b/src/umockdev-record.vala
|
||||||
|
index 8434d32..68c7f8e 100644
|
||||||
|
--- a/src/umockdev-record.vala
|
||||||
|
+++ b/src/umockdev-record.vala
|
||||||
|
@@ -435,7 +435,7 @@ main (string[] args)
|
||||||
|
preload = "";
|
||||||
|
else
|
||||||
|
preload = preload + ":";
|
||||||
|
- Environment.set_variable("LD_PRELOAD", preload + "libumockdev-preload.so.0", true);
|
||||||
|
+ Environment.set_variable("LD_PRELOAD", preload + Config.LIBDIR + "/libumockdev-preload.so.0", true);
|
||||||
|
|
||||||
|
try {
|
||||||
|
root_dir = DirUtils.make_tmp("umockdev.XXXXXX");
|
||||||
|
diff --git a/src/umockdev-run.vala b/src/umockdev-run.vala
|
||||||
|
index 9a1ba10..6df2522 100644
|
||||||
|
--- a/src/umockdev-run.vala
|
||||||
|
+++ b/src/umockdev-run.vala
|
||||||
|
@@ -95,7 +95,7 @@ main (string[] args)
|
||||||
|
preload = "";
|
||||||
|
else
|
||||||
|
preload = preload + ":";
|
||||||
|
- Environment.set_variable ("LD_PRELOAD", preload + "libumockdev-preload.so.0", true);
|
||||||
|
+ Environment.set_variable ("LD_PRELOAD", preload + Config.LIBDIR + "/libumockdev-preload.so.0", true);
|
||||||
|
|
||||||
|
var testbed = new UMockdev.Testbed ();
|
||||||
|
|
||||||
|
diff --git a/src/umockdev-wrapper b/src/umockdev-wrapper
|
||||||
|
index 6ce4dcd..706c49a 100755
|
||||||
|
--- a/src/umockdev-wrapper
|
||||||
|
+++ b/src/umockdev-wrapper
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# Wrapper program to preload the libumockdev library, so that test programs can
|
||||||
|
# set $UMOCKDEV_DIR for redirecting sysfs and other queries to a test bed.
|
||||||
|
-exec env LD_PRELOAD=libumockdev-preload.so.0:$LD_PRELOAD "$@"
|
||||||
|
+exec env LD_PRELOAD=@LIBDIR@/libumockdev-preload.so.0:$LD_PRELOAD "$@"
|
||||||
|
|
Loading…
Reference in a new issue