From: Jeff Hostetler <jeffhost@xxxxxxxxxxxxx> Simple IPC always requires threads (in addition to various platform-specific IPC support). Fix the ifdefs in the Makefile to define SUPPORTS_SIMPLE_IPC when appropriate. Previously, the Unix version of the code would only verify that Unix domain sockets were available. This problem was reported here: https://lore.kernel.org/git/YKN5lXs4AoK%2FJFTO@xxxxxxxxxxxxxxxxxxxxxxx/T/#m08be8f1942ea8a2c36cfee0e51cdf06489fdeafc Reported-by: Randall S. Becker <rsbecker@xxxxxxxxxxxxx> Helped-by: Jeff King <peff@xxxxxxxx> Signed-off-by: Jeff Hostetler <jeffhost@xxxxxxxxxxxxx> --- simple-ipc: correct ifdefs when NO_PTHREADS is defined Simple IPC always requires threads (in addition to various platform-specific IPC support). Fix the ifdefs in the Makefile to define SUPPORTS_SIMPLE_IPC when appropriate. Previously, the Unix version of the code would only verify that Unix domain sockets were available. This problem was reported here: https://lore.kernel.org/git/YKN5lXs4AoK%2FJFTO@xxxxxxxxxxxxxxxxxxxxxxx/T/#m08be8f1942ea8a2c36cfee0e51cdf06489fdeafc Reported-by: Randall S. Becker rsbecker@xxxxxxxxxxxxx Helped-by: Jeff King peff@xxxxxxxx Signed-off-by: Jeff Hostetler jeffhost@xxxxxxxxxxxxx Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-955%2Fjeffhostetler%2Ffixup-simple-ipc-no-pthreads-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-955/jeffhostetler/fixup-simple-ipc-no-pthreads-v1 Pull-Request: https://github.com/gitgitgadget/git/pull/955 Makefile | 14 ++++++++++++-- compat/simple-ipc/ipc-unix-socket.c | 8 ++++++++ compat/simple-ipc/ipc-win32.c | 4 ++++ simple-ipc.h | 4 ---- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 3a2d3c80a81a..30df67fd62eb 100644 --- a/Makefile +++ b/Makefile @@ -1687,13 +1687,23 @@ ifdef NO_UNIX_SOCKETS else LIB_OBJS += unix-socket.o LIB_OBJS += unix-stream-server.o - LIB_OBJS += compat/simple-ipc/ipc-shared.o - LIB_OBJS += compat/simple-ipc/ipc-unix-socket.o endif +# Simple-ipc requires threads and platform-specific IPC support. +# (We group all Unix variants in the top-level else because Windows +# also defines NO_UNIX_SOCKETS.) ifdef USE_WIN32_IPC + BASIC_CFLAGS += -DSUPPORTS_SIMPLE_IPC LIB_OBJS += compat/simple-ipc/ipc-shared.o LIB_OBJS += compat/simple-ipc/ipc-win32.o +else +ifndef NO_PTHREADS +ifndef NO_UNIX_SOCKETS + BASIC_CFLAGS += -DSUPPORTS_SIMPLE_IPC + LIB_OBJS += compat/simple-ipc/ipc-shared.o + LIB_OBJS += compat/simple-ipc/ipc-unix-socket.o +endif +endif endif ifdef NO_ICONV diff --git a/compat/simple-ipc/ipc-unix-socket.c b/compat/simple-ipc/ipc-unix-socket.c index 38689b278df3..c23b17973983 100644 --- a/compat/simple-ipc/ipc-unix-socket.c +++ b/compat/simple-ipc/ipc-unix-socket.c @@ -6,10 +6,16 @@ #include "unix-socket.h" #include "unix-stream-server.h" +#ifdef SUPPORTS_SIMPLE_IPC + #ifdef NO_UNIX_SOCKETS #error compat/simple-ipc/ipc-unix-socket.c requires Unix sockets #endif +#ifdef NO_PTHREADS +#error compat/simple-ipc/ipc-unix-socket.c requires pthreads +#endif + enum ipc_active_state ipc_get_active_state(const char *path) { enum ipc_active_state state = IPC_STATE__OTHER_ERROR; @@ -997,3 +1003,5 @@ void ipc_server_free(struct ipc_server_data *server_data) free(server_data->fifo_fds); free(server_data); } + +#endif /* SUPPORTS_SIMPLE_IPC */ diff --git a/compat/simple-ipc/ipc-win32.c b/compat/simple-ipc/ipc-win32.c index 8f89c02037e3..958bb562ebb6 100644 --- a/compat/simple-ipc/ipc-win32.c +++ b/compat/simple-ipc/ipc-win32.c @@ -4,6 +4,8 @@ #include "pkt-line.h" #include "thread-utils.h" +#ifdef SUPPORTS_SIMPLE_IPC + #ifndef GIT_WINDOWS_NATIVE #error This file can only be compiled on Windows #endif @@ -749,3 +751,5 @@ void ipc_server_free(struct ipc_server_data *server_data) free(server_data); } + +#endif /* SUPPORTS_SIMPLE_IPC */ diff --git a/simple-ipc.h b/simple-ipc.h index dc3606e30bd6..2c48a5ee0047 100644 --- a/simple-ipc.h +++ b/simple-ipc.h @@ -5,10 +5,6 @@ * See Documentation/technical/api-simple-ipc.txt */ -#if defined(GIT_WINDOWS_NATIVE) || !defined(NO_UNIX_SOCKETS) -#define SUPPORTS_SIMPLE_IPC -#endif - #ifdef SUPPORTS_SIMPLE_IPC #include "pkt-line.h" base-commit: bf949ade81106fbda068c1fdb2c6fd1cb1babe7e -- gitgitgadget