aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-03-16 18:13:02 +0100
committerLudovic Courtès <ludo@gnu.org>2016-03-16 18:34:53 +0100
commit71e2065a38cf2641b7eb8c557b0f043f5a42a649 (patch)
tree441454804855b4c78d4378652884af9f3c930d69
parent1ac94ae1666b9f4a0991174fb43076d31be0ee72 (diff)
downloadguix-71e2065a38cf2641b7eb8c557b0f043f5a42a649.tar
guix-71e2065a38cf2641b7eb8c557b0f043f5a42a649.tar.gz
substitute: Honor client-provided empty URL list.
Before that, 'guix build --substitute-urls=""' would lead to using the daemon's own URL list instead of the empty list. The 'or*' hack, which is to blame, had become unnecessary since commit fb4bf72be3fbc23bca35ba4b842b7e1517ef0e3a. Reported by Mark H Weaver <mhw@netris.org>. * guix/scripts/substitute.scm (or*): Remove. (%cache-urls): Use 'or' instead of 'or*'. * tests/store.scm ("substitute query, alternating URLs"): Add test with empty URL list. * doc/guix.texi (Common Build Options): Mention the empty string.
-rw-r--r--doc/guix.texi3
-rwxr-xr-xguix/scripts/substitute.scm10
-rw-r--r--tests/store.scm6
3 files changed, 10 insertions, 9 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 05ce7858d5..ba4fe1a826 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -3983,6 +3983,9 @@ This means that substitutes may be downloaded from @var{urls}, provided
they are signed by a key authorized by the system administrator
(@pxref{Substitutes}).
+When @var{urls} is the empty string, substitutes are effectively
+disabled.
+
@item --no-substitutes
Do not use substitutes for build products. That is, always build things
locally instead of allowing downloads of pre-built binaries
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index b707accff6..1ab18d0260 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -953,15 +953,9 @@ substitutes may be unavailable\n")))))
found."
(assoc-ref (daemon-options) option))
-(define-syntax-rule (or* a b)
- (let ((first a))
- (if (or (not first) (string-null? first))
- b
- first)))
-
(define %cache-urls
- (match (and=> (or* (find-daemon-option "untrusted-substitute-urls") ;client
- (find-daemon-option "substitute-urls")) ;admin
+ (match (and=> (or (find-daemon-option "untrusted-substitute-urls") ;client
+ (find-daemon-option "substitute-urls")) ;admin
string-tokenize)
((urls ...)
urls)
diff --git a/tests/store.scm b/tests/store.scm
index 3d32d52758..f7db7df966 100644
--- a/tests/store.scm
+++ b/tests/store.scm
@@ -450,7 +450,11 @@
(with-store s ;the right one again
(set-build-options s #:use-substitutes? #t
#:substitute-urls (%test-substitute-urls))
- (has-substitutes? s o))))))
+ (has-substitutes? s o))
+ (with-store s ;empty list of URLs
+ (set-build-options s #:use-substitutes? #t
+ #:substitute-urls '())
+ (not (has-substitutes? s o)))))))
(test-assert "substitute"
(with-store s