| 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 |
| |