Hi,
cURL 7.36.0 fails to build when configured with the --disable-manual option:
/bin/sh ../libtool --tag=CC --mode=link gcc -O2 -Wno-system-headers -o curl curl-tool_binmode.o curl-tool_bname.o curl-tool_cb_dbg.o curl-tool_cb_hdr.o curl-tool_cb_prg.o curl-tool_cb_rea.o curl-tool_cb_see.o curl-tool_cb_wrt.o curl-tool_cfgable.o curl-tool_convert.o curl-tool_dirhie.o curl-tool_doswin.o curl-tool_easysrc.o curl-tool_formparse.o curl-tool_getparam.o curl-tool_getpass.o curl-tool_help.o curl-tool_helpers.o curl-tool_homedir.o curl-tool_hugehelp.o curl-tool_libinfo.o curl-tool_main.o curl-tool_metalink.o curl-tool_mfiles.o curl-tool_msgs.o curl-tool_operate.o curl-tool_operhlp.o curl-tool_panykey.o curl-tool_paramhlp.o curl-tool_parsecfg.o curl-tool_setopt.o curl-tool_sleep.o curl-tool_urlglob.o curl-tool_util.o curl-tool_vms.o curl-tool_writeenv.o curl-tool_writeout.o curl-tool_xattr.o ../lib/curl-strtoofft.o ../lib/curl-strdup.o ../lib/curl-rawstr.o ../lib/curl-nonblock.o ../lib/curl-warnless.o ../lib/libcurl.la -lz libtool: link: gcc -O2 -Wno-system-headers -o .libs/curl curl-tool_binmode.o curl-tool_bname.o curl-tool_cb_dbg.o curl-tool_cb_hdr.o curl-tool_cb_prg.o curl-tool_cb_rea.o curl-tool_cb_see.o curl-tool_cb_wrt.o curl-tool_cfgable.o curl-tool_convert.o curl-tool_dirhie.o curl-tool_doswin.o curl-tool_easysrc.o curl-tool_formparse.o curl-tool_getparam.o curl-tool_getpass.o curl-tool_help.o curl-tool_helpers.o curl-tool_homedir.o curl-tool_hugehelp.o curl-tool_libinfo.o curl-tool_main.o curl-tool_metalink.o curl-tool_mfiles.o curl-tool_msgs.o curl-tool_operate.o curl-tool_operhlp.o curl-tool_panykey.o curl-tool_paramhlp.o curl-tool_parsecfg.o curl-tool_setopt.o curl-tool_sleep.o curl-tool_urlglob.o curl-tool_util.o curl-tool_vms.o curl-tool_writeenv.o curl-tool_writeout.o curl-tool_xattr.o ../lib/curl-strtoofft.o ../lib/curl-strdup.o ../lib/curl-rawstr.o ../lib/curl-nonblock.o ../lib/curl-warnless.o ../lib/.libs/libcurl.so -lz -Wl,-rpath -Wl,/usr/local/lib curl-tool_operate.o: In function `operate': tool_operate.c:(.text+0x3891): undefined reference to `hugehelp' collect2: error: ld returned 1 exit status Makefile:750: recipe for target 'curl' failed make[2]: *** [curl] Error 1 make[2]: Leaving directory '/data/sources/curl-7.36.0/src' Makefile:624: recipe for target 'all' failed make[1]: *** [all] Error 2 make[1]: Leaving directory '/data/sources/curl-7.36.0/src' Makefile:676: recipe for target 'all-recursive' failed make: *** [all-recursive] Error 1
The issue appears to be related to this commit:
https://github.com/bagder/curl/commit/0af2322bc6dec10612d33de4b100d5dbc7be739f
I believe the following fix is enough to fix it:
diff --git a/src/tool_hugehelp.h b/src/tool_hugehelp.h index 442579e..29e5c88 100644 --- a/src/tool_hugehelp.h +++ b/src/tool_hugehelp.h @@ -23,6 +23,8 @@ ***************************************************************************/ #include "tool_setup.h" +#ifdef USE_MANUAL void hugehelp(void); +#endif /* USE_MANUAL */ #endif /* HEADER_CURL_TOOL_HUGEHELP_H */
Best regards,
Remi Gacogne
Nuage Labs SAS
It looks like the submitted patch is not enough, sorry.
Ack, it is due to the src/tools_hugehelp.c file we ship in the archive. Remove that and re-run configure and I think it works. It did for me now...
Fixed in git now with https://github.com/bagder/curl/commit/38d582ff5
Now the src/tool_hugefile.c gets generated with the necessary #else logic for dsiabled manual builds as well! This fixes it for me.
Thank you for the quick response.
However, it does not fix it for me because the src/tool_hugefile.c file does not get re-generated. Simply doing:
does work, though. Not sure how the src/tool_hugefile.c got into the release tarball since it does not seem to be in the git tree (and is removed by "make distclean"), or am I missing something?
I said "Remove that and re-run configure", and that's what you did and confirmed it works....
src/tool_hugehelp.c gets generated and is included in the tarballs just to avoid people having to have the necessary infrastructure to generate it. The fix I've pushed does however make the default file have an #ifdef section so that the --disable-manual option works with that file too.
I consider this case closed.
Hi Daniel,
Sorry I didn't see you mentioned it was necessary to remove the file.
I agree your commit does indeed fix this issue, thanks again.
Thanks for confirming. Closing this!
Hi Daniel,
The following sequence still does not work:
$ tar xf curl-7.36.0.tar.bz2
$ cd curl-7.36.0
$ patch -p1 < ../commit_38d582ff5.patch
$ ./configure --disable-manual
$ make
Was the patch supposed to work this way?
Or, for the curl-7.36.0 release, we should use a patch that remove the src/tool_hugehelp.c file as well?
The C file will then be generated with the proper code that works.