78 lines
2.0 KiB
Diff
78 lines
2.0 KiB
Diff
|
From 8e9a7a8c72a9fe407d296ec0ffeb56b2cd271959 Mon Sep 17 00:00:00 2001
|
||
|
From: Matt Weber <matthew.weber@rockwellcollins.com>
|
||
|
Date: Mon, 16 Sep 2019 22:00:29 -0500
|
||
|
Subject: [PATCH] Select TCP when lack of SYSV IPC
|
||
|
|
||
|
Update to add a configure test to build and install the TCP IPC version
|
||
|
when detecting SYSV IPC MsgQ support isn't available.
|
||
|
|
||
|
The issue was initially discovered on Windows Services for Linux
|
||
|
(WSL1.0). WSL does have some SysV IPC, but no message Q's, which is
|
||
|
required by fakeroot/faked by default.
|
||
|
|
||
|
Fixes:
|
||
|
https://github.com/Microsoft/WSL/issues/2465
|
||
|
|
||
|
Additional bug reports:
|
||
|
https://bugs.busybox.net/show_bug.cgi?id=11366
|
||
|
|
||
|
Upstream:
|
||
|
https://salsa.debian.org/clint/fakeroot/merge_requests/2
|
||
|
|
||
|
Signed-off-by: Jean-Francois Doyon <jfdoyon@gmail.com>
|
||
|
Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>
|
||
|
---
|
||
|
configure.ac | 36 ++++++++++++++++++++++++++++++++++++
|
||
|
1 file changed, 36 insertions(+)
|
||
|
|
||
|
diff --git a/configure.ac b/configure.ac
|
||
|
index a9189e6..1650f77 100644
|
||
|
--- a/configure.ac
|
||
|
+++ b/configure.ac
|
||
|
@@ -25,6 +25,42 @@ AC_CACHE_CHECK([which IPC method to use],
|
||
|
[ac_cv_use_ipc],
|
||
|
[ac_cv_use_ipc=sysv])
|
||
|
|
||
|
+if test $ac_cv_use_ipc = "sysv"; then
|
||
|
+ AC_MSG_CHECKING([whether SysV IPC message queues are actually working on the host])
|
||
|
+
|
||
|
+ AC_LANG_PUSH(C)
|
||
|
+ AC_TRY_RUN([
|
||
|
+#include <stdlib.h>
|
||
|
+#include <sys/types.h>
|
||
|
+#include <sys/ipc.h>
|
||
|
+#include <sys/msg.h>
|
||
|
+#include <time.h>
|
||
|
+#include <unistd.h>
|
||
|
+
|
||
|
+int main() {
|
||
|
+
|
||
|
+ srandom(time(NULL)+getpid()*33151);
|
||
|
+ key_t msg_key = random();
|
||
|
+ int msg_get = msgget(msg_key, IPC_CREAT|0600);
|
||
|
+
|
||
|
+ if (msg_get==-1) {
|
||
|
+ return 1;
|
||
|
+ } else {
|
||
|
+ msgctl(msg_get, IPC_RMID, NULL);
|
||
|
+ return 0;
|
||
|
+ }
|
||
|
+
|
||
|
+}], [ac_cv_use_ipc=sysv], [ac_cv_use_ipc=tcp])
|
||
|
+
|
||
|
+ if test $ac_cv_use_ipc = "tcp"; then
|
||
|
+ AC_MSG_RESULT([No, using TCP])
|
||
|
+ else
|
||
|
+ AC_MSG_RESULT([Yes])
|
||
|
+ fi
|
||
|
+
|
||
|
+ AC_LANG_POP(C)
|
||
|
+fi
|
||
|
+
|
||
|
AC_ARG_WITH([dbformat],
|
||
|
AS_HELP_STRING([--with-dbformat@<:@=DBFORMAT@:>@],
|
||
|
[database format to use: either inode (default) or path]),
|
||
|
--
|
||
|
2.17.1
|
||
|
|