threads / discuss / 53325

Git configure with static curl is failing

Subject: Git configure with static curl is failing

## tl;dr

4 messages between Apr 26, 2020 and Apr 29, 2020.

replies: 3people: 3as markdown or json

Paul Smith· Apr 26, 2020, 19:01 UTC · lore
Hi all;

I'm trying to build Git with my own static curl, not the system curl, and this isn't working due to an issue in configure.ac's curl locating code.

I invoke configure with --with-curl=/other/curl where /other/curl/include/curl and /other/curl/lib/libcurl.a and /other/curl/bin/curl-config all exist and work correctly.

When configure.ac attempts to local curl, it fails; config.log shows:
  configure:5387: my-gcc -o conftest -O2 \
   -I/other/curl/include -L/other/curl/lib conftest.c -lcurl >&5
  /other/curl/lib/libcurl.a(libcurl_la-content_encoding.o):content_encoding.c:function gzip_init_writer: error: undefined reference to 'zlibVersion'

and many other errors, because the link line is missing needed libraries. If curl as a .so this wouldn't matter since libcurl.so would contain references to the libraries it needs and ld.so would handle this, but a static library obviously doesn't have that.

The problem appears to be that configure.ac is not using curl-config to obtain the correct options to link with curl. If I run /other/curl/bin/curl-config --lib I get the proper flags:

  $ /other/curl/bin/curl-config --libs
  -L/other/curl/lib -lcurl -lssl -lz -lcrypto -ldl -lpthread

If configure.ac tried to use $CURLDIR/bin/curl-config --libs to obtain the right linker options, then the link test for curl would work.

brian m. carlson· Apr 26, 2020, 19:47 UTC · re: Paul Smith · lore

Re: Git configure with static curl is failing

On 2020-04-26 at 19:01:54, Paul Smith wrote:
Show 9 quoted lines
> The problem appears to be that configure.ac is not using curl-config to
> obtain the correct options to link with curl.  If I run
> /other/curl/bin/curl-config --lib I get the proper flags:
> 
>   $ /other/curl/bin/curl-config --libs
>   -L/other/curl/lib -lcurl -lssl -lz -lcrypto -ldl -lpthread
> 
> If configure.ac tried to use $CURLDIR/bin/curl-config --libs to obtain
> the right linker options, then the link test for curl would work.

It doesn't surprise me that configure.ac doesn't use curl-config. The configure script is generally not used by the main developers in favor of just using the makefile itself.

While we should fix that, the makefile does use curl-config, so if you just use it with any appropriate options without running configure, it will probably work for you.

-- 
brian m. carlson: Houston, Texas, US
OpenPGP: https://keybase.io/bk2204
Jeff King· Apr 26, 2020, 23:14 UTC · re: brian m. carlson · lore

Re: Git configure with static curl is failing

On Sun, Apr 26, 2020 at 07:47:29PM +0000, brian m. carlson wrote:
Show 18 quoted lines
> On 2020-04-26 at 19:01:54, Paul Smith wrote:
> > The problem appears to be that configure.ac is not using curl-config to
> > obtain the correct options to link with curl.  If I run
> > /other/curl/bin/curl-config --lib I get the proper flags:
> > 
> >   $ /other/curl/bin/curl-config --libs
> >   -L/other/curl/lib -lcurl -lssl -lz -lcrypto -ldl -lpthread
> > 
> > If configure.ac tried to use $CURLDIR/bin/curl-config --libs to obtain
> > the right linker options, then the link test for curl would work.
> 
> It doesn't surprise me that configure.ac doesn't use curl-config.  The
> configure script is generally not used by the main developers in favor
> of just using the makefile itself.
> 
> While we should fix that, the makefile does use curl-config, so if you
> just use it with any appropriate options without running configure, it
> will probably work for you.

Usually, yes, though it doesn't use `curl-config --cflags` properly. See the series at [1]. What's there now, though might be enough for Paul's case (if it's just a link-time issue).

I do think the autoconf code could do a better job of using curl-config, along with a few other improvements. I left some thoughts in that thread.

-Peff
[1] https://lore.kernel.org/git/20200326080540.GA2200522@coredump.intra.peff.net/
Paul Smith· Apr 29, 2020, 01:47 UTC · re: Jeff King · lore

Re: Git configure with static curl is failing

On Sun, 2020-04-26 at 19:14 -0400, Jeff King wrote:
> Usually, yes, though it doesn't use `curl-config --cflags` properly.
> See the series at [1].
Heh.  Some aspects of that thread look familiar :).

Yes, adding 'NO_CURL= CURLDIR=/path/to/curl' to the make line to force it did fix the problem in my environment.

FWIW, not only is the version of GNU make shipped with MacOS very old and apparently never to be updated, but it has been reported that there are bugs in it that don't appear even in the vanilla version of GNU make 3.81. There may come a point where continuing to support that older version won't be worth it...

← back to recent threads