mbox series

[v3,0/7] drop support for ancient curl, improve version checks

Message ID cover-v3-0.7-00000000000-20210730T092843Z-avarab@gmail.com (mailing list archive)
Headers show
Series drop support for ancient curl, improve version checks | expand

Message

Ævar Arnfjörð Bjarmason July 30, 2021, 9:31 a.m. UTC
This should address the feedback on v2, except that I did not update
the INSTALL document as Bagas Sanjaya suggested. We did not have
existing discussion of the generally supported minimal support minimal
version there, that would make sense as a follow-up patch.

There's minor commit message changes here, and two new patches, one is
another missed ifdef we could remove because the version comparion was
wrong, and the last commit entirely gets rid of LIBCURL_VERSION_NUM
checks in the codebase in favor of checking specific defined macros.

Jeff King (3):
  http: drop support for curl < 7.11.1
  http: drop support for curl < 7.16.0
  http: drop support for curl < 7.19.4

Ævar Arnfjörð Bjarmason (4):
  http: drop support for curl < 7.19.3 and <= 7.16.4 (or <7.17.0)
    (again)
  http: drop support for curl < 7.18.0 (again)
  http: rename CURLOPT_FILE to CURLOPT_WRITEDATA
  http: centralize the accounting of libcurl dependencies

 git-curl-compat.h | 119 ++++++++++++++++++++++++++
 http-push.c       |  29 +------
 http-walker.c     |  14 +--
 http.c            | 212 ++++++----------------------------------------
 http.h            |  46 ----------
 imap-send.c       |  10 +--
 remote-curl.c     |  11 +--
 7 files changed, 153 insertions(+), 288 deletions(-)
 create mode 100644 git-curl-compat.h

Range-diff against v2:
1:  dcbb6f95652 ! 1:  6bd41764a54 http: drop support for curl < 7.11.1
    @@ Commit message
         Drop support for this ancient version of curl and simplify the code by
         allowing us get rid of some "#ifdef"'s.
     
    -    Git will not build with vanilla curl older than 7.11.1 due to (at
    -    least) two issues:
    -
    -      - our use of CURLOPT_POSTFIELDSIZE in 37ee680d9b
    -        (http.postbuffer: allow full range of ssize_t values,
    -        2017-04-11). This field was introduced in curl 7.11.1.
    -
    -      - our use of CURLPROTO_* outside any #ifdef in aeae4db174
    -        (http: create function to get curl allowed protocols,
    -        2016-12-14). These were introduced in curl 7.19.4.
    +    Git will not build with vanilla curl older than 7.11.1 due our use of
    +    CURLOPT_POSTFIELDSIZE in 37ee680d9b
    +    (http.postbuffer: allow full range of ssize_t values,
    +    2017-04-11). This field was introduced in curl 7.11.1.
     
         We could solve these compilation problems with more #ifdefs,
         but it's not worth the trouble. Version 7.11.1 came out in
    -    March of 2004, over 13 years ago. Let's declare that too old
    +    March of 2004, over 17 years ago. Let's declare that too old
         and drop any existing ifdefs that go further back. One
         obvious benefit is that we'll have fewer conditional bits
         cluttering the code.
2:  1c9f3bc031b = 2:  fb308258e2b http: drop support for curl < 7.16.0
3:  faae88b7fec = 3:  9fcd3a3e486 http: drop support for curl < 7.19.4
4:  9a30e92520c ! 4:  230b968382f http: drop support for curl < 7.19.3 and < 7.16.4 (again)
    @@ Metadata
     Author: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
     
      ## Commit message ##
    -    http: drop support for curl < 7.19.3 and < 7.16.4 (again)
    +    http: drop support for curl < 7.19.3 and <= 7.16.4 (or <7.17.0) (again)
     
         Remove the conditional use of CURLAUTH_DIGEST_IE and
         CURLOPT_USE_SSL. These two have been split from earlier simpler checks
         against LIBCURL_VERSION_NUM for ease of review.
     
    -    The CURLAUTH_DIGEST_IE flag was added in n 7.19.3[1], and
    -    CURLOPT_USE_SSL in 7.16.4[2], as noted in [2] it was then renamed from
    -    the older CURLOPT_FTP_SSL.
    +    The CURLAUTH_DIGEST_IE flag was added in 7.19.3[1], and
    +    CURLOPT_USE_SSL in 7.16.4[2] or 7.17.0[3], depending on the source. As
    +    noted in [2] it was then renamed around that time from the older
    +    CURLOPT_FTP_SSL.
     
         1. https://curl.se/libcurl/c/CURLOPT_HTTPAUTH.html
         2. https://curl.se/libcurl/c/CURLOPT_USE_SSL.html
    +    3. https://github.com/curl/curl/blob/master/docs/libcurl/symbols-in-versions
     
         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
     
-:  ----------- > 5:  b857a9ef7b1 http: drop support for curl < 7.18.0 (again)
5:  64e510b4a6b = 6:  95e42b17ce8 http: rename CURLOPT_FILE to CURLOPT_WRITEDATA
-:  ----------- > 7:  93a2775d0ee http: centralize the accounting of libcurl dependencies