ell: fix cross compilation

The current `fix-dbus-tests.patch` uses automake and pkgconfig to figure
out the path of `dbus-daemon`. This fails when cross-compiling, as
tests aren't run (and `checkInputs`) not available.

Instead of doing this, we can simply teach the tests to pick up
dbus-daemon from $PATH. This was also sent upstream in
https://lists.01.org/hyperkitty/list/ell@lists.01.org/thread/SQEZAIS2LZXSXGTXOW3GTAM5ZPXRLTN4/.
This commit is contained in:
Florian Klink 2020-12-27 13:18:05 +01:00
parent 1cf19342f4
commit 52261c4c27
3 changed files with 89 additions and 69 deletions

View File

@ -0,0 +1,84 @@
From 55d499f4cd5667c04c21f7201d7f10484e187907 Mon Sep 17 00:00:00 2001
From: Florian Klink <flokli@flokli.de>
Date: Sun, 27 Dec 2020 13:03:12 +0100
Subject: [PATCH] unit/test-dbus: pick up dbus-daemon from $PATH
This allows running the unit tests in environments where `dbus-daemon`
isn't in /usr/bin, but in $PATH.
Signed-off-by: Florian Klink <flokli@flokli.de>
---
unit/test-dbus-message-fds.c | 4 ++--
unit/test-dbus-properties.c | 4 ++--
unit/test-dbus.c | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/unit/test-dbus-message-fds.c b/unit/test-dbus-message-fds.c
index 6f68bae..4b5662e 100644
--- a/unit/test-dbus-message-fds.c
+++ b/unit/test-dbus-message-fds.c
@@ -51,7 +51,7 @@ static bool start_dbus_daemon(void)
char *prg_envp[1];
pid_t pid;
- prg_argv[0] = "/usr/bin/dbus-daemon";
+ prg_argv[0] = "dbus-daemon";
prg_argv[1] = "--nopidfile";
prg_argv[2] = "--nofork";
prg_argv[3] = "--config-file=" UNITDIR "dbus.conf";
@@ -68,7 +68,7 @@ static bool start_dbus_daemon(void)
}
if (pid == 0) {
- execve(prg_argv[0], prg_argv, prg_envp);
+ execvpe(prg_argv[0], prg_argv, prg_envp);
exit(EXIT_SUCCESS);
}
diff --git a/unit/test-dbus-properties.c b/unit/test-dbus-properties.c
index b435062..049f0f4 100644
--- a/unit/test-dbus-properties.c
+++ b/unit/test-dbus-properties.c
@@ -49,7 +49,7 @@ static bool start_dbus_daemon(void)
char *prg_envp[1];
pid_t pid;
- prg_argv[0] = "/usr/bin/dbus-daemon";
+ prg_argv[0] = "dbus-daemon";
prg_argv[1] = "--nopidfile";
prg_argv[2] = "--nofork";
prg_argv[3] = "--config-file=" UNITDIR "dbus.conf";
@@ -66,7 +66,7 @@ static bool start_dbus_daemon(void)
}
if (pid == 0) {
- execve(prg_argv[0], prg_argv, prg_envp);
+ execvpe(prg_argv[0], prg_argv, prg_envp);
exit(EXIT_SUCCESS);
}
diff --git a/unit/test-dbus.c b/unit/test-dbus.c
index 67f0a7b..582847e 100644
--- a/unit/test-dbus.c
+++ b/unit/test-dbus.c
@@ -45,7 +45,7 @@ static void start_dbus_daemon(void)
char *prg_envp[1];
pid_t pid;
- prg_argv[0] = "/usr/bin/dbus-daemon";
+ prg_argv[0] = "dbus-daemon";
prg_argv[1] = "--nopidfile";
prg_argv[2] = "--nofork";
prg_argv[3] = "--config-file=" UNITDIR "dbus.conf";
@@ -62,7 +62,7 @@ static void start_dbus_daemon(void)
}
if (pid == 0) {
- execve(prg_argv[0], prg_argv, prg_envp);
+ execvpe(prg_argv[0], prg_argv, prg_envp);
exit(EXIT_SUCCESS);
}
--
2.29.2

View File

@ -12,13 +12,14 @@ stdenv.mkDerivation rec {
outputs = [ "out" "dev" ];
src = fetchgit {
url = "https://git.kernel.org/pub/scm/libs/${pname}/${pname}.git";
rev = version;
sha256 = "16z7xwlrpx1bsr2y1rgxxxixzwc84cwn2g557iqxhwsxfzy6q3dk";
url = "https://git.kernel.org/pub/scm/libs/${pname}/${pname}.git";
rev = version;
sha256 = "16z7xwlrpx1bsr2y1rgxxxixzwc84cwn2g557iqxhwsxfzy6q3dk";
};
patches = [
./fix-dbus-tests.patch
# Sent upstream in https://lists.01.org/hyperkitty/list/ell@lists.01.org/thread/SQEZAIS2LZXSXGTXOW3GTAM5ZPXRLTN4/
./0001-unit-test-dbus-pick-up-dbus-daemon-from-PATH.patch
];
nativeBuildInputs = [

View File

@ -1,65 +0,0 @@
--- a/Makefile.am
+++ b/Makefile.am
@@ -140,6 +140,7 @@
ell_libell_private_la_SOURCES = $(ell_libell_la_SOURCES)
AM_CFLAGS = -fvisibility=hidden -DUNITDIR=\""$(top_srcdir)/unit/"\" \
+ -DDBUS_DAEMON=\""$(DBUS_DAEMONDIR)/dbus-daemon"\" \
-DCERTDIR=\""$(top_builddir)/unit/"\"
pkgconfigdir = $(libdir)/pkgconfig
--- a/configure.ac
+++ b/configure.ac
@@ -14,6 +14,8 @@
AC_PREFIX_DEFAULT(/usr/local)
+PKG_PROG_PKG_CONFIG
+
COMPILER_FLAGS
AC_LANG_C
@@ -131,6 +133,10 @@
AC_CHECK_PROG(have_xxd, [xxd], [yes], [no])
fi
+PKG_CHECK_MODULES(DBUS, dbus-1, dummy=yes,
+ AC_MSG_ERROR(D-Bus is required for running tests))
+PKG_CHECK_VAR(DBUS_DAEMONDIR, dbus-1, daemondir)
+
AM_CONDITIONAL(DBUS_TESTS, test "${little_endian}" = "yes")
AM_CONDITIONAL(CERT_TESTS, test "${have_openssl}" = "yes")
--- a/unit/test-dbus-message-fds.c
+++ b/unit/test-dbus-message-fds.c
@@ -51,7 +51,7 @@
char *prg_envp[1];
pid_t pid;
- prg_argv[0] = "/usr/bin/dbus-daemon";
+ prg_argv[0] = DBUS_DAEMON;
prg_argv[1] = "--nopidfile";
prg_argv[2] = "--nofork";
prg_argv[3] = "--config-file=" UNITDIR "dbus.conf";
--- a/unit/test-dbus-properties.c
+++ b/unit/test-dbus-properties.c
@@ -48,7 +48,7 @@
char *prg_envp[1];
pid_t pid;
- prg_argv[0] = "/usr/bin/dbus-daemon";
+ prg_argv[0] = DBUS_DAEMON;
prg_argv[1] = "--nopidfile";
prg_argv[2] = "--nofork";
prg_argv[3] = "--config-file=" UNITDIR "dbus.conf";
--- a/unit/test-dbus.c
+++ b/unit/test-dbus.c
@@ -45,7 +45,7 @@
char *prg_envp[1];
pid_t pid;
- prg_argv[0] = "/usr/bin/dbus-daemon";
+ prg_argv[0] = DBUS_DAEMON;
prg_argv[1] = "--nopidfile";
prg_argv[2] = "--nofork";
prg_argv[3] = "--config-file=" UNITDIR "dbus.conf";