summaryrefslogtreecommitdiff
path: root/guix/build/download.scm
Commit message (Collapse)AuthorAge
* download: Continue handshake upon TLS warning alerts.Ludovic Courtès2017-05-02
| | | | | | | | | | This allows us to download from site such as <https://fusionforge.int-evry.fr> where the server does not recognize the server name passed via the 'server_name' extension. * guix/build/download.scm (tls-wrap): Catch 'gnutls-error' around 'handshake'. Upon ERROR/WARNING-ALERT-RECEIVED, print a message and call 'handshake'.
* cache: Work around 'time-monotonic' bug in Guile 2.2.2.Ludovic Courtès2017-04-22
| | | | | | | * guix/cache.scm (time-monotonic) [guile-2.2]: New variable. * tests/cache.scm (time-monotonic) [guile-2.2]: Likewise. * guix/build/download.scm (time-monotonic) [guile-2.2]: Adjust comment: it's a 2.2.2 bug.
* download: Work around Guile 2.2 bug with 'time-monotonic' objects.Ludovic Courtès2017-04-22
| | | | * guix/build/download.scm (time-monotonic) [guile-2.2]: New variable.
* download: Properly parse ftp:// URLs that lack user info.Ludovic Courtès2017-03-28
| | | | | | | | | | | Fixes a regression introduced in a4f542341511f33ece18d16b68118214da8143ec. Reported by Hartmut Goebel. * guix/build/download.scm (ftp-fetch): Account for the case where 'uri-userinfo' returns #f. Remove the case where it returns "" since that cannot happen.
* download: Handle username and password properties for FTP URIs.Roel Janssen2017-03-21
| | | | * guix/build/download.scm (ftp-fetch): Process username and password from a URI.
* http-client: Avoid name clash with 'open-connection-for-uri' in 2.2.0.Ludovic Courtès2017-03-18
| | | | | | | | | * guix/build/download.scm (open-connection-for-uri): Add note about same-named binding in Guile 2.2.0. * guix/http-client.scm: Use 'guix:open-connection-for-uri' for the procedure coming from (guix build download). * guix/scripts/lint.scm: Likewise. * guix/scripts/substitute.scm: Likewise.
* build: Require Guile >= 2.0.9.Ludovic Courtès2017-03-18
| | | | | | | | | | | | | | | | * configure.ac: Bump requirement to 2.0.9. * doc/guix.texi (Requirements): Adjust accordingly. * README (Requirements): Likewise. * build-aux/download.scm: Remove workaround for <http://bugs.gnu.org/13095>. * guix/build/download.scm: Likewise. (http-fetch)[post-2.0.7?]: Remove. Remove conditional code for not POST-2.0.7?. * guix/http-client.scm: Remove workaround for <http://bugs.gnu.org/13095>. (http-fetch)[post-2.0.7?]: Remove. Remove conditional code for not POST-2.0.7?. * guix/serialization.scm (read-latin1-string): Remove mention of 2.0.9. * tests/nar.scm: Use (ice-9 control). (let/ec): Remove.
* download: Export '%x509-certificate-directory'.Ludovic Courtès2017-03-13
| | | | | | * guix/build/download.scm (%x509-certificate-directory): Export, as expected by (guix scripts pull) since commit 7e81d699de7a2c924a048175516fe1ac3820d8e6.
* download: Protect against dangling symlinks in $SSL_CERT_DIR.Ludovic Courtès2016-12-16
| | | | | | | | | Reported by Christopher Baines <mail@cbaines.net> in <https://bugs.gnu.org/25213>. * guix/build/download.scm (make-credendials-with-ca-trust-files): Check whether FILE exists before calling 'set-certificate-credentials-x509-trust-file!'.
* download: Verify TLS certificates unless asked not to.Ludovic Courtès2016-11-07
| | | | | | | | | | | | | | | | | | | Fixes <http://bugs.gnu.org/24466>. Reported by Leo Famulari <leo@famulari.name>. * guix/build/download.scm (%x509-certificate-directory): New variable. (make-credendials-with-ca-trust-files, peer-certificate) (assert-valid-server-certificate, print-tls-certificate-error): New procedures. Add 'print-tls-certificate-error' as an exception printer for 'tls-certificate-error'. (tls-wrap): Add #:verify-certificate? parameter and honor it. (open-connection-for-uri): Likewise. (http-fetch): Likewise. (url-fetch): Likewise. * guix/download.scm (url-fetch)[builder]: Pass #:verify-certificate? #f. * guix/scripts/lint.scm (probe-uri): Add case for 'tls-certificate-error'. (validate-uri): Likewise. * doc/guix.texi (Invoking guix download): Mention 'SSL_CERT_DIR'.
* download: Pass the raw file name to content-addressed mirrors.Ludovic Courtès2016-07-31
| | | | | * guix/build/download.scm (url-fetch)[content-addressed-uris]: Call 'strip-store-file-name' on FILE before passing it to 'make-url'.
* download: Prepare to support the 'guix publish' /file URLs.Ludovic Courtès2016-07-20
| | | | | | | * guix/download.scm (%content-addressed-mirrors): Add 'file' parameter to the lambda. * guix/build/download.scm (url-fetch)[content-addressed-uris]: Adjust accordingly.
* download: Use basic authentication when userinfo is present in URI.David Thompson2016-06-29
| | | | | | | * guix/download.scm (url-fetch): Include (guix base64) module on the build-side. * guix/build/download.scm (http-fetch): Add "Authorization" header when userinfo is present in the URI.
* download: Default to a 10s connection establishment timeout.Ludovic Courtès2016-05-27
| | | | | | | | * guix/build/download.scm (ftp-fetch): Add #:timeout and pass it to 'ftp-open'. (http-fetch): Add #:timeout and pass it to 'open-connection-for-uri' and in recursive calls. (url-fetch): Add #:timeout and pass it to 'http-fetch' and 'ftp-fetch'.
* download: Use URI objects for content-addressed mirrors.Ludovic Courtès2016-05-27
| | | | | | | | This fixes a bug whereby 'http-fetch' would be passed a string instead of a URI object. * guix/build/download.scm (url-fetch): Rename 'content-addressed-urls' to 'content-addressed-uris', and call 'string->uri'.
* build: Accept dates with space-padded hour field.Ricardo Wurmus2016-05-16
| | | | | * guix/build/download.scm: Replace "parse-rfc-822-date" from the (web http) module.
* download: Support content-addressed mirrors.Ludovic Courtès2016-05-14
| | | | | | | | | | | | | * guix/download.scm (%content-addressed-mirrors) (%content-addressed-mirror-file): New variables. * guix/download.scm (url-fetch)[builder]: Define 'value-from-environment. Pass #:hashes and #:content-addressed-mirrors to 'url-fetch'. Define "guix download hashes" environment variable. * guix/build/download.scm (url-fetch): Add #:content-addressed-mirrors and #:hashes. [content-addressed-urls]: New variable. Use it.
* substitute: Better abbreviate substitute URL in progress report.Ludovic Courtès2016-04-20
| | | | | | | | Suggested by Danny Milosavljevic <dannym@scratchpost.org>. * guix/build/download.scm (nar-uri-abbreviation): New procedure. * guix/scripts/substitute.scm (process-substitution): Use it instead of 'store-path-abbreviation'.
* download: 'uri-abbreviation' can abbreviate the URI's basename.Ludovic Courtès2016-04-20
| | | | | * guix/build/download.scm (uri-abbreviation): Use 'ellipsis' instead of "...". Abbreviate the basename of PATH if needed.
* download: Add "%COMPAT" to the priority string.Ludovic Courtès2016-04-20
| | | | | | Fixes <http://bugs.gnu.org/23311>. * guix/build/download.scm (tls-wrap): Add 'set-session-priorities!' call.
* download: Add 'current-terminal-columns' parameter.Ludovic Courtès2016-04-15
| | | | | * guix/build/download.scm (current-terminal-columns): New variable. (progress-proc): Use it instead of the hard-coded "80".
* download: Send an ANSI erase-in-line sequence in addition to CR.Ludovic Courtès2016-04-15
| | | | | | | | Partly fixes <http://bugs.gnu.org/22536>. Reported by Danny Milosavljevic <dannym@scratchpost.org>. * guix/build/download.scm (progress-proc): Send an ANSI erase-in-line sequence.
* download: Follow HTTP 307 "Temporary Redirection".Alex Kost2016-04-14
| | | | | | | | Fixes <http://bugs.gnu.org/23275>. Reported by Albin Söderqvist <albin@fripost.org>. * guix/build/download.scm (http-fetch): Follow redirections upon 307. This is what 'binaries.openttd.org' does.
* download: Add 'close-connection'.Ludovic Courtès2016-03-17
| | | | | | | | | | Partially fixes <http://bugs.gnu.org/20145>. * guix/build/download.scm (add-weak-reference): Remove. (%tls-ports): New variable. (register-tls-record-port): New procedure. (tls-wrap): Use it instead of 'add-weak-reference'. (close-connection): New procedure.
* download: Always use AI_ADDRCONFIG when resolving host names.Ludovic Courtès2015-11-12
| | | | | | | * guix/build/download.scm (open-socket-for-uri): Always pass AI_ADDRCONFIG to 'getaddrinfo' as recommended in the fine Guile manual. * guix/ftp-client.scm (ftp-open): Ditto.
* download: Add timeout parameter for connections.Ludovic Courtès2015-11-12
| | | | | | | | | * guix/build/download.scm (ensure-uri): New procedure. (current-http-proxy): New variable. (open-socket-for-uri): Copy from Guile commit aaea5b2, but add #:timeout parameter and use 'connect*' instead of 'connect'. (open-connection-for-uri): Add #:timeout parameter and pass it to 'open-socket-for-uri'.
* download: Check whether HORIZONTAL ELLIPSIS can be encoded.Ludovic Courtès2015-10-01
| | | | | * guix/build/download.scm (ellipsis): New procedure. (store-path-abbreviation): Use it.
* download: Don't abbreviate things that are not store items.Ludovic Courtès2015-09-24
| | | | | | | | Fixes a regression introduced in a8be7b9a. * guix/build/download.scm (store-path-abbreviation): Return STORE-PATH if it's not an actual store path. Fixes an out-of-range exception when running tests/substitute.scm and tests/store.scm.
* download: Fix some minor progress-logging regressions.Steve Sprang2015-09-23
| | | | | | | | * guix/build/download.scm (string-pad-middle): Allow resulting padded string to overflow. (store-url-abbreviation): Remove unnecessary procedure. (progress-proc): Use BASENAME as default for parameter 'abbreviation'. (url-fetch): Display extra newlines for readability.
* download: Only show hours in the elapsed time if necessary.Steve Sprang2015-09-17
| | | | | | | * guix/build/download.scm (seconds->string): Conditionally include hours in timestamp. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* substitute: Improve readability of download progress report.Steve Sprang2015-09-16
| | | | | | | | | | | | * guix/build/download.scm (string-pad-middle, store-url-abbreviation, store-path-abbreviation): New procedures. (progress-proc): Add #:abbreviation parameter and use it. Generate a better indeterminate progress string. * guix/scripts/substitute.scm (assert-valid-narinfo): Add newlines to output. (process-substitution): Use byte-count->string and store-path-abbreviation. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
* download: Avoid type errors when formatting download progress output.Steve Sprang2015-09-14
| | | | | * guix/build/download.scm (nearest-exact-integer): New procedure. (seconds->string, byte-count->string): Use it.
* build: Improve information density and appearance of download progress output.Steve Sprang2015-09-08
| | | | | | | | | | * guix/build/download.scm (seconds->string): New function. (byte-count->string): New function. (progress-bar): New function. (throughput->string): Remove function. (progress-proc): Display base file name, elapsed time, and progress bar. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* download: Remove spurious warning about 'https_proxy'.Ludovic Courtès2015-07-17
| | | | | * guix/build/download.scm (open-connection-for-uri)[with-https-proxy]: Warn about 'https_proxy' only when 'getenv' returns a non-empty string.
* download: Work around Guile small-receive-buffer bug.Ludovic Courtès2015-05-06
| | | | | | | | | | | | | | | | Previously, code using directly (guix build download) was still affected by <http://bugs.gnu.org/15368>. This includes source derivations, the 'guix download' command, and (guix gnu-maintenance). 'guix substitute' was unaffected since it used (guix http-client), which already had the fix. * guix/http-client.scm (open-socket-for-uri): Remove. (http-fetch): Remove #:buffered? argument to 'open-socket-for-uri'; use 'setvbuf' instead. * guix/scripts/substitute.scm (fetch): Likewise. * guix/build/download.scm (open-socket-for-uri): New procedure, taken from guix/http-client.scm, but without the #:buffered? parameter.
* download: Reinstate buffering on connection sockets.Ludovic Courtès2015-05-06
| | | | | * guix/build/download.scm (open-connection-for-uri): Reinstate call to 'setvbuf' inadvertently removed in d17551d9.
* download: Simplify 'open-connection-for-uri' to support HTTP proxies.Ludovic Courtès2015-05-01
| | | | | | | | | | | | | | Partly fixes <http://bugs.gnu.org/20402>. Reported by Joshua Randall <jcrandall@alum.mit.edu>. * guix/build/download.scm (open-connection-for-uri): Rewrite to be a small wrapper around 'open-socket-for-uri'. This procedure was initially introduced in d14ecda to work around the lack of NSS modules during bootstrap but that has become unnecessary since 0621349, which introduced a bootstrap Guile that uses static NSS modules (from commit d3b5972.) On Guile >= 2.0.10, this allows the 'http_proxy' environment variable to be used.
* download: Comment on lack of progress report with chunked encoding.Ludovic Courtès2015-02-27
| | | | * guix/build/download.scm (progress-proc): Add comment.
* download: Measure and display the throughput.Ludovic Courtès2015-02-27
| | | | | | * guix/build/download.scm (duration->seconds, throughput->string): New procedures. (progress-proc): Measure and display the throughput.
* download: Abstract the receive buffer size.Ludovic Courtès2015-02-27
| | | | | * guix/build/download.scm (%http-receive-buffer-size): New variable. (progress-proc, tls-wrap, http-fetch): Use it.
* download: Cope with Guile 2.0.6 or earlier.Mark H Weaver2015-02-24
| | | | | | * guix/build/download.scm: Do not attempt to support relative URIs in "Location" headers if 'declare-relative-uri-header!' is not present. This is the case for Guile 2.0.6 or earlier.
* download: Handle HTTP redirects to relative URI references.Mark H Weaver2015-02-19
| | | | | | | | | | | Fixes <http://bugs.gnu.org/19840>. Reported by Ricardo Wurmus <rekado@elephly.net>. * guix/build/download.scm: On Guile 2.0.11 or earlier, redefine the http "Location" header to accept relative URIs. (resolve-uri-reference): New exported procedure. (http-fetch): Use 'resolve-uri-reference' to resolve redirections. * guix/http-client.scm (http-fetch): Use 'resolve-uri-reference'
* download: Export 'maybe-expand-mirrors'.Ludovic Courtès2014-12-29
| | | | | | * guix/build/download.scm (uri-vicinity, maybe-expand-mirrors): New procedures. (url-fetch): Remove them from here.
* lint: Add 'home-page' checker.Ludovic Courtès2014-12-28
| | | | | | * guix/build/download.scm (open-connection-for-uri): Export. * guix/scripts/lint.scm (probe-uri, check-home-page): New procedures. (%checkers): Add 'home-page' checker.
* download: Add "Accept: */*" to the headers.Ludovic Courtès2014-10-19
| | | | | | | Fixes downloads from https://alioth.debian.org. Reported by John Darrington <jmd@gnu.org>. * guix/build/download.scm (http-fetch)[headers]: Add 'Accept'.
* download: Use the 'SERVER NAME' TLS extension when possible.Ludovic Courtès2014-09-22
| | | | | | | | | Fixes <http://bugs.gnu.org/18526>. Reported by Mark H. Weaver. * guix/build/download.scm (tls-wrap): Add 'server' parameter. Call 'set-session-server-name!' when (gnutls) defines it. (open-connection-for-uri): Adjust 'tls-wrap' call accordingly.
* download: Enlarge your receive buffer.Ludovic Courtès2014-05-23
| | | | | | | * guix/build/download.scm (open-connection-for-uri): Remove call to 'setsockopt'. * guix/http-client.scm (open-socket-for-uri)[rmem-max, buffer-size]: New variables. Add call to 'setsockopt'.
* download: Improve progress report output.Ludovic Courtès2014-04-16
| | | | | * guix/build/download.scm (url-fetch): Make current-output-port unbuffered.
* download: Don't use 'http-get*' on Guile 2.0.10+.Ludovic Courtès2014-03-25
| | | | | | * guix/build/download.scm (http-fetch)[post-2.0.7?]: Use 'string->number' and numeric comparison. This fixes version comparison with "2.0.10" and subsequent 2.0 releases.
* download: Provide a 'User-Agent' field in HTTP requests.Ludovic Courtès2014-02-10
| | | | | | | | | Fixes <http://bugs.gnu.org/16703>. Reported by Raimon Grau <raimonster@gmail.com>. * guix/build/download.scm (http-fetch)[headers]: New variable. Pass it as #:headers or #:extra-headers to 'http-get' and 'http-get*'.