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
--
Problem reports: https://cygwin.com/problems.html
FAQ: https://cygwin.com/faq/
Documentation: https://cygwin.com/docs.html
Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple