mirror of
https://github.com/mirror/wget.git
synced 2024-12-26 21:00:26 +08:00
221 lines
10 KiB
Plaintext
221 lines
10 KiB
Plaintext
Compiling From Repository Sources
|
|
|
|
To reduce bandwidth and needless updates, the source code repository
|
|
does not contain automatically-generated files, even when these are
|
|
normally present in the distribution tarballs. Therefore, to build GNU
|
|
Wget from the sources in the repository, you'll need to have one or
|
|
more of the following (note that gettext, OpenSSL, GnuTLS, libidn2,
|
|
libiconv, libpsl, libpcre, pkg-config, libmetalink and GnuPG are not
|
|
absolutely required):
|
|
|
|
* [20]autoconf (currently, GNU Wget requires version 2.64). This is
|
|
needed to generate the configure script from configure.in. This is
|
|
not required when building from a tarball distribution; only when
|
|
building from repository sources.
|
|
|
|
* [21]automake (currently, GNU Wget requires version 1.10.1). This is
|
|
needed for generating the Makefile.in templates that the configure
|
|
script uses to generate the Makefiles. As with autoconf, it is not
|
|
required when building from a tarball distribution; only when
|
|
building from repository sources.
|
|
|
|
* [22]flex is needed to generate the CSS-parsing code.
|
|
|
|
* [23]Perl, if you wish to generate the wget(1) manpage, or run the
|
|
tests in the tests/ sub directory. Tarball distributions include an
|
|
already-generated wget.1 manual. The command "make check" runs the
|
|
test suite written in perl and python (see below). To execute all the tests
|
|
you need libwww-perl and libio-socket-ssl-perl perl library.
|
|
GNU/Linux distros likely have these two libraries packaged.
|
|
If not, install them directly with "perl -MCPAN -e 'install Bundle::LWP'"[24].
|
|
If that fails then you most likely don't have the CPAN module installed.
|
|
First download [25]CPAN and [26]install it, then try again the above command.
|
|
Now "make check" should pass most of the tests in the test suite.
|
|
|
|
* [45]Python3, if you want to run the tests in the testenv/ subdirectory.
|
|
Keep in mind that "make check" will try to run all the Perl and Python3
|
|
tests. More information about the test suite below in the section
|
|
"Testing and development".
|
|
|
|
* [27]texinfo in order to generate Info, PostScript and/or HTML
|
|
documentation. You don't need texinfo in order to generate the
|
|
wget(1) manpage; however, note that the manpage does not include
|
|
the full documentation. Tarball distributions include the
|
|
already-generated documentation in these formats.
|
|
|
|
* [28]gettext, if you wish to compile with NLS (Native Language
|
|
Support), which is enabled by default. If you do not have gettext,
|
|
you can compile without it by specifying --disable-nls to the
|
|
./configure script. This is true regardless of where you obtained
|
|
the source you're building. NOTE: if you get errors about
|
|
AM_GNU_GETTEXT and/or AM_INTL_SUBDIR, you probably have a buggy
|
|
version of GNU m4. Upgrade to the latest version. You may also need
|
|
to export M4=<new m4 path>, to be sure that autoconf/automake use
|
|
it instead of the old one.
|
|
|
|
* [29]GnuTLS to allow encrypted data transfer (HTTPS).
|
|
You need the header files and the library installed.
|
|
As an alternative, you can use [30]OpenSSL by specifying
|
|
--with-ssl=openssl to the ./configure script.
|
|
If you do not want HTTPS support, specify --without-ssl to the
|
|
./configure script.
|
|
If you want to compile+link a non-system library version use
|
|
--with-libgnutls-prefix (or if having pkg-config: see description
|
|
below).
|
|
|
|
* [30]OpenSSL to allow encrypted data transfer (HTTPS) an
|
|
alternative to [31]GnuTLS.
|
|
You need the header files and the library installed.
|
|
If you want to compile+link a non-system library version use
|
|
--with-libssl-prefix (or if having pkg-config: see description below).
|
|
|
|
* [31]libidn2 is required for IDN/IRI support (non-ASCII characters
|
|
within what would otherwise be URLs).
|
|
|
|
* [32]libiconv is required on non-GNU systems, for IDN/IRI support.
|
|
On GNU systems, the functionality provided by libiconv is already
|
|
present in the system libraries.
|
|
|
|
* [33]git is used to fetch gnulib files through the bootstrap.sh script.
|
|
|
|
* [34]libpsl is required for using a public suffix list to check for valid
|
|
cookie domains. You need the header files and the library installed.
|
|
|
|
* [35]libpcre is required for using Perl-compatible regular expressions
|
|
with --accept-regex and --reject-regex. You need the header files and
|
|
the library installed to compile and link Wget with PCRE support.
|
|
|
|
* [36]pkg-config helps the ./configure script to find installed libraries.
|
|
Most libraries provide a pkg-config file (.pc extension) with
|
|
information about dependencies, header file and library locations.
|
|
Distributions deliver their specific .pc file to each library.
|
|
If you want to compile+link against your own library version, make a
|
|
copy of the appropriate .pc file and amend it to your needs (e.g. edit
|
|
the line starting with prefix=). Before you execute the ./configure
|
|
script, set (and export) PKG_CONFIG_PATH to the directory where you
|
|
saved the .pc file. Example:
|
|
$ PKG_CONFIG_PATH="." ./configure
|
|
|
|
* [46]libmetalink is needed to enable Metalink files support.
|
|
|
|
* [47]GnuPG with GPGME is used to verify GPG-signed Metalink resources.
|
|
|
|
* [48]libcares is needed to bind DNS resolving to a given IP address.
|
|
The command line options --dns-servers and --bind-dns-address are
|
|
only available when configured with --with-cares.
|
|
|
|
* [49]gperf is required by some gnulib modules, most notably "unicase". You
|
|
need the application installed on the machine to compile Wget from git.
|
|
|
|
|
|
For those who might be confused as to what to do once they check out
|
|
the source code, considering configure and Makefile do not yet exist at
|
|
that point, a shell script called bootstrap has been provided. After
|
|
calling ./bootstrap you're ready to build GNU Wget in the normal
|
|
fashion, with ./configure and make.
|
|
|
|
So, to sum up, after checking out the source code as described above,
|
|
you may proceed as follows:
|
|
1. Change to the topmost GNU Wget directory:
|
|
$ cd wget # assumes you've cloned a repository to "./wget"
|
|
2. Generate all the automatically-generated files required prior to
|
|
configuring the package:
|
|
$ ./bootstrap (or: bash ./bootstrap)
|
|
3. Configure the package and compile it:
|
|
$ ./configure --enable-assert [some_parameters]
|
|
$ make
|
|
4. Hack, compile, test, hack, compile, test...
|
|
$ src/wget --version
|
|
GNU Wget 1.12-devel (9cb2563197bc)
|
|
|
|
Testing and development
|
|
|
|
All developers are requested to enable the assertions on their development
|
|
builds to ensure a stable codebase. Assertions are added to state certain
|
|
assumptions about the code and its data which all developers should be mindful
|
|
of. To enable assertions, run the configure command with the --enable-assert
|
|
option, like this:
|
|
|
|
$ ./configure --enable-assert [other configure options]
|
|
|
|
Both the Perl and Python test suites (test/ and testenv/) include support for GDB and Valgrind.
|
|
The environment variables GDB_TESTS and VALGRIND_TESTS are available to
|
|
enable such wrappers. If specified, Wget would be run through either of them
|
|
during the test. For example:
|
|
|
|
$ cd testenv
|
|
$ VALGRIND_TESTS=1 ./Test-O.py
|
|
|
|
That would execute Test-O.py test case, but running Wget through Valgrind.
|
|
|
|
GDB has preference over Valgrind. If both variables have been asserted,
|
|
Wget would be run through GDB.
|
|
|
|
If you run a test case through GDB, please bear in mind that it could give
|
|
a false negative. This is because some tests that expect Wget to fail
|
|
rely on Wget's return code. However, when run through GDB, its return code
|
|
will always be zero, causing the test to claim failure. This wrapper for
|
|
GDB is, however, very useful to tackle bugs, allowing one to write a test case
|
|
for some specific bug and then using GDB to fix it more easily. Otherwise,
|
|
a dedicated server would have to be set up and write a custom CGI just to reproduce
|
|
that bug, which might be tedious. Tests should only be run through GDB for that purpose.
|
|
|
|
|
|
Copyright (C) 2008, 2010, 2014-2015, 2018-2024 Free Software
|
|
Foundation, Inc.
|
|
License GPLv3+: GNU GPL version 3 or later
|
|
<https://www.gnu.org/licenses/gpl.html>.
|
|
This is free software: you are free to change and redistribute it.
|
|
There is NO WARRANTY, to the extent permitted by law.
|
|
|
|
Originally written by Hrvoje Niksic <hniksic@xemacs.org>.
|
|
|
|
* [36]Edit
|
|
* [37]Comments
|
|
* [38]Info
|
|
* [39]Attachments
|
|
* More Actions:
|
|
[Raw Text................] Do
|
|
|
|
* [40]MoinMoin Powered
|
|
* [41]Python Powered
|
|
* [42]GPL licensed
|
|
* [43]Valid HTML 4.01
|
|
__________________________________________________________________
|
|
|
|
All content (C) 2007 Free Software Foundation. For terms of use,
|
|
redistribution, and modification, please see the [45]WikiLicense page.
|
|
|
|
References
|
|
|
|
20. https://www.gnu.org/software/autoconf/
|
|
21. https://www.gnu.org/software/automake/
|
|
22. https://github.com/westes/flex
|
|
23. https://www.perl.org/
|
|
24. http://search.cpan.org/dist/libwww-perl/lib/Bundle/LWP.pm
|
|
25. http://search.cpan.org/CPAN/authors/id/A/AN/ANDK/CPAN-1.9402.tar.gz
|
|
26. http://apthorpe.cynistar.net/code/configuring_cpan.html
|
|
27. https://www.gnu.org/software/texinfo/
|
|
28. https://www.gnu.org/software/gettext/
|
|
29. https://www.gnu.org/software/gnutls/
|
|
30. https://www.openssl.org/
|
|
31. https://www.gnu.org/software/libidn/#libidn2
|
|
32. https://www.gnu.org/software/libiconv/
|
|
33. https://git-scm.com/
|
|
34. https://github.com/rockdaboot/libpsl
|
|
35. https://www.pcre.org
|
|
36. http://wget.addictivecode.org/CompilingRepoSources?action=edit&editor=text
|
|
37. http://wget.addictivecode.org/CompilingRepoSources
|
|
38. http://wget.addictivecode.org/CompilingRepoSources?action=info
|
|
39. http://wget.addictivecode.org/CompilingRepoSources?action=AttachFile
|
|
40. https://moinmo.in/
|
|
41. https://moinmo.in/Python
|
|
42. https://moinmo.in/GPL
|
|
43. https://validator.w3.org/check?uri=referer
|
|
44. http://wget.addictivecode.org/WikiLicense
|
|
45. https://www.python.org/
|
|
46. https://launchpad.net/libmetalink
|
|
47. https://www.gnupg.org
|
|
48. https://c-ares.haxx.se/
|
|
49. https://www.gnu.org/software/gperf/
|