curl / Mailing Lists / curl-library / Single Mail
Buy commercial curl support from WolfSSL. We help you work out your issues, debug your libcurl applications, use the API, port to new platforms, add new features and more. With a team lead by the curl founder himself.

Re: configure failing on 7.81.0 on armv7l, i686: error: couldn't find libraries for gethostbyname()

From: Satadru Pramanik via curl-library <curl-library_at_lists.haxx.se>
Date: Wed, 5 Jan 2022 12:46:35 -0500

This PR fixes the issue, at least for linux:
https://github.com/curl/curl/pull/8230

--- a/m4/curl-functions.m4 2022-01-03 16:36:46.000000000 +0000
+++ b/m4/curl-functions.m4 2022-01-05 17:34:33.635107486 +0000
_at__at_ -6515,16 +6515,21 _at__at_ dnl changes contained within this macro.

 AC_DEFUN([CURL_RUN_IFELSE], [
    case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
+ darwin*)
+ old=$DYLD_LIBRARY_PATH
+ DYLD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export DYLD_LIBRARY_PATH
+ AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4)
+ DYLD_LIBRARY_PATH=$old # restore
+ ;;
+ *)
+ old=$LD_LIBRARY_PATH
+ LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export LD_LIBRARY_PATH
+ AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4)
+ LD_LIBRARY_PATH=$old # restore
+ ;;
    esac
-
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
-
- eval "export $library_path_var"
- AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4)
- eval "$library_path_var=\$old" # restore
 ])

 dnl CURL_COVERAGE

On Wed, Jan 5, 2022 at 12:29 PM Satadru Pramanik <satadru_at_gmail.com> wrote:

> Relevant commit is:
> https://github.com/curl/curl/commit/ba0657c343f0c3eff28f7d56cff3196c6443e0b9#diff-b63dc43a7804261e71d648333b4dd8ea0f67a64edb5f422381e9610501c79bc3
>
> When I run autoreconf -fiv after replacing the above code with:
>
> dnl CURL_RUN_IFELSE
> dnl -------------------------------------------------
> dnl Wrapper macro to use instead of AC_RUN_IFELSE. It
> dnl sets LD_LIBRARY_PATH locally for this run only, from the
> dnl CURL_LIBRARY_PATH variable. It keeps the LD_LIBRARY_PATH
> dnl changes contained within this macro.
>
> AC_DEFUN([CURL_RUN_IFELSE], [
> case $host_os in
> darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
> *) library_path_var=LD_LIBRARY_PATH ;;
> esac
>
> eval "old=$$library_path_var"
> eval "echo \$old = $$library_path_var"
> eval "echo LD_LIBRARY_PATH = $LD_LIBRARY_PATH"
> eval "echo CURL_LIBRARY_PATH = $CURL_LIBRARY_PATH"
> eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
> eval "echo \$library_path_var is $library_path_var"
> eval "echo \$library_path_var = $$library_path_var"
> eval "export $library_path_var"
> AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4)
> eval "$library_path_var=\$old" # restore
> ])
> I get:
>
> checking if compiler accepts some basic options... 23359library_path_var =
> 23359library_path_var
> LD_LIBRARY_PATH = /usr/local/lib
> CURL_LIBRARY_PATH =
> LD_LIBRARY_PATH is LD_LIBRARY_PATH
> LD_LIBRARY_PATH = 23359library_path_var
>
> The problem is $$ gives the PID, and you can not escape in M4 as per
> https://mbreen.com/m4.html#quotes .
>
> On Wed, Jan 5, 2022 at 11:28 AM Satadru Pramanik <satadru_at_umich.edu>
> wrote:
>
>> I get this error on both armv7l & i686 trying to run the configure script
>> on ChromeOS inside Chromebrew with GCC 11.2.
>> The configure script from curl 7.80.0 works.
>>
>> checking if X/Open network library is required... no
>> checking for gethostbyname... no
>> checking for gethostbyname in -lnsl... no
>> checking for gethostbyname in -lsocket... no
>> checking for gethostbyname in -lwatt... no
>> checking for gethostbyname with both nsl and socket libs... no
>> checking for gethostbyname for Minix 3... no
>> checking for gethostbyname for eCos... no
>> checking for gethostbyname for AmigaOS bsdsocket.library... no
>> checking for gethostbyname in -lnetwork... no
>> checking for gethostbyname in -lnet... no
>> configure: error: couldn't find libraries for gethostbyname()
>>
>> on x86_64 it succeeds though:
>> checking if X/Open network library is required... no
>> checking for gethostbyname... yes
>>
>> on i686 and armv7l I see this in config.log from the 7.81.0 configure
>> script:
>> configure:21721: checking for gethostbyname
>> configure:21721: i686-cros-linux-gnu-gcc -o conftest -O2 -pipe -flto
>> -ffat-lto-objects -fPIC -fuse-ld=gold -flto conftest.c >&5
>> /usr/local/libexec/gcc/i686-cros-linux-gnu/11/cc1: error while loading
>> shared libraries: libisl.so.23: cannot open shared object file: No such
>> file or directory
>> as: error while loading shared libraries: libopcodes-2.37.so: cannot
>> open shared object file: No such file or directory
>> configure:21721: $? = 1
>> configure: failed program was:
>> ...
>> configure:21721: result: no
>>
>>
>> on i686 I see this in config.log from the 7.80.0 configure script:
>> configure:21675: result: no
>> configure:21679: checking for gethostbyname
>> configure:21679: i686-cros-linux-gnu-gcc -o conftest -O2 -pipe -flto
>> -ffat-lto-objects -fPIC -fuse-ld=gold -Werror-implicit-function-declaration
>> -Wno-system-headers -Wenum-conversion -flto conftest.c >&5
>> configure:21679: $? = 0
>> configure:21679: result: yes
>>
>> Looks like some sort of LIBRARY_PATH issue in the 7.81.0 configure script?
>>
>> FYI, autoreconf -fi also gives a broken configure script.
>>
>> Thanks,
>>
>> Satadru Pramanik
>> Chromebrew dev team
>>
>


-- 
Unsubscribe: https://lists.haxx.se/listinfo/curl-library
Etiquette:   https://curl.haxx.se/mail/etiquette.html
Received on 2022-01-05