All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jeff Hostetler via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Jeff Hostetler <jeffhost@microsoft.com>,
	Jeff Hostetler <jeffhost@microsoft.com>
Subject: [PATCH] simple-ipc: correct ifdefs when NO_PTHREADS is defined
Date: Tue, 18 May 2021 15:36:31 +0000	[thread overview]
Message-ID: <pull.955.git.1621352192238.gitgitgadget@gmail.com> (raw)

From: Jeff Hostetler <jeffhost@microsoft.com>

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@coredump.intra.peff.net/T/#m08be8f1942ea8a2c36cfee0e51cdf06489fdeafc

Reported-by: Randall S. Becker <rsbecker@nexbridge.com>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
---
    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@coredump.intra.peff.net/T/#m08be8f1942ea8a2c36cfee0e51cdf06489fdeafc
    
    Reported-by: Randall S. Becker rsbecker@nexbridge.com Helped-by: Jeff
    King peff@peff.net Signed-off-by: Jeff Hostetler jeffhost@microsoft.com

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

             reply	other threads:[~2021-05-18 15:36 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-18 15:36 Jeff Hostetler via GitGitGadget [this message]
2021-05-19  0:48 ` [PATCH] simple-ipc: correct ifdefs when NO_PTHREADS is defined Junio C Hamano
2021-05-19 14:29   ` Jeff Hostetler
2021-05-19 22:03     ` Junio C Hamano
2021-05-20 14:22 ` [PATCH v2] " Jeff Hostetler via GitGitGadget
2021-05-20 15:11   ` Jeff Hostetler
2021-05-20 18:28   ` [PATCH v3] " Jeff Hostetler via GitGitGadget
2021-05-20 23:01     ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=pull.955.git.1621352192238.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=jeffhost@microsoft.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.