diff options
-rw-r--r-- | config/global/download.in | 17 | ||||
-rwxr-xr-x | configure | 2 | ||||
-rw-r--r-- | scripts/functions | 23 |
3 files changed, 38 insertions, 4 deletions
diff --git a/config/global/download.in b/config/global/download.in index 7a4cf482..fd651cbd 100644 --- a/config/global/download.in +++ b/config/global/download.in @@ -89,7 +89,7 @@ endif # USE_MIRROR config CONNECT_TIMEOUT int - prompt "connection timeout" + prompt "Connection timeout" default 10 help From the curl manual: @@ -109,6 +109,21 @@ config CONNECT_TIMEOUT Note that this value applies equally to wget if you have that installed. +config DOWNLOAD_MAX_CHUNKS + int + prompt "Maximum number of // chunks" + default 5 + range 1 10 + help + If you have aria2 installed, then it will be used to download files. + Aria2 can split the download in chunks, and download those chunks in // + which can be interesting to speed up the download. + + On the other hand, using many chunks, or even chunking in general, may + be seen by some site admins as being kind of unfair, or even as a DoS. + That's why the range of acceptable values is [1..10], and the default + is 5 (aria2's default). + config ONLY_DOWNLOAD bool prompt "Stop after downloading tarballs" @@ -354,7 +354,7 @@ has_or_abort prog=libtool ver='\(GNU libtool.*\) (2[[:digit:]]*\.|1\.6[[:digit:]]*\.|1\.5\.[2-9][[:digit:]]+)' \ err="'libtool' 1.5.26 or above was not found" has_or_abort prog=stat ver='GNU coreutils' -has_or_abort prog="curl wget" +has_or_abort prog="aria2c curl wget" has_or_abort prog=cvs has_or_abort prog=patch has_or_abort prog=tar diff --git a/scripts/functions b/scripts/functions index 8d318724..fbf86f3b 100644 --- a/scripts/functions +++ b/scripts/functions @@ -348,12 +348,31 @@ CT_DoGetFileCurl() { || true } +# Download using aria2 +# Usage: CT_DoGetFileAria2 <URL> +CT_DoGetFileAria2() { + # Note: comments about curl method (above) are also valid here + # Plus: default progress indicator is a single line, so use verbose log + # so that the CT-NG's ouput is 'live'. + CT_DoExecLog ALL aria2c -l - -s ${CT_DOWNLOAD_MAX_CHUNKS} -m 3 --retry-wait 5 -t ${CT_CONNECT_TIMEOUT} -p "$1" \ + || CT_DoExecLog ALL aria2c -l - -s ${CT_DOWNLOAD_MAX_CHUNKS} -m 3 --retry-wait 5 -t ${CT_CONNECT_TIMEOUT} "$1" \ + || true +} + +# OK, just look if we have them... +_aria2c=$(CT_Which aria2c) _wget=$(CT_Which wget) _curl=$(CT_Which curl) -# Wrapper function to call one of curl or wget + +# Wrapper function to call one of, in order of preference: +# aria2 +# curl +# wget # Usage: CT_DoGetFile <URL> CT_DoGetFile() { - if [ -n "${_curl}" ]; then + if [ -n "${_aria2c}" ]; then + CT_DoGetFileAria2 "$1" + elif [ -n "${_curl}" ]; then CT_DoGetFileCurl "$1" elif [ -n "${_wget}" ]; then CT_DoGetFileWget "$1" |