branch: main commit 03c79dc5ad9b4d770d9cde7601c1924ee383a2eb Author: Ludovic Courtès <l...@gnu.org> AuthorDate: Mon Nov 25 14:44:21 2024 +0100
templates: Defend against corner case on build page. * src/cuirass/templates.scm (build-details): Protect against ‘find-dependency’ returning #f. --- src/cuirass/templates.scm | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/src/cuirass/templates.scm b/src/cuirass/templates.scm index 4be49fa..2f3c090 100644 --- a/src/cuirass/templates.scm +++ b/src/cuirass/templates.scm @@ -37,6 +37,7 @@ version>?)) #:use-module (cuirass config) #:use-module (cuirass database) + #:use-module (cuirass logging) #:use-module (cuirass remote) #:use-module (cuirass specification) #:use-module ((cuirass utils) #:select (assert)) @@ -848,25 +849,33 @@ the existing SPEC otherwise." (tr (th "Dependencies") (td (@ (class "dependencies")) - ,@(let ((dependencies - (build-dependencies/id build)) + ,@(let ((dependencies (build-dependencies/id build)) (max-items 10)) (if (> (length dependencies) 0) `(,(map (lambda (id index) - (let* ((build (find-dependency id)) - (status (build-current-status build))) - `((div - ,@(if (> index (1- max-items)) - '((@ (class "collapse collapse-dep"))) - '()) - (span (@ (class ,(status-class status)) - (title ,(status-title status)) - (aria-hidden "true")) - "") - " " - (a (@ (href "/build/" ,id "/details")) - ,(build-nix-name build)) - (br))))) + (match (find-dependency id) + (#f + ;; FIXME: This is not supposed to happen + ;; but... it does happen sometimes. + (log-error "could not find dependency ~a \ +of build ~a (~a)" + id (build-id build) + (build-nix-name build)) + "") + (build + (let ((status (build-current-status build))) + `((div + ,@(if (> index (1- max-items)) + '((@ (class "collapse collapse-dep"))) + '()) + (span (@ (class ,(status-class status)) + (title ,(status-title status)) + (aria-hidden "true")) + "") + " " + (a (@ (href "/build/" ,id "/details")) + ,(build-nix-name build)) + (br))))))) dependencies (iota (length dependencies))) ,@(if (> (length dependencies) max-items)