All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiang Xin <worldhello.net@gmail.com>
To: Git List <git@vger.kernel.org>,
	Junio C Hamano <gitster@pobox.com>,
	Bernhard Reiter <ockham@raz.or.at>,
	Remi Pommarel <repk@triplefau.lt>
Cc: Jiang Xin <zhiyou.jx@alibaba-inc.com>,
	Jiang Xin <worldhello.net@gmail.com>
Subject: [PATCH 2/2] imap-send: not define USE_CURL_FOR_IMAP_SEND in Makefile
Date: Wed,  1 Feb 2023 19:31:33 +0800	[thread overview]
Message-ID: <20230201113133.10195-2-worldhello.net@gmail.com> (raw)
In-Reply-To: <20230201113133.10195-1-worldhello.net@gmail.com>

From: Jiang Xin <zhiyou.jx@alibaba-inc.com>

The definition and using of macro "USE_CURL_FOR_IMAP_SEND" are at
different locations. It is defined in Makefile and is used in file
"imap-send.c". Even though we have fixed the mismatched "curl_config"
issue in Makefile in the previous commit, moving the definition of the
macro "USE_CURL_FOR_IMAP_SEND" to souce code "imap-send.c" seems more
nature and may help us to use curl in imap-send by force in future by
removing "USE_CURL_FOR_IMAP_SEND".

The side effect of this change is that the "git-imap-send" program may
be larger than necessary if we have a lower version of libcurl
installed.

Signed-off-by: Jiang Xin <zhiyou.jx@alibaba-inc.com>
---
 Makefile                            | 11 ++---------
 contrib/buildsystems/CMakeLists.txt |  3 ---
 imap-send.c                         | 29 +++++++++++++++++------------
 3 files changed, 19 insertions(+), 24 deletions(-)

diff --git a/Makefile b/Makefile
index f4eaf22523..83721216fc 100644
--- a/Makefile
+++ b/Makefile
@@ -1621,15 +1621,8 @@ else
 	ifndef NO_EXPAT
 		PROGRAM_OBJS += http-push.o
 	endif
-	curl_check := $(shell (echo 072200; $(CURL_CONFIG) --vernum | sed -e '/^70[BC]/s/^/0/') 2>/dev/null | sort -r | sed -ne 2p)
-	ifeq "$(curl_check)" "072200"
-		USE_CURL_FOR_IMAP_SEND = YesPlease
-	endif
-	ifdef USE_CURL_FOR_IMAP_SEND
-		BASIC_CFLAGS += -DUSE_CURL_FOR_IMAP_SEND
-		IMAP_SEND_BUILDDEPS = http.o
-		IMAP_SEND_LDFLAGS += $(CURL_LIBCURL)
-	endif
+	IMAP_SEND_BUILDDEPS = http.o
+	IMAP_SEND_LDFLAGS += $(CURL_LIBCURL)
 	ifndef NO_EXPAT
 		ifdef EXPATDIR
 			BASIC_CFLAGS += -I$(EXPATDIR)/include
diff --git a/contrib/buildsystems/CMakeLists.txt b/contrib/buildsystems/CMakeLists.txt
index 2f6e0197ff..d508db4d29 100644
--- a/contrib/buildsystems/CMakeLists.txt
+++ b/contrib/buildsystems/CMakeLists.txt
@@ -622,9 +622,6 @@ if(NOT CURL_FOUND)
 	message(WARNING "git-http-push and git-http-fetch will not be built")
 else()
 	list(APPEND PROGRAMS_BUILT git-http-fetch git-http-push git-imap-send git-remote-http)
-	if(CURL_VERSION_STRING VERSION_GREATER_EQUAL 7.34.0)
-		add_compile_definitions(USE_CURL_FOR_IMAP_SEND)
-	endif()
 endif()
 
 if(NOT EXPAT_FOUND)
diff --git a/imap-send.c b/imap-send.c
index a50af56b82..c0a2c2b4e6 100644
--- a/imap-send.c
+++ b/imap-send.c
@@ -30,20 +30,25 @@
 #if defined(NO_OPENSSL) && !defined(HAVE_OPENSSL_CSPRNG)
 typedef void *SSL;
 #endif
-#ifdef USE_CURL_FOR_IMAP_SEND
+#ifdef NO_CURL
+#define USE_CURL_FOR_IMAP_SEND 0
+#else
 #include "http.h"
-#endif
-
-#if defined(USE_CURL_FOR_IMAP_SEND)
-/* Always default to curl if it's available. */
-#define USE_CURL_DEFAULT 1
+/*
+ * Since version 7.30.0, libcurl's API has been able to communicate with
+ * IMAP servers, and curl's CURLOPT_LOGIN_OPTIONS (enabling IMAP
+ * authentication) parameter is available if curl's version is >= 7.34.0,
+ * Always use curl if there is a matching libcurl.
+ */
+#if LIBCURL_VERSION_NUM >= 0x072200
+#define USE_CURL_FOR_IMAP_SEND 1
 #else
-/* We don't have curl, so continue to use the historical implementation */
-#define USE_CURL_DEFAULT 0
+#define USE_CURL_FOR_IMAP_SEND 0
+#endif
 #endif
 
 static int verbosity;
-static int use_curl = USE_CURL_DEFAULT;
+static int use_curl = USE_CURL_FOR_IMAP_SEND;
 
 static const char * const imap_send_usage[] = { "git imap-send [-v] [-q] [--[no-]curl] < <mbox>", NULL };
 
@@ -1396,7 +1401,7 @@ static int append_msgs_to_imap(struct imap_server_conf *server,
 	return 0;
 }
 
-#ifdef USE_CURL_FOR_IMAP_SEND
+#if USE_CURL_FOR_IMAP_SEND
 static CURL *setup_curl(struct imap_server_conf *srvc, struct credential *cred)
 {
 	CURL *curl;
@@ -1531,7 +1536,7 @@ int cmd_main(int argc, const char **argv)
 	if (argc)
 		usage_with_options(imap_send_usage, imap_send_options);
 
-#ifndef USE_CURL_FOR_IMAP_SEND
+#if !USE_CURL_FOR_IMAP_SEND
 	if (use_curl) {
 		warning("--curl not supported in this build");
 		use_curl = 0;
@@ -1580,7 +1585,7 @@ int cmd_main(int argc, const char **argv)
 	if (server.tunnel)
 		return append_msgs_to_imap(&server, &all_msgs, total);
 
-#ifdef USE_CURL_FOR_IMAP_SEND
+#if USE_CURL_FOR_IMAP_SEND
 	if (use_curl)
 		return curl_append_msgs_to_imap(&server, &all_msgs, total);
 #endif
-- 
2.38.2.109.g8b8c02ffae.agit.6.7.7.dev


  reply	other threads:[~2023-02-01 11:31 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-01 11:31 [PATCH 1/2] Makefile: not use mismatched curl_config to check version Jiang Xin
2023-02-01 11:31 ` Jiang Xin [this message]
2023-02-01 23:04   ` [PATCH] imap-send: replace auto-probe libcurl with hard dependency Ævar Arnfjörð Bjarmason
2023-02-01 23:22     ` Junio C Hamano
2023-02-01 23:56       ` Ævar Arnfjörð Bjarmason
2023-02-02  1:32         ` Junio C Hamano
2023-02-01 23:59       ` Jeff King
2023-02-02  0:20         ` Ævar Arnfjörð Bjarmason
2023-02-02  9:44     ` [PATCH v2 0/6] " Ævar Arnfjörð Bjarmason
2023-02-02  9:44       ` [PATCH v2 1/6] imap-send: note "auth_method", not "host" on auth method failure Ævar Arnfjörð Bjarmason
2023-02-02 19:11         ` Junio C Hamano
2023-02-02  9:44       ` [PATCH v2 2/6] imap-send doc: the imap.sslVerify is used with imap.tunnel Ævar Arnfjörð Bjarmason
2023-02-02  9:44       ` [PATCH v2 3/6] imap-send: replace auto-probe libcurl with hard dependency Ævar Arnfjörð Bjarmason
2023-02-02 19:33         ` Junio C Hamano
2023-02-02  9:44       ` [PATCH v2 4/6] imap-send: make --curl no-optional Ævar Arnfjörð Bjarmason
2023-02-02 20:42         ` Junio C Hamano
2023-02-03 21:46           ` Ævar Arnfjörð Bjarmason
2023-02-04  5:22             ` Junio C Hamano
2023-02-02  9:44       ` [PATCH v2 5/6] imap-send: remove old --no-curl codepath Ævar Arnfjörð Bjarmason
2023-02-02 20:43         ` Junio C Hamano
2023-02-02  9:44       ` [PATCH v2 6/6] imap-send: correctly report "host" when using "tunnel" Ævar Arnfjörð Bjarmason
2023-02-02 20:56         ` Junio C Hamano
2023-02-03 17:53         ` Jeff King
2023-02-03 21:12           ` Ævar Arnfjörð Bjarmason
2023-02-04 11:09             ` Jeff King
2023-02-05 21:51               ` Ævar Arnfjörð Bjarmason
2023-02-07 18:30                 ` Jeff King
2023-02-07 20:39                   ` Ævar Arnfjörð Bjarmason
2023-02-07 21:26                     ` Junio C Hamano
2023-02-07 22:04                       ` Ævar Arnfjörð Bjarmason
2023-02-07 22:16                       ` Jeff King
2023-02-07 22:15                     ` Jeff King
2023-02-07 22:24                       ` Junio C Hamano
2023-02-08  1:06                       ` Ævar Arnfjörð Bjarmason
2023-02-17 20:50                         ` Jeff King
2023-02-06 21:41               ` Junio C Hamano
2023-02-01 18:06 ` [PATCH 1/2] Makefile: not use mismatched curl_config to check version 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=20230201113133.10195-2-worldhello.net@gmail.com \
    --to=worldhello.net@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=ockham@raz.or.at \
    --cc=repk@triplefau.lt \
    --cc=zhiyou.jx@alibaba-inc.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.