public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
From: Ken Brown <kbrown@cornell.edu>
To: cygwin@cygwin.com
Subject: Re: [ANNOUNCEMENT] Updated: curl 7.71.1-1
Date: Tue, 11 Aug 2020 07:13:51 -0400	[thread overview]
Message-ID: <11d99d00-55fb-f6a2-893d-f5ebb6e7a14b@cornell.edu> (raw)
In-Reply-To: <71031f78-b1be-aec2-4e54-72ff49e07543@SystematicSw.ab.ca>

On 8/10/2020 9:27 PM, Brian Inglis wrote:
> 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}

Are you saying that you still get the Libs.private line in libcurl.pc if you 
rebuild the curl package with my patch?  That's not what I see.

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

The OP build issue resulted from the incorrect operation of curl-config.  I gave 
you a patch that restores the operation of curl-config to the way it was in 
previous curl builds.  That should fix the OP build issue.

> 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 want to look into ways of fixing curl-config different from what Yaakov 
did, that's fine; you're the maintainer.  All I did was look at Yaakov's patch 
and port it to curl 7.71.1, that being a quick and easy way to fix the reported 
problem.

Ken

  reply	other threads:[~2020-08-11 11:14 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-20  2:34 Brian Inglis
2020-07-20 17:58 ` ASSI
2020-08-10 18:16   ` Brian Inglis
2020-08-10 20:11     ` Marco Atzeri
     [not found] ` <CA+kUOa=-AJxr_2TaZoNerOquMGR8FCzi7hg3DyuvntuQqpAVOg@mail.gmail.com>
2020-08-09 18:28   ` Adam Dinwoodie
2020-08-09 21:48     ` Brian Inglis
2020-08-10  3:32       ` Brian Inglis
2020-08-10 14:52       ` Ken Brown
2020-08-10 17:33         ` Brian Inglis
2020-08-10 19:14           ` Ken Brown
2020-08-10 20:52             ` Adam Dinwoodie
2020-08-11  1:27             ` Brian Inglis
2020-08-11 11:13               ` Ken Brown [this message]
2020-08-11 11:27                 ` Adam Dinwoodie
2020-08-11 22:00                   ` Brian Inglis
2020-08-14 18:19                     ` Brian Inglis
2020-08-15 22:44                     ` [ANNOUNCEMENT] Updated: curl 7.71.1-2 Brian Inglis
2020-08-16 19:28                       ` Adam Dinwoodie
2020-08-11  5:15       ` [ANNOUNCEMENT] Updated: curl 7.71.1-1 ASSI
2020-08-11  5:55         ` Brian Inglis
2020-08-11 15:03           ` ASSI
2020-08-11 22:00             ` Brian Inglis

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=11d99d00-55fb-f6a2-893d-f5ebb6e7a14b@cornell.edu \
    --to=kbrown@cornell.edu \
    --cc=cygwin@cygwin.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 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).