[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug-wget] Build issues when building Wget2 1.99.1 with MinGW
From: |
Eli Zaretskii |
Subject: |
[Bug-wget] Build issues when building Wget2 1.99.1 with MinGW |
Date: |
Sat, 12 May 2018 11:42:34 +0300 |
> From: Tim Rühsen <address@hidden>
> Date: Tue, 1 May 2018 15:15:26 +0200
>
> GNU Wget2 is the successor of GNU Wget, a file and recursive website
> downloader.
>
> Designed and written from scratch it wraps around libwget, that provides
> the basic functions needed by a web client.
>
> Wget2 works multi-threaded and uses many features to allow fast operation.
>
> In many cases Wget2 downloads much faster than Wget1.x due to HTTP zlib
> compression, parallel connections and use of If-Modified-Since HTTP header.
Thanks. I've built this using mingw.org's MinGW GCC and runtime
support, and found the following issues that affect the build:
. Several issues with Gnulib headers and functions, already reported
to Gnulib mailing list.
. The README says libmicrohttpd is required for running the test
suite, but it doesn't tell which optional libmicrohttpd features
are expected/recommended for the testing. For example, is HTTPS
support by libmicrohttpd required? I presume yes, because
otherwise HTTPS cannot be tested. Likewise for other options -- it
would be good to know how to build libmicrohttpd for optimal
coverage of the test suite. (This is especially important on
Windows, since the existing binary of libmicrohttpd distributed by
its developers was built without dependencies, so no HTTPS support,
for example; I needed to build my own port.)
. The configure time test for external regexp seems to assume that no
library needs to be added to the link command line to get that
functionality. In my case, I needed a -lregex added, but the only
way to do that seems to set LIBS at configure time.
. Compiling lib/thread.c produces a warning:
In file included from thread.c:43:0:
thread.c: In function 'wget_thread_self':
../lib/glthread/thread.h:353:5: warning: return makes integer from pointer
without a cast [-Wint-conversion]
gl_thread_self_func ()
^~~~~~~~~~~~~~~~~~~~~~
thread.c:279:9: note: in expansion of macro 'gl_thread_self'
return gl_thread_self();
^~~~~~~~~~~~~~
This is because wget.h does this:
typedef unsigned long wget_thread_id_t;
which conflicts with gl_thread_t, which on Windows is a pointer to
a structure.
To fix this, we could either make wget_thread_id_t a wide enough
type (unsigned long is not wide enough for 64-bit Windows, we need
uintptr_t instead), and then use an explicit cast in
wget_thread_self; or wget_thread_id_t should be an opaque data
type, like gl_thread_t, but then the rest of the code shouldn't
treat it as a simple scalar integral type.
. Compiling programs in examples/ produces this warning from libtool:
CCLD getstream.exe
libtool: warning: '-no-install' is ignored for i686-pc-mingw32
libtool: warning: assuming '-no-fast-install' instead
. "make install" installs wget2_noinstall.exe, which is presumably a
mistake. It does NOT install wget2.info, perhaps because docs were
not built (I have neither Doxygen nor Pandoc on that system).
Thanks.