[ANNOUNCEMENT] Updated: curl 7.71.1-1

Brian Inglis Brian.Inglis@SystematicSw.ab.ca
Tue Aug 11 01:27:52 GMT 2020


On 2020-08-10 13:14, Ken Brown via Cygwin wrote:
> On 8/10/2020 1:33 PM, Brian Inglis wrote:
>> On 2020-08-10 08:52, Ken Brown via Cygwin wrote:
>>> On 8/9/2020 5:48 PM, Brian Inglis wrote:
>>>> On 2020-08-09 12:28, Adam Dinwoodie wrote:
>>>>> On Fri, 24 Jul 2020 at 13:56, Adam Dinwoodie wrote:
>>>>>> In the failing case, the `/configure` stage includes the following
>>>>>> text: `configure: Setting CURL_LDFLAGS to '-lcurl -lnghttp2 -lidn2
>>>>>> -lssh -lpsl -lssl -lcrypto -lldap -llber -lbrotlidec -lbrotlidec
>>>>>> -lz'`; in the working case using -7.66.0-1, the corresponding line is
>>>>>> just `configure: Setting CURL_LDFLAGS to '-lcurl'`.
>>> [...]
>>>> Meanwhile, that info likely comes from:
>>>>
>>>> $ tail -vn15 /lib/pkgconfig/libcurl.pc
>>>> ==> /lib/pkgconfig/libcurl.pc <==
>>>> #
>>>> prefix=/usr
>>>> exec_prefix=/usr
>>>> libdir=${exec_prefix}/lib
>>>> includedir=${prefix}/include
>>>> supported_protocols="DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS LDAP LDAPS
>>>> POP3 POP3S RTSP SCP SFTP SMB SMBS SMTP SMTPS TELNET TFTP"
>>>> supported_features="SSL IPv6 UnixSockets libz brotli AsynchDNS IDN PSL NTLM
>>>> NTLM_WB TLS-SRP HTTP2 HTTPS-proxy"
>>>>
>>>> Name: libcurl
>>>> URL: https://curl.haxx.se/
>>>> Description: Library to transfer files with ftp, http, etc.
>>>> Version: 7.71.1
>>>> Libs: -L${libdir} -lcurl
>>>> Libs.private: -lnghttp2 -lidn2 -lssh -lpsl -lssl -lcrypto -lldap -llber
>>>> -lbrotlidec -lbrotlidec -lz
>>>> Cflags: -I${includedir}
>>>>
>>>> it looks like your git build should be using Libs for dynamic builds and adding
>>>> Libs.private for static builds
>>
>>> If you look at configure.ac in the git sources, you'll see that it uses
>>> curl-config, not pkg-config.  The former reports:
>>>
>>> $ curl-config --libs
>>> -lcurl -lnghttp2 -lidn2 -lssh -lpsl -lssl -lcrypto -lldap -llber -lbrotlidec
>>> -lbrotlidec -lz
>>>
>>> Yaakov's build of earlier versions of curl used a patch 7.33.0-libdeps.patch to
>>> prevent the unnecessary libs from being listed.  He even had a comment at the
>>> beginning of the patch, explaining the reason for it: "These are needed only for
>>> static linking, but we build with --disable-static".
>>
>> I try to avoid looking at autotools plumbing if I can possibly avoid it! ;^>
>> Someone cleaned up the approach used, as the patch did not apply and was dropped.
> 
> My point is that the patch shouldn't have been dropped.  It should have been
> modified to apply to the updated sources.  (I've done this.  See the attached.)
> As Yaakov wrote, the patch is needed to prevent 'curl-config --libs' from
> including libs that are only needed for static linking.
> 
> With the modified patch applied, curl-config gives the expected result:
> 
> $ curl-config --libs
> -lcurl
> 
>> If you look at my later post, cygport git build and tests worked for me with no
>> problems other than at first missing some package build dependencies
> 
> Those were not really build dependencies.  They only appeared to be needed
> because 'curl-config --libs' erroneously included libs that are only needed for
> static linking.

Your patch seems to reproduce exactly what is currently distributed in the
libcurl-devel package:

$ tail -n7 /lib/pkgconfig/libcurl.pc
Name: libcurl
URL: https://curl.haxx.se/
Description: Library to transfer files with ftp, http, etc.
Version: 7.71.1
Libs: -L${libdir} -lcurl
Libs.private: -lnghttp2 -lidn2 -lssh -lpsl -lssl -lcrypto -lldap -llber
-lbrotlidec -lbrotlidec -lz
Cflags: -I${includedir}

and from what I can see, picked up and used in my vanilla cygport git build from
the vanilla distributed src package:

$ for exe in *.exe */*.exe; do ldd $exe | fgrep -q cygcurl && cygcheck ./$exe &&
echo; done > ~/git-curl.log

[see attached]

Perhaps I am misunderstanding: I was addressing the OP build issue; are you
perhaps concerned solely with the correct operation of curl-config?

In that case, it looks to me as if the generated curl-config --libs statements:

        if test "Xyes" = "Xno" -o "Xyes" = "Xyes"; then
          echo ${CURLLIBDIR}-lcurl -lnghttp2 -lidn2 -lssh -lpsl -lssl -lcrypto
-lldap -llber -lbrotlidec -lbrotlidec -lz

based on curl-config.in:

        if test "X@ENABLE_SHARED@" = "Xno" -o "X@REQUIRE_LIB_DEPS@" = "Xyes"; then
          echo ${CURLLIBDIR}-lcurl @LIBCURL_LIBS@

REQUIRE_LIB_DEPS should be no, derived from configure.ac:

if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno"
then
    REQUIRE_LIB_DEPS=no
else
    REQUIRE_LIB_DEPS=yes
fi
AC_SUBST(REQUIRE_LIB_DEPS)
AM_CONDITIONAL(USE_EXPLICIT_LIB_DEPS, test x$REQUIRE_LIB_DEPS = xyes)

but for Cygwin link_all_deplibs remains defaulted to unknown, so either that
variable should be set in configure, or that condition should perhaps be changed
to:

if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" != "Xyes"

with appropriate bug reports and changes to be made upstream if possible.

If you can provide any more insight on the autotools generation of curl-config,
I can add that to the upstream bug report.

-- 
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada

This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.
[Data in IEC units and prefixes, physical quantities in SI.]
-------------- next part --------------
$HOME\src\cygwin\git\git-2.28.0-1.x86_64\inst\usr\libexec\git-core\git-http-fetch.exe
  C:\...\cygwin64\bin\cygcurl-4.dll
    C:\...\cygwin64\bin\cygbrotlidec-1.dll
      C:\...\cygwin64\bin\cygwin1.dll
        C:\Windows\system32\KERNEL32.dll
          C:\Windows\system32\ntdll.dll
          C:\Windows\system32\KERNELBASE.dll
      C:\...\cygwin64\bin\cygbrotlicommon-1.dll
    C:\...\cygwin64\bin\cygcrypto-1.1.dll
      C:\...\cygwin64\bin\cygz.dll
    C:\...\cygwin64\bin\cygidn2-0.dll
      C:\...\cygwin64\bin\cygiconv-2.dll
      C:\...\cygwin64\bin\cygintl-8.dll
      C:\...\cygwin64\bin\cygunistring-2.dll
    C:\...\cygwin64\bin\cyglber-2-4-2.dll
    C:\...\cygwin64\bin\cygldap-2-4-2.dll
      C:\...\cygwin64\bin\cygsasl2-3.dll
      C:\...\cygwin64\bin\cygssl-1.1.dll
    C:\...\cygwin64\bin\cygnghttp2-14.dll
    C:\...\cygwin64\bin\cygpsl-5.dll
    C:\...\cygwin64\bin\cygssh-4.dll
      C:\...\cygwin64\bin\cyggcc_s-seh-1.dll
      C:\...\cygwin64\bin\cyggssapi_krb5-2.dll
        C:\...\cygwin64\bin\cygk5crypto-3.dll
          C:\...\cygwin64\bin\cygkrb5support-0.dll
        C:\...\cygwin64\bin\cygkrb5-3.dll
          C:\...\cygwin64\bin\cygcom_err-2.dll
  C:\...\cygwin64\bin\cygpcre2-8-0.dll

$HOME\src\cygwin\git\git-2.28.0-1.x86_64\inst\usr\libexec\git-core\git-http-push.exe
  C:\...\cygwin64\bin\cygcurl-4.dll
    C:\...\cygwin64\bin\cygbrotlidec-1.dll
      C:\...\cygwin64\bin\cygwin1.dll
        C:\Windows\system32\KERNEL32.dll
          C:\Windows\system32\ntdll.dll
          C:\Windows\system32\KERNELBASE.dll
      C:\...\cygwin64\bin\cygbrotlicommon-1.dll
    C:\...\cygwin64\bin\cygcrypto-1.1.dll
      C:\...\cygwin64\bin\cygz.dll
    C:\...\cygwin64\bin\cygidn2-0.dll
      C:\...\cygwin64\bin\cygiconv-2.dll
      C:\...\cygwin64\bin\cygintl-8.dll
      C:\...\cygwin64\bin\cygunistring-2.dll
    C:\...\cygwin64\bin\cyglber-2-4-2.dll
    C:\...\cygwin64\bin\cygldap-2-4-2.dll
      C:\...\cygwin64\bin\cygsasl2-3.dll
      C:\...\cygwin64\bin\cygssl-1.1.dll
    C:\...\cygwin64\bin\cygnghttp2-14.dll
    C:\...\cygwin64\bin\cygpsl-5.dll
    C:\...\cygwin64\bin\cygssh-4.dll
      C:\...\cygwin64\bin\cyggcc_s-seh-1.dll
      C:\...\cygwin64\bin\cyggssapi_krb5-2.dll
        C:\...\cygwin64\bin\cygk5crypto-3.dll
          C:\...\cygwin64\bin\cygkrb5support-0.dll
        C:\...\cygwin64\bin\cygkrb5-3.dll
          C:\...\cygwin64\bin\cygcom_err-2.dll
  C:\...\cygwin64\bin\cygexpat-1.dll
  C:\...\cygwin64\bin\cygpcre2-8-0.dll

$HOME\src\cygwin\git\git-2.28.0-1.x86_64\inst\usr\libexec\git-core\git-imap-send.exe
  C:\...\cygwin64\bin\cygcrypto-1.1.dll
    C:\...\cygwin64\bin\cygwin1.dll
      C:\Windows\system32\KERNEL32.dll
        C:\Windows\system32\ntdll.dll
        C:\Windows\system32\KERNELBASE.dll
    C:\...\cygwin64\bin\cygz.dll
  C:\...\cygwin64\bin\cygcurl-4.dll
    C:\...\cygwin64\bin\cygbrotlidec-1.dll
      C:\...\cygwin64\bin\cygbrotlicommon-1.dll
    C:\...\cygwin64\bin\cygidn2-0.dll
      C:\...\cygwin64\bin\cygiconv-2.dll
      C:\...\cygwin64\bin\cygintl-8.dll
      C:\...\cygwin64\bin\cygunistring-2.dll
    C:\...\cygwin64\bin\cyglber-2-4-2.dll
    C:\...\cygwin64\bin\cygldap-2-4-2.dll
      C:\...\cygwin64\bin\cygsasl2-3.dll
      C:\...\cygwin64\bin\cygssl-1.1.dll
    C:\...\cygwin64\bin\cygnghttp2-14.dll
    C:\...\cygwin64\bin\cygpsl-5.dll
    C:\...\cygwin64\bin\cygssh-4.dll
      C:\...\cygwin64\bin\cyggcc_s-seh-1.dll
      C:\...\cygwin64\bin\cyggssapi_krb5-2.dll
        C:\...\cygwin64\bin\cygk5crypto-3.dll
          C:\...\cygwin64\bin\cygkrb5support-0.dll
        C:\...\cygwin64\bin\cygkrb5-3.dll
          C:\...\cygwin64\bin\cygcom_err-2.dll
  C:\...\cygwin64\bin\cygpcre2-8-0.dll

$HOME\src\cygwin\git\git-2.28.0-1.x86_64\inst\usr\libexec\git-core\git-remote-ftp.exe
  C:\...\cygwin64\bin\cygcurl-4.dll
    C:\...\cygwin64\bin\cygbrotlidec-1.dll
      C:\...\cygwin64\bin\cygwin1.dll
        C:\Windows\system32\KERNEL32.dll
          C:\Windows\system32\ntdll.dll
          C:\Windows\system32\KERNELBASE.dll
      C:\...\cygwin64\bin\cygbrotlicommon-1.dll
    C:\...\cygwin64\bin\cygcrypto-1.1.dll
      C:\...\cygwin64\bin\cygz.dll
    C:\...\cygwin64\bin\cygidn2-0.dll
      C:\...\cygwin64\bin\cygiconv-2.dll
      C:\...\cygwin64\bin\cygintl-8.dll
      C:\...\cygwin64\bin\cygunistring-2.dll
    C:\...\cygwin64\bin\cyglber-2-4-2.dll
    C:\...\cygwin64\bin\cygldap-2-4-2.dll
      C:\...\cygwin64\bin\cygsasl2-3.dll
      C:\...\cygwin64\bin\cygssl-1.1.dll
    C:\...\cygwin64\bin\cygnghttp2-14.dll
    C:\...\cygwin64\bin\cygpsl-5.dll
    C:\...\cygwin64\bin\cygssh-4.dll
      C:\...\cygwin64\bin\cyggcc_s-seh-1.dll
      C:\...\cygwin64\bin\cyggssapi_krb5-2.dll
        C:\...\cygwin64\bin\cygk5crypto-3.dll
          C:\...\cygwin64\bin\cygkrb5support-0.dll
        C:\...\cygwin64\bin\cygkrb5-3.dll
          C:\...\cygwin64\bin\cygcom_err-2.dll
  C:\...\cygwin64\bin\cygpcre2-8-0.dll

$HOME\src\cygwin\git\git-2.28.0-1.x86_64\inst\usr\libexec\git-core\git-remote-ftps.exe
  C:\...\cygwin64\bin\cygcurl-4.dll
    C:\...\cygwin64\bin\cygbrotlidec-1.dll
      C:\...\cygwin64\bin\cygwin1.dll
        C:\Windows\system32\KERNEL32.dll
          C:\Windows\system32\ntdll.dll
          C:\Windows\system32\KERNELBASE.dll
      C:\...\cygwin64\bin\cygbrotlicommon-1.dll
    C:\...\cygwin64\bin\cygcrypto-1.1.dll
      C:\...\cygwin64\bin\cygz.dll
    C:\...\cygwin64\bin\cygidn2-0.dll
      C:\...\cygwin64\bin\cygiconv-2.dll
      C:\...\cygwin64\bin\cygintl-8.dll
      C:\...\cygwin64\bin\cygunistring-2.dll
    C:\...\cygwin64\bin\cyglber-2-4-2.dll
    C:\...\cygwin64\bin\cygldap-2-4-2.dll
      C:\...\cygwin64\bin\cygsasl2-3.dll
      C:\...\cygwin64\bin\cygssl-1.1.dll
    C:\...\cygwin64\bin\cygnghttp2-14.dll
    C:\...\cygwin64\bin\cygpsl-5.dll
    C:\...\cygwin64\bin\cygssh-4.dll
      C:\...\cygwin64\bin\cyggcc_s-seh-1.dll
      C:\...\cygwin64\bin\cyggssapi_krb5-2.dll
        C:\...\cygwin64\bin\cygk5crypto-3.dll
          C:\...\cygwin64\bin\cygkrb5support-0.dll
        C:\...\cygwin64\bin\cygkrb5-3.dll
          C:\...\cygwin64\bin\cygcom_err-2.dll
  C:\...\cygwin64\bin\cygpcre2-8-0.dll

$HOME\src\cygwin\git\git-2.28.0-1.x86_64\inst\usr\libexec\git-core\git-remote-http.exe
  C:\...\cygwin64\bin\cygcurl-4.dll
    C:\...\cygwin64\bin\cygbrotlidec-1.dll
      C:\...\cygwin64\bin\cygwin1.dll
        C:\Windows\system32\KERNEL32.dll
          C:\Windows\system32\ntdll.dll
          C:\Windows\system32\KERNELBASE.dll
      C:\...\cygwin64\bin\cygbrotlicommon-1.dll
    C:\...\cygwin64\bin\cygcrypto-1.1.dll
      C:\...\cygwin64\bin\cygz.dll
    C:\...\cygwin64\bin\cygidn2-0.dll
      C:\...\cygwin64\bin\cygiconv-2.dll
      C:\...\cygwin64\bin\cygintl-8.dll
      C:\...\cygwin64\bin\cygunistring-2.dll
    C:\...\cygwin64\bin\cyglber-2-4-2.dll
    C:\...\cygwin64\bin\cygldap-2-4-2.dll
      C:\...\cygwin64\bin\cygsasl2-3.dll
      C:\...\cygwin64\bin\cygssl-1.1.dll
    C:\...\cygwin64\bin\cygnghttp2-14.dll
    C:\...\cygwin64\bin\cygpsl-5.dll
    C:\...\cygwin64\bin\cygssh-4.dll
      C:\...\cygwin64\bin\cyggcc_s-seh-1.dll
      C:\...\cygwin64\bin\cyggssapi_krb5-2.dll
        C:\...\cygwin64\bin\cygk5crypto-3.dll
          C:\...\cygwin64\bin\cygkrb5support-0.dll
        C:\...\cygwin64\bin\cygkrb5-3.dll
          C:\...\cygwin64\bin\cygcom_err-2.dll
  C:\...\cygwin64\bin\cygpcre2-8-0.dll

$HOME\src\cygwin\git\git-2.28.0-1.x86_64\inst\usr\libexec\git-core\git-remote-https.exe
  C:\...\cygwin64\bin\cygcurl-4.dll
    C:\...\cygwin64\bin\cygbrotlidec-1.dll
      C:\...\cygwin64\bin\cygwin1.dll
        C:\Windows\system32\KERNEL32.dll
          C:\Windows\system32\ntdll.dll
          C:\Windows\system32\KERNELBASE.dll
      C:\...\cygwin64\bin\cygbrotlicommon-1.dll
    C:\...\cygwin64\bin\cygcrypto-1.1.dll
      C:\...\cygwin64\bin\cygz.dll
    C:\...\cygwin64\bin\cygidn2-0.dll
      C:\...\cygwin64\bin\cygiconv-2.dll
      C:\...\cygwin64\bin\cygintl-8.dll
      C:\...\cygwin64\bin\cygunistring-2.dll
    C:\...\cygwin64\bin\cyglber-2-4-2.dll
    C:\...\cygwin64\bin\cygldap-2-4-2.dll
      C:\...\cygwin64\bin\cygsasl2-3.dll
      C:\...\cygwin64\bin\cygssl-1.1.dll
    C:\...\cygwin64\bin\cygnghttp2-14.dll
    C:\...\cygwin64\bin\cygpsl-5.dll
    C:\...\cygwin64\bin\cygssh-4.dll
      C:\...\cygwin64\bin\cyggcc_s-seh-1.dll
      C:\...\cygwin64\bin\cyggssapi_krb5-2.dll
        C:\...\cygwin64\bin\cygk5crypto-3.dll
          C:\...\cygwin64\bin\cygkrb5support-0.dll
        C:\...\cygwin64\bin\cygkrb5-3.dll
          C:\...\cygwin64\bin\cygcom_err-2.dll
  C:\...\cygwin64\bin\cygpcre2-8-0.dll



More information about the Cygwin mailing list