git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 0/6] imap-send: replace auto-probe libcurl with hard dependency

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Feb 2, 2023, 09:44 UTC
Message-ID
<cover-v2-0.6-00000000000-20230202T093706Z-avarab@gmail.com>
In-Reply-To
<patch-1.1-3bea1312322-20230201T225915Z-avarab@gmail.com>

A polished-up v2 of [1]. I started by splitting out the "imap-send: make --curl no-optional" per Junio's comment, but then noticed that we actually can delete quite a bit of code in imap-send.c as a result of this change.

Comments on indivdiual patches below:
1. https://lore.kernel.org/git/xmqqlelhx973.fsf@gitster.g/
Ævar Arnfjörð Bjarmason (6):
  imap-send: note "auth_method", not "host" on auth method failure
  imap-send doc: the imap.sslVerify is used with imap.tunnel

Both existing issues, but we'll end up changing adjacent code & these docs later.

  imap-send: replace auto-probe libcurl with hard dependency
  imap-send: make --curl no-optional
The previous patch, but now split into two...
  imap-send: remove old --no-curl codepath

...or three, if we're counting this larger code deletion. This could have been squashed into the above, but I thought in this case that this refactoring was easier to reason about when split off from the functional change.

  imap-send: correctly report "host" when using "tunnel"

An existing issue, but one that's now easy to fix with the above. Previously the reporting for the OpenSSL codepath had to deal with both "host" and "tunnel", now that it only handles "tunnel" we can correct and simplify it.

This is split from the above because there's a functional bugfix change here, unlike the pure code deletion in the preceding commit.

CI & branch for this at: https://github.com/avar/git/tree/avar/git-imap-send-curl-only-2

 Documentation/config/imap.txt   |   8 +-
 Documentation/git-imap-send.txt |  11 --
 INSTALL                         |   8 +-
 Makefile                        |  18 +---
 imap-send.c                     | 182 +++++---------------------------
 5 files changed, 41 insertions(+), 186 deletions(-)
Range-diff against v1:
-:  ----------- > 1:  3187a643035 imap-send: note "auth_method", not "host" on auth method failure
-:  ----------- > 2:  1dfee9bf08e imap-send doc: the imap.sslVerify is used with imap.tunnel
1:  3bea1312322 ! 3:  354b6a65a78 imap-send: replace auto-probe libcurl with hard dependency
    @@ Commit message
         before this it had an optional dependency on both libcurl and OpenSSL,
         now only the OpenSSL dependency is optional.
     
    -    This simplifies our dependency matrix my getting rid of yet another
    +    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
    @@ Commit message
     
         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. Let's also hide the old --curl and --no-curl options, and die if
    -    "--no-curl" is provided.
    +    knob.
     
         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
     
    + ## Documentation/config/imap.txt ##
    +@@ Documentation/config/imap.txt: 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.
    +
      ## Documentation/git-imap-send.txt ##
     @@ Documentation/git-imap-send.txt: OPTIONS
    - --quiet::
    - 	Be quiet.
      
    ----curl::
    --	Use libcurl to communicate with the IMAP server, unless tunneling
    --	into it.  Ignored if Git was built without the USE_CURL_FOR_IMAP_SEND
    --	option set.
    --
    ----no-curl::
    --	Talk to the IMAP server using git's own IMAP routines instead of
    + --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
    - -------------
     
      ## INSTALL ##
     @@ INSTALL: Issues of note:
    @@ imap-send.c
      
      static const char * const imap_send_usage[] = { "git imap-send [-v] [-q] [--[no-]curl] < <mbox>", NULL };
      
    - static struct option imap_send_options[] = {
    - 	OPT__VERBOSITY(&verbosity),
    --	OPT_BOOL(0, "curl", &use_curl, "use libcurl to communicate with the IMAP server"),
    -+	OPT_HIDDEN_BOOL(0, "curl", &use_curl, "use libcurl to communicate with the IMAP server"),
    - 	OPT_END()
    - };
    - 
     @@ imap-send.c: static int append_msgs_to_imap(struct imap_server_conf *server,
      	return 0;
      }
    @@ imap-send.c: int cmd_main(int argc, const char **argv)
     -		use_curl = 0;
     -	}
     -#elif defined(NO_OPENSSL)
    --	if (!use_curl) {
    --		warning("--no-curl not supported in this build");
    --		use_curl = 1;
    --	}
    --#endif
    -+	if (!use_curl)
    -+		die(_("the --no-curl option to imap-send has been deprecated"));
    - 
    - 	if (!server.port)
    - 		server.port = server.use_ssl ? 993 : 143;
    ++#if defined(NO_OPENSSL)
    + 	if (!use_curl) {
    + 		warning("--no-curl not supported in this build");
    + 		use_curl = 1;
     @@ imap-send.c: 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);
    + 	if (use_curl)
    + 		return curl_append_msgs_to_imap(&server, &all_msgs, total);
     -#endif
    --
    --	return append_msgs_to_imap(&server, &all_msgs, total);
    -+	return curl_append_msgs_to_imap(&server, &all_msgs, total);
    + 
    + 	return append_msgs_to_imap(&server, &all_msgs, total);
      }
-:  ----------- > 4:  e9cc9bbed1e imap-send: make --curl no-optional
-:  ----------- > 5:  17c75e6381a imap-send: remove old --no-curl codepath
-:  ----------- > 6:  686febb8cdc imap-send: correctly report "host" when using "tunnel"
-- 
2.39.1.1392.g63e6d408230
Previous: Junio C HamanoNext: Ævar Arnfjörð Bjarmason
Message 9 of 37 in “Makefile: not use mismatched curl_config to check version”
  1. 1/2 Makefile: not use mismatched curl_config to check versionJiang Xin, Feb 1, 2023
  2. 2/2 imap-send: not define USE_CURL_FOR_IMAP_SEND in MakefileJiang Xin, Feb 1, 2023
  3. imap-send: replace auto-probe libcurl with hard dependencyÆvar Arnfjörð Bjarmason, Feb 1, 2023
  4. Junio C HamanoFeb 1, 2023
  5. Jeff KingFeb 1, 2023
  6. Ævar Arnfjörð BjarmasonFeb 2, 2023
  7. Ævar Arnfjörð BjarmasonFeb 1, 2023
  8. Junio C HamanoFeb 2, 2023
  9. 0/6 imap-send: replace auto-probe libcurl with hard dependencyÆvar Arnfjörð Bjarmason, Feb 2, 2023
  10. 1/6 imap-send: note "auth_method", not "host" on auth method failureÆvar Arnfjörð Bjarmason, Feb 2, 2023
  11. Junio C HamanoFeb 2, 2023
  12. 2/6 imap-send doc: the imap.sslVerify is used with imap.tunnelÆvar Arnfjörð Bjarmason, Feb 2, 2023
  13. 3/6 imap-send: replace auto-probe libcurl with hard dependencyÆvar Arnfjörð Bjarmason, Feb 2, 2023
  14. Junio C HamanoFeb 2, 2023
  15. 4/6 imap-send: make --curl no-optionalÆvar Arnfjörð Bjarmason, Feb 2, 2023
  16. Junio C HamanoFeb 2, 2023
  17. Ævar Arnfjörð BjarmasonFeb 3, 2023
  18. Junio C HamanoFeb 4, 2023
  19. 6/6 imap-send: correctly report "host" when using "tunnel"Ævar Arnfjörð Bjarmason, Feb 2, 2023
  20. Junio C HamanoFeb 2, 2023
  21. Jeff KingFeb 3, 2023
  22. Ævar Arnfjörð BjarmasonFeb 3, 2023
  23. Jeff KingFeb 4, 2023
  24. Ævar Arnfjörð BjarmasonFeb 5, 2023
  25. Jeff KingFeb 7, 2023
  26. Ævar Arnfjörð BjarmasonFeb 7, 2023
  27. Junio C HamanoFeb 7, 2023
  28. Ævar Arnfjörð BjarmasonFeb 7, 2023
  29. Jeff KingFeb 7, 2023
  30. Jeff KingFeb 7, 2023
  31. Junio C HamanoFeb 7, 2023
  32. Ævar Arnfjörð BjarmasonFeb 8, 2023
  33. Jeff KingFeb 17, 2023
  34. Junio C HamanoFeb 6, 2023
  35. 5/6 imap-send: remove old --no-curl codepathÆvar Arnfjörð Bjarmason, Feb 2, 2023
  36. Junio C HamanoFeb 2, 2023
  37. Junio C HamanoFeb 1, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.