* guix/store.scm (&nix-error): Rename to...
(&store-error): ... this, and adjust users.
(&nix-connection-error): Rename to...
(&store-connection-error): ... this, and adjust users.
(&nix-protocol-error): Rename to...
(&store-protocol-error): ... this, adjust users.
(&nix-error, &nix-connection-error, &nix-protocol-error): Define these
condition types and their getters as deprecrated aliases.
* build-aux/run-system-tests.scm, guix/derivations.scm,
guix/grafts.scm, guix/scripts/challenge.scm,
guix/scripts/graph.scm, guix/scripts/lint.scm,
guix/scripts/offload.scm, guix/serialization.scm,
guix/ssh.scm, guix/tests.scm, guix/ui.scm,
tests/derivations.scm, tests/gexp.scm, tests/guix-daemon.sh,
tests/packages.scm, tests/store.scm, doc/guix.texi: Adjust to use the
new names.
(define (built-derivations* drv)
(lambda (store)
- (guard (c ((nix-protocol-error? c)
+ (guard (c ((store-protocol-error? c)
(values #f store)))
(values (build-derivations store drv) store))))
invalid, for instance because it is the result of an aborted or failed
build.)
-A @code{&nix-protocol-error} condition is raised if @var{path} is not
+A @code{&store-protocol-error} condition is raised if @var{path} is not
prefixed by the store directory (@file{/gnu/store}).
@end deffn
;;; Error conditions.
;;;
-(define-condition-type &derivation-error &nix-error
+(define-condition-type &derivation-error &store-error
derivation-error?
(derivation derivation-error-derivation))
items)))
(define (references* items)
- (guard (c ((nix-protocol-error? c)
+ (guard (c ((store-protocol-error? c)
;; As a last resort, build DRV and query the references of the
;; build result.
"Return the hash of ITEM, a store item, if ITEM was built locally.
Otherwise return #f."
(lambda (store)
- (guard (c ((nix-protocol-error? c)
+ (guard (c ((store-protocol-error? c)
(values #f store)))
(if (locally-built? store item)
(values (query-path-hash store item) store)
information available in the local store or using information about
substitutes."
(lambda (store)
- (guard (c ((nix-protocol-error? c)
+ (guard (c ((store-protocol-error? c)
(match (substitutable-path-info store (list item))
((info)
(values (substitutable-references info) store))
(define (try system)
(catch #t
(lambda ()
- (guard (c ((nix-protocol-error? c)
+ (guard (c ((store-protocol-error? c)
(emit-warning package
(format #f (G_ "failed to create ~a derivation: ~a")
system
- (nix-protocol-error-message c))))
+ (store-protocol-error-message c))))
((message-condition? c)
(emit-warning package
(format #f (G_ "failed to create ~a derivation: ~a")
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
(format (current-error-port) "@ build-remote ~a ~a~%"
(derivation-file-name drv) (build-machine-name machine))
- (guard (c ((nix-protocol-error? c)
+ (guard (c ((store-protocol-error? c)
(format (current-error-port)
(G_ "derivation '~a' offloaded to '~a' failed: ~a~%")
(derivation-file-name drv)
(build-machine-name machine)
- (nix-protocol-error-message c))
+ (store-protocol-error-message c))
(let* ((inferior (false-if-exception (remote-inferior session)))
(space (false-if-exception
(node-free-disk-space inferior))))
;; Similar to serialize.cc in Nix.
-(define-condition-type &nar-error &error ; XXX: inherit from &nix-error ?
+(define-condition-type &nar-error &error ; XXX: inherit from &store-error ?
nar-error?
(file nar-error-file) ; file we were restoring, or #f
(port nar-error-port)) ; port from which we read
missing)
(('protocol-error message)
(raise (condition
- (&nix-protocol-error (message message) (status 42)))))
+ (&store-protocol-error (message message) (status 42)))))
(('error key args ...)
(raise (condition
- (&nix-protocol-error
+ (&store-protocol-error
(message (call-with-output-string
(lambda (port)
(print-exception port #f key args))))
(status 43)))))
(_
(raise (condition
- (&nix-protocol-error
+ (&store-protocol-error
(message "unknown error while sending files over SSH")
(status 44)))))))))
current-store-protocol-version ;for internal use
mcached
+ &store-error store-error?
+ &store-connection-error store-connection-error?
+ store-connection-error-file
+ store-connection-error-code
+ &store-protocol-error store-protocol-error?
+ store-protocol-error-message
+ store-protocol-error-status
+
+ ;; Deprecated forms for '&store-error' et al.
&nix-error nix-error?
&nix-connection-error nix-connection-error?
nix-connection-error-file
(define-deprecated/alias nix-server-socket store-connection-socket)
-(define-condition-type &nix-error &error
- nix-error?)
+(define-condition-type &store-error &error
+ store-error?)
-(define-condition-type &nix-connection-error &nix-error
- nix-connection-error?
- (file nix-connection-error-file)
- (errno nix-connection-error-code))
+(define-condition-type &store-connection-error &store-error
+ store-connection-error?
+ (file store-connection-error-file)
+ (errno store-connection-error-code))
+
+(define-condition-type &store-protocol-error &store-error
+ store-protocol-error?
+ (message store-protocol-error-message)
+ (status store-protocol-error-status))
+
+(define-deprecated/alias &nix-error &store-error)
+(define-deprecated/alias nix-error? store-error?)
+(define-deprecated/alias &nix-connection-error &store-connection-error)
+(define-deprecated/alias nix-connection-error? store-connection-error?)
+(define-deprecated/alias nix-connection-error-file
+ store-connection-error-file)
+(define-deprecated/alias nix-connection-error-code
+ store-connection-error-code)
+(define-deprecated/alias &nix-protocol-error &store-protocol-error)
+(define-deprecated/alias nix-protocol-error? store-protocol-error?)
+(define-deprecated/alias nix-protocol-error-message
+ store-protocol-error-message)
+(define-deprecated/alias nix-protocol-error-status
+ store-protocol-error-status)
-(define-condition-type &nix-protocol-error &nix-error
- nix-protocol-error?
- (message nix-protocol-error-message)
- (status nix-protocol-error-status))
(define-syntax-rule (system-error-to-connection-error file exp ...)
"Catch 'system-error' exceptions and translate them to
-'&nix-connection-error'."
+'&store-connection-error'."
(catch 'system-error
(lambda ()
exp ...)
(lambda args
(let ((errno (system-error-errno args)))
- (raise (condition (&nix-connection-error
+ (raise (condition (&store-connection-error
(file file)
(errno errno))))))))
(define (open-unix-domain-socket file)
"Connect to the Unix-domain socket at FILE and return it. Raise a
-'&nix-connection-error' upon error."
+'&store-connection-error' upon error."
(let ((s (with-fluids ((%default-port-encoding #f))
;; This trick allows use of the `scm_c_read' optimization.
(socket PF_UNIX SOCK_STREAM 0)))
(define (open-inet-socket host port)
"Connect to the Unix-domain socket at HOST:PORT and return it. Raise a
-'&nix-connection-error' upon error."
+'&store-connection-error' upon error."
(let ((sock (with-fluids ((%default-port-encoding #f))
;; This trick allows use of the `scm_c_read' optimization.
(socket PF_UNIX SOCK_STREAM 0))))
;; Connection failed, so try one of the other addresses.
(close s)
(if (null? rest)
- (raise (condition (&nix-connection-error
+ (raise (condition (&store-connection-error
(file host)
(errno (system-error-errno args)))))
(loop rest))))))))))
"Connect to the daemon at URI, a string that may be an actual URI or a file
name."
(define (not-supported)
- (raise (condition (&nix-connection-error
+ (raise (condition (&store-connection-error
(file uri)
(errno ENOTSUP)))))
;; One of the 'write-' or 'read-' calls below failed, but this is
;; really a connection error.
(raise (condition
- (&nix-connection-error (file (or port uri))
- (errno EPROTO))
+ (&store-connection-error (file (or port uri))
+ (errno EPROTO))
(&message (message "build daemon handshake failed"))))))
(let*-values (((port)
(or port (connect-to-daemon uri)))
(not (eof-object? (lookahead-u8 p))))
(read-int p)
1)))
- (raise (condition (&nix-protocol-error
+ (raise (condition (&store-protocol-error
(message error)
(status status))))))
((= k %stderr-last)
;; The daemon is done (see `stopWork' in `nix-worker.cc'.)
#t)
(else
- (raise (condition (&nix-protocol-error
+ (raise (condition (&store-protocol-error
(message "invalid error code")
(status k))))))))
invalid item may exist on disk but still be invalid, for instance because it
is the result of an aborted or failed build.)
-A '&nix-protocol-error' condition is raised if PATH is not prefixed by the
+A '&store-protocol-error' condition is raised if PATH is not prefixed by the
store directory (/gnu/store)."
boolean)
(build store things mode)
(if (= mode (build-mode normal))
(build/old store things)
- (raise (condition (&nix-protocol-error
+ (raise (condition (&store-protocol-error
(message "unsupported build mode")
(status 1))))))))))
(define (references/substitutes store items)
"Return the list of list of references of ITEMS; the result has the same
length as ITEMS. Query substitute information for any item missing from the
-store at once. Raise a '&nix-protocol-error' exception if reference
+store at once. Raise a '&store-protocol-error' exception if reference
information for one of ITEMS is missing."
(let* ((requested items)
(local-refs (map (lambda (item)
(or (hash-ref %reference-cache item)
- (guard (c ((nix-protocol-error? c) #f))
+ (guard (c ((store-protocol-error? c) #f))
(references store item))))
items))
(missing (fold-right (lambda (item local-ref result)
'()
(substitutable-path-info store missing))))
(when (< (length substs) (length missing))
- (raise (condition (&nix-protocol-error
+ (raise (condition (&store-protocol-error
(message "cannot determine \
the list of references")
(status 1)))))
"Monadic version of 'query-path-info' that returns #f when ITEM is not in
the store."
(lambda (store)
- (guard (c ((nix-protocol-error? c)
+ (guard (c ((store-protocol-error? c)
;; ITEM is not in the store; return #f.
(values #f store)))
(values (query-path-info store item) store))))
(define* (open-connection-for-tests #:optional (uri (%daemon-socket-uri)))
"Open a connection to the build daemon for tests purposes and return it."
- (guard (c ((nix-error? c)
+ (guard (c ((store-error? c)
(format (current-error-port)
"warning: build daemon error: ~s~%" c)
#f))
file (or (port-filename* port) port))
(leave (G_ "corrupt input while restoring archive from ~s~%")
(or (port-filename* port) port)))))
- ((nix-connection-error? c)
+ ((store-connection-error? c)
(leave (G_ "failed to connect to `~a': ~a~%")
- (nix-connection-error-file c)
- (strerror (nix-connection-error-code c))))
- ((nix-protocol-error? c)
+ (store-connection-error-file c)
+ (strerror (store-connection-error-code c))))
+ ((store-protocol-error? c)
;; FIXME: Server-provided error messages aren't i18n'd.
(leave (G_ "build failed: ~a~%")
- (nix-protocol-error-message c)))
+ (store-protocol-error-message c)))
((derivation-missing-output-error? c)
(leave (G_ "reference to invalid output '~a' of derivation '~a'~%")
(derivation-missing-output c)
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
(set-build-options %store
#:use-substitutes? #f
#:keep-going? #t)
- (guard (c ((nix-protocol-error? c)
- (and (= 100 (nix-protocol-error-status c))
- (string-contains (nix-protocol-error-message c)
+ (guard (c ((store-protocol-error? c)
+ (and (= 100 (store-protocol-error-status c))
+ (string-contains (store-protocol-error-message c)
(derivation-file-name d1))
(not (valid-path? %store (derivation->output-path d1)))
(valid-path? %store (derivation->output-path d2)))))
(test-assert "unknown built-in builder"
(let ((drv (derivation %store "ohoh" "builtin:does-not-exist" '())))
- (guard (c ((nix-protocol-error? c)
- (string-contains (nix-protocol-error-message c) "failed")))
+ (guard (c ((store-protocol-error? c)
+ (string-contains (store-protocol-error-message c) "failed")))
(build-derivations %store (list drv))
#f)))
. ,(object->string (%local-url))))
#:hash-algo 'sha256
#:hash (sha256 (random-bytevector 100))))) ;wrong
- (guard (c ((nix-protocol-error? c)
- (string-contains (nix-protocol-error-message c) "failed")))
+ (guard (c ((store-protocol-error? c)
+ (string-contains (store-protocol-error-message c) "failed")))
(build-derivations %store (list drv))
#f))))
. ,(object->string (%local-url))))
#:hash-algo 'sha256
#:hash (sha256 (random-bytevector 100)))))
- (guard (c ((nix-protocol-error? c)
- (string-contains (nix-protocol-error-message (pk c)) "failed")))
+ (guard (c ((store-protocol-error? c)
+ (string-contains (store-protocol-error-message (pk c)) "failed")))
(build-derivations %store (list drv))
#f))))
(drv (derivation %store "world"
"builtin:download" '()
#:env-vars `(("url" . ,(object->string url))))))
- (guard (c ((nix-protocol-error? c)
- (string-contains (nix-protocol-error-message c) "failed")))
+ (guard (c ((store-protocol-error? c)
+ (string-contains (store-protocol-error-message c) "failed")))
(build-derivations %store (list drv))
#f)))
`("-c" ,(string-append "echo " txt "> $out"))
#:inputs `((,%bash) (,txt))
#:allowed-references '())))
- (guard (c ((nix-protocol-error? c)
+ (guard (c ((store-protocol-error? c)
;; There's no specific error message to check for.
#t))
(build-derivations %store (list drv))
`("-c" ,"echo $out > $out")
#:inputs `((,%bash))
#:allowed-references '())))
- (guard (c ((nix-protocol-error? c)
+ (guard (c ((store-protocol-error? c)
;; There's no specific error message to check for.
#t))
(build-derivations %store (list drv))
`("-c" ,(string-append "echo " txt "> $out"))
#:inputs `((,%bash) (,txt))
#:disallowed-references (list txt))))
- (guard (c ((nix-protocol-error? c)
+ (guard (c ((store-protocol-error? c)
;; There's no specific error message to check for.
#t))
(build-derivations %store (list drv))
(builder '(begin (sleep 100) (mkdir %output) #t))
(drv (build-expression->derivation store "silent" builder))
(out-path (derivation->output-path drv)))
- (guard (c ((nix-protocol-error? c)
- (and (string-contains (nix-protocol-error-message c)
+ (guard (c ((store-protocol-error? c)
+ (and (string-contains (store-protocol-error-message c)
"failed")
(not (valid-path? store out-path)))))
(build-derivations store (list drv))
(builder '(begin (sleep 100) (mkdir %output) #t))
(drv (build-expression->derivation store "slow" builder))
(out-path (derivation->output-path drv)))
- (guard (c ((nix-protocol-error? c)
- (and (string-contains (nix-protocol-error-message c)
+ (guard (c ((store-protocol-error? c)
+ (and (string-contains (store-protocol-error-message c)
"failed")
(not (valid-path? store out-path)))))
(build-derivations store (list drv))
#f)) ; fail!
(drv (build-expression->derivation %store "fail" builder))
(out-path (derivation->output-path drv)))
- (guard (c ((nix-protocol-error? c)
+ (guard (c ((store-protocol-error? c)
;; Note that the output path may exist at this point, but it
;; is invalid.
(and (string-match "build .* failed"
- (nix-protocol-error-message c))
+ (store-protocol-error-message c))
(not (valid-path? %store out-path)))))
(build-derivations %store (list drv))
#f)))
(chdir #$output)
(symlink #$%bootstrap-guile "guile"))
#:allowed-references '()))))
- (guard (c ((nix-protocol-error? c) #t))
+ (guard (c ((store-protocol-error? c) #t))
(build-derivations %store (list drv))
#f)))
(chdir #$output)
(symlink #$%bootstrap-guile "guile"))
#:disallowed-references (list %bootstrap-guile)))))
- (guard (c ((nix-protocol-error? c) #t))
+ (guard (c ((store-protocol-error? c) #t))
(build-derivations %store (list drv))
#f)))
# GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2012, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
#
# This file is part of GNU Guix.
#
(define (build-without-failing drv)
(lambda (store)
- (guard (c ((nix-protocol-error? c) (values #t store)))
+ (guard (c ((store-protocol-error? c) (values #t store)))
(build-derivations store (list drv))
(values #f store))))
`("-e" ,build)
#:inputs `((,bash) (,build))
#:env-vars `(("x" . ,(random-text))))))
- (exit (guard (c ((nix-protocol-error? c)
+ (exit (guard (c ((store-protocol-error? c)
(->bool
- (string-contains (pk (nix-protocol-error-message c))
+ (string-contains (pk (store-protocol-error-message c))
"failed"))))
(build-derivations store (list drv))
#f))))'
(symlink %output (string-append %output "/self"))
#t)))))
(d (package-derivation %store p)))
- (guard (c ((nix-protocol-error? c) #t))
+ (guard (c ((store-protocol-error? c) #t))
(build-derivations %store (list d))
#f)))
(test-equal "connection handshake error"
EPROTO
(let ((port (%make-void-port "rw")))
- (guard (c ((nix-connection-error? c)
- (and (eq? port (nix-connection-error-file c))
- (nix-connection-error-code c))))
+ (guard (c ((store-connection-error? c)
+ (and (eq? port (store-connection-error-file c))
+ (store-connection-error-code c))))
(open-connection #f #:port port)
'broken)))
(test-assert "valid-path? error"
(with-store s
- (guard (c ((nix-protocol-error? c) #t))
+ (guard (c ((store-protocol-error? c) #t))
(valid-path? s "foo")
#f)))
(with-store s
(let-syntax ((true-if-error (syntax-rules ()
((_ exp)
- (guard (c ((nix-protocol-error? c) #t))
+ (guard (c ((store-protocol-error? c) #t))
exp #f)))))
(and (true-if-error (valid-path? s "foo"))
(true-if-error (valid-path? s "bar"))
(test-assert "references/substitutes missing reference info"
(with-store s
(set-build-options s #:use-substitutes? #f)
- (guard (c ((nix-protocol-error? c) #t))
+ (guard (c ((store-protocol-error? c) #t))
(let* ((b (add-to-store s "bash" #t "sha256"
(search-bootstrap-binary "bash"
(%current-system))))
%store "foo" `(display ,s)
#:guile-for-build
(package-derivation s %bootstrap-guile (%current-system)))))
- (guard (c ((nix-protocol-error? c) #t))
+ (guard (c ((store-protocol-error? c) #t))
(build-derivations %store (list d))))))))
"Here’s a Greek letter: λ."))
(display "lambda: λ\n"))
#:guile-for-build
(package-derivation %store %bootstrap-guile))))
- (guard (c ((nix-protocol-error? c) #t))
+ (guard (c ((store-protocol-error? c) #t))
(build-derivations %store (list d))))))))
"garbage: �lambda: λ"))
#:fallback? #f
#:substitute-urls (%test-substitute-urls))
(and (has-substitutes? s o)
- (guard (c ((nix-protocol-error? c)
+ (guard (c ((store-protocol-error? c)
;; XXX: the daemon writes "hash mismatch in downloaded
;; path", but the actual error returned to the client
;; doesn't mention that.
(pk 'corrupt c)
- (not (zero? (nix-protocol-error-status c)))))
+ (not (zero? (store-protocol-error-status c)))))
(build-derivations s (list d))
#f))))))
(set-build-options s #:use-substitutes? #t
#:substitute-urls (%test-substitute-urls))
(and (has-substitutes? s o)
- (guard (c ((nix-protocol-error? c)
+ (guard (c ((store-protocol-error? c)
;; The substituter failed as expected. Now make
;; sure that #:fallback? #t works correctly.
(set-build-options s
(dump (call-with-bytevector-output-port
(cute export-paths %store (list file2) <>))))
(delete-paths %store (list file0 file1 file2))
- (guard (c ((nix-protocol-error? c)
- (and (not (zero? (nix-protocol-error-status c)))
- (string-contains (nix-protocol-error-message c)
+ (guard (c ((store-protocol-error? c)
+ (and (not (zero? (store-protocol-error-status c)))
+ (string-contains (store-protocol-error-message c)
"not valid"))))
;; Here we get an exception because DUMP does not include FILE0 and
;; FILE1, which are dependencies of FILE2.
(bytevector-u8-set! dump index (logxor #xff byte)))
(and (not (file-exists? file))
- (guard (c ((nix-protocol-error? c)
+ (guard (c ((store-protocol-error? c)
(pk 'c c)
- (and (not (zero? (nix-protocol-error-status c)))
- (string-contains (nix-protocol-error-message c)
+ (and (not (zero? (store-protocol-error-status c)))
+ (string-contains (store-protocol-error-message c)
"corrupt"))))
(let* ((source (open-bytevector-input-port dump))
(imported (import-paths %store source)))
(begin
(write (random-text) entropy-port)
(force-output entropy-port)
- (guard (c ((nix-protocol-error? c)
+ (guard (c ((store-protocol-error? c)
(pk 'determinism-exception c)
- (and (not (zero? (nix-protocol-error-status c)))
- (string-contains (nix-protocol-error-message c)
+ (and (not (zero? (store-protocol-error-status c)))
+ (string-contains (store-protocol-error-message c)
"deterministic"))))
;; This one will produce a different result. Since we're in
;; 'check' mode, this must fail.
#:guile-for-build
(package-derivation store %bootstrap-guile (%current-system))))
(file (derivation->output-path drv)))
- (guard (c ((nix-protocol-error? c)
+ (guard (c ((store-protocol-error? c)
(pk 'multiple-build c)
- (and (not (zero? (nix-protocol-error-status c)))
- (string-contains (nix-protocol-error-message c)
+ (and (not (zero? (store-protocol-error-status c)))
+ (string-contains (store-protocol-error-message c)
"deterministic"))))
;; This one will produce a different result on the second run.
(current-build-output-port (current-error-port))