From c7465dcb96e8d35fb992f4e14c4e22251b951a98 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 5 Feb 2019 10:51:23 +0100 Subject: status: Use 'define-immutable-record-type' and its functional setters. * guix/status.scm (): Define using 'define-immutable-record-type', and add 'set-build-completion' binding. (update-build)[set-completion]: Remove. Use 'set-build-completion' instead. --- guix/status.scm | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/guix/status.scm b/guix/status.scm index bd382baf7a..070071d46f 100644 --- a/guix/status.scm +++ b/guix/status.scm @@ -30,6 +30,7 @@ (define-module (guix status) #:use-module (guix memoization) #:use-module (srfi srfi-1) #:use-module (srfi srfi-9) + #:use-module (srfi srfi-9 gnu) #:use-module (srfi srfi-19) #:use-module (srfi srfi-26) #:use-module (ice-9 regex) @@ -100,14 +101,15 @@ (define-record-type* build-status make-build-status (default '()))) ;; On-going or completed build. -(define-record-type +(define-immutable-record-type (%build derivation id system log-file completion) build? (derivation build-derivation) ;string (.drv file name) (id build-id) ;#f | integer (system build-system) ;string (log-file build-log-file) ;#f | string - (completion build-completion)) ;#f | integer (percentage) + (completion build-completion ;#f | integer (percentage) + set-build-completion)) (define* (build derivation system #:key id log-file completion) "Return a new build." @@ -156,13 +158,6 @@ (define %fraction-line-rx (define (update-build status id line) "Update STATUS based on LINE, a build output line for ID that might contain a completion indication." - (define (set-completion b %) - (build (build-derivation b) - (build-system b) - #:id (build-id b) - #:log-file (build-log-file b) - #:completion %)) - (define (find-build) (find (lambda (build) (and (build-id build) @@ -173,7 +168,7 @@ (define (update %) (let ((build (find-build))) (build-status (inherit status) - (building (cons (set-completion build %) + (building (cons (set-build-completion build %) (delq build (build-status-building status))))))) (cond ((string-any #\nul line) -- cgit v1.2.3