From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: git@vger.kernel.org
Cc: "Jiang Xin" <worldhello.net@gmail.com>,
"Junio C Hamano" <gitster@pobox.com>,
"Bernhard Reiter" <ockham@raz.or.at>,
"Remi Pommarel" <repk@triplefau.lt>, "Jeff King" <peff@peff.net>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH v2 3/6] imap-send: replace auto-probe libcurl with hard dependency
Date: Thu, 2 Feb 2023 10:44:14 +0100 [thread overview]
Message-ID: <patch-v2-3.6-354b6a65a78-20230202T093706Z-avarab@gmail.com> (raw)
In-Reply-To: <cover-v2-0.6-00000000000-20230202T093706Z-avarab@gmail.com>
Change the "imap-send" command to have a hard dependency on libcurl,
before this it had an optional dependency on both libcurl and OpenSSL,
now only the OpenSSL dependency is optional.
This simplifies our dependency matrix by getting rid of yet another
special-case. Given the prevalence of libcurl and portability of
libcurl it seems reasonable to say that "git imap-send" cannot be used
without libcurl, almost everyone building git needs to be able to push
or pull over http(s), so they'll be building with libcurl already.
So let's remove the previous "USE_CURL_FOR_IMAP_SEND" knob. Whether we
build git-imap-send or not is now controlled by the "NO_CURL"
knob.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
Documentation/config/imap.txt | 3 +--
Documentation/git-imap-send.txt | 3 +--
INSTALL | 8 ++++----
Makefile | 18 +++++-------------
imap-send.c | 23 ++---------------------
5 files changed, 13 insertions(+), 42 deletions(-)
diff --git a/Documentation/config/imap.txt b/Documentation/config/imap.txt
index 96b1c0927d8..7f30080c409 100644
--- a/Documentation/config/imap.txt
+++ b/Documentation/config/imap.txt
@@ -37,7 +37,6 @@ imap.preformattedHTML::
imap.authMethod::
Specify authenticate method for authentication with IMAP server.
- If Git was built with the NO_CURL option, or if your curl version is older
- than 7.34.0, or if you're running git-imap-send with the `--no-curl`
+ If you're running git-imap-send with the `--no-curl`
option, the only supported method is 'CRAM-MD5'. If this is not set
then 'git imap-send' uses the basic IMAP plaintext LOGIN command.
diff --git a/Documentation/git-imap-send.txt b/Documentation/git-imap-send.txt
index f7b18515141..202e3e59094 100644
--- a/Documentation/git-imap-send.txt
+++ b/Documentation/git-imap-send.txt
@@ -44,8 +44,7 @@ OPTIONS
--no-curl::
Talk to the IMAP server using git's own IMAP routines instead of
- using libcurl. Ignored if Git was built with the NO_OPENSSL option
- set.
+ using libcurl.
CONFIGURATION
diff --git a/INSTALL b/INSTALL
index d5694f8c470..d9538bbcb45 100644
--- a/INSTALL
+++ b/INSTALL
@@ -129,13 +129,13 @@ Issues of note:
itself, e.g. Digest::MD5, File::Spec, File::Temp, Net::Domain,
Net::SMTP, and Time::HiRes.
- - git-imap-send needs the OpenSSL library to talk IMAP over SSL if
- you are using libcurl older than 7.34.0. Otherwise you can use
- NO_OPENSSL without losing git-imap-send.
+ - git-imap-send needs libcurl 7.34.0 or newer, in addition
+ OpenSSL is needed if using the "imap.tunnel" open to tunnel
+ over SSL. Define NO_OPENSSL to omit the OpenSSL prerequisite.
- "libcurl" library is used for fetching and pushing
repositories over http:// or https://, as well as by
- git-imap-send if the curl version is >= 7.34.0. If you do
+ git-imap-send. If you do
not need that functionality, use NO_CURL to build without
it.
diff --git a/Makefile b/Makefile
index 45bd6ac9c3e..b08a855198c 100644
--- a/Makefile
+++ b/Makefile
@@ -773,7 +773,9 @@ PROGRAMS += $(EXTRA_PROGRAMS)
PROGRAM_OBJS += daemon.o
PROGRAM_OBJS += http-backend.o
+ifndef NO_CURL
PROGRAM_OBJS += imap-send.o
+endif
PROGRAM_OBJS += sh-i18n--envsubst.o
PROGRAM_OBJS += shell.o
.PHONY: program-objs
@@ -1583,7 +1585,6 @@ ifdef HAVE_ALLOCA_H
BASIC_CFLAGS += -DHAVE_ALLOCA_H
endif
-IMAP_SEND_BUILDDEPS =
IMAP_SEND_LDFLAGS =
ifdef NO_CURL
@@ -1592,6 +1593,7 @@ ifdef NO_CURL
REMOTE_CURL_ALIASES =
REMOTE_CURL_NAMES =
EXCLUDED_PROGRAMS += git-http-fetch git-http-push
+ EXCLUDED_PROGRAMS += git-imap-send
else
ifdef CURLDIR
# Try "-Wl,-rpath=$(CURLDIR)/$(lib)" in such a case.
@@ -1617,19 +1619,9 @@ else
REMOTE_CURL_NAMES = $(REMOTE_CURL_PRIMARY) $(REMOTE_CURL_ALIASES)
PROGRAM_OBJS += http-fetch.o
PROGRAMS += $(REMOTE_CURL_NAMES)
+ IMAP_SEND_LDFLAGS += $(CURL_LIBCURL)
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
- ifndef NO_EXPAT
ifdef EXPATDIR
BASIC_CFLAGS += -I$(EXPATDIR)/include
EXPAT_LIBEXPAT = -L$(EXPATDIR)/$(lib) $(CC_LD_DYNPATH)$(EXPATDIR)/$(lib) -lexpat
@@ -2786,7 +2778,7 @@ endif
git-%$X: %.o GIT-LDFLAGS $(GITLIBS)
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
-git-imap-send$X: imap-send.o $(IMAP_SEND_BUILDDEPS) GIT-LDFLAGS $(GITLIBS)
+git-imap-send$X: imap-send.o http.o GIT-LDFLAGS $(GITLIBS)
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
$(IMAP_SEND_LDFLAGS) $(LIBS)
diff --git a/imap-send.c b/imap-send.c
index b7902babd4c..26f8f01e97a 100644
--- a/imap-send.c
+++ b/imap-send.c
@@ -30,20 +30,10 @@
#if defined(NO_OPENSSL) && !defined(HAVE_OPENSSL_CSPRNG)
typedef void *SSL;
#endif
-#ifdef USE_CURL_FOR_IMAP_SEND
#include "http.h"
-#endif
-
-#if defined(USE_CURL_FOR_IMAP_SEND)
-/* Always default to curl if it's available. */
-#define USE_CURL_DEFAULT 1
-#else
-/* We don't have curl, so continue to use the historical implementation */
-#define USE_CURL_DEFAULT 0
-#endif
static int verbosity;
-static int use_curl = USE_CURL_DEFAULT;
+static int use_curl = 1;
static const char * const imap_send_usage[] = { "git imap-send [-v] [-q] [--[no-]curl] < <mbox>", NULL };
@@ -1396,7 +1386,6 @@ static int append_msgs_to_imap(struct imap_server_conf *server,
return 0;
}
-#ifdef USE_CURL_FOR_IMAP_SEND
static CURL *setup_curl(struct imap_server_conf *srvc, struct credential *cred)
{
CURL *curl;
@@ -1515,7 +1504,6 @@ static int curl_append_msgs_to_imap(struct imap_server_conf *server,
return res != CURLE_OK;
}
-#endif
int cmd_main(int argc, const char **argv)
{
@@ -1531,12 +1519,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) {
- warning("--curl not supported in this build");
- use_curl = 0;
- }
-#elif defined(NO_OPENSSL)
+#if defined(NO_OPENSSL)
if (!use_curl) {
warning("--no-curl not supported in this build");
use_curl = 1;
@@ -1580,10 +1563,8 @@ 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)
return curl_append_msgs_to_imap(&server, &all_msgs, total);
-#endif
return append_msgs_to_imap(&server, &all_msgs, total);
}
--
2.39.1.1392.g63e6d408230
next prev parent reply other threads:[~2023-02-02 9:46 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 ` [PATCH 2/2] imap-send: not define USE_CURL_FOR_IMAP_SEND in Makefile Jiang Xin
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 ` Ævar Arnfjörð Bjarmason [this message]
2023-02-02 19:33 ` [PATCH v2 3/6] imap-send: replace auto-probe libcurl with hard dependency 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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=patch-v2-3.6-354b6a65a78-20230202T093706Z-avarab@gmail.com \
--to=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=ockham@raz.or.at \
--cc=peff@peff.net \
--cc=repk@triplefau.lt \
--cc=worldhello.net@gmail.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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).