status: Print a hint when a 'package-cache' hook fails to build.

* guix/channels.scm (package-cache-file): Add 'channels' to the #:properties
list.
* guix/status.scm (print-build-event): Upon failure, display a hint when
the derivation is a 'package-cache' hook.
This commit is contained in:
Ludovic Courtès 2023-02-06 15:02:34 +01:00
parent f944fa718d
commit 3ab8559436
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 24 additions and 3 deletions

View file

@ -952,6 +952,10 @@ be used as a profile hook."
(backtrace)))) (backtrace))))
(mkdir #$output)))) (mkdir #$output))))
(define channels
(map (compose string->symbol manifest-entry-name)
(manifest-entries manifest)))
(gexp->derivation-in-inferior "guix-package-cache" build (gexp->derivation-in-inferior "guix-package-cache" build
profile profile
@ -960,8 +964,9 @@ be used as a profile hook."
;; instead of failing. ;; instead of failing.
#:silent-failure? #t #:silent-failure? #t
#:properties '((type . profile-hook) #:properties `((type . profile-hook)
(hook . package-cache)) (hook . package-cache)
(channels . ,channels))
#:local-build? #t))) #:local-build? #t)))
(define %channel-profile-hooks (define %channel-profile-hooks

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017-2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -22,6 +22,7 @@
#:use-module (guix i18n) #:use-module (guix i18n)
#:use-module (guix colors) #:use-module (guix colors)
#:use-module (guix progress) #:use-module (guix progress)
#:autoload (guix ui) (display-hint)
#:autoload (guix build syscalls) (terminal-columns) #:autoload (guix build syscalls) (terminal-columns)
#:autoload (guix build download) (nar-uri-abbreviation) #:autoload (guix build download) (nar-uri-abbreviation)
#:use-module (guix store) #:use-module (guix store)
@ -526,6 +527,21 @@ substitutes being downloaded."
(erase-current-line*) ;erase spinner or progress bar (erase-current-line*) ;erase spinner or progress bar
(format port (failure (G_ "build of ~a failed")) drv) (format port (failure (G_ "build of ~a failed")) drv)
(newline port) (newline port)
(let ((properties (and=> (false-if-exception
(read-derivation-from-file drv))
derivation-properties)))
(when (and (pair? properties)
(eq? (assq-ref properties 'type) 'profile-hook)
(eq? (assq-ref properties 'hook) 'package-cache))
(display-hint (format #f (G_ "This usually indicates a bug in one of
the channels you are pulling from, or some incompatibility among them. You
can check the build log and report the issue to the channel developers.
The channels you are pulling from are: ~a.")
(string-join
(map symbol->string
(or (assq-ref properties 'channels)
'(guix))))))))
(match (derivation-log-file drv) (match (derivation-log-file drv)
(#f (#f
(format port (failure (G_ "Could not find build log for '~a'.")) (format port (failure (G_ "Could not find build log for '~a'."))