guix: substitute: Report the last progress in the child process.
Fixes <https://bugs.gnu.org/28756>. * guix/utils.scm (filtered-port): Close the 'input' port for the current process, and close it upon exit in the child process. * guix/scripts/substitute.scm (progress-substitution): Display "\n\n" after the reporter has finished.
This commit is contained in:
parent
bb4b9f7bf3
commit
5efa0e4d4f
|
@ -956,19 +956,22 @@ DESTINATION as a nar file. Verify the substitute against ACL."
|
|||
#:abbreviation nar-uri-abbreviation)))
|
||||
(progress-report-port reporter raw)))
|
||||
((input pids)
|
||||
;; NOTE: This 'progress' port of current process will be
|
||||
;; closed here, while the child process doing the
|
||||
;; reporting will close it upon exit.
|
||||
(decompressed-port (and=> (narinfo-compression narinfo)
|
||||
string->symbol)
|
||||
progress)))
|
||||
;; Unpack the Nar at INPUT into DESTINATION.
|
||||
(restore-file input destination)
|
||||
(close-port input)
|
||||
(close-port progress)
|
||||
|
||||
;; Wait for the reporter to finish.
|
||||
(every (compose zero? cdr waitpid) pids)
|
||||
|
||||
;; Skip a line after what 'progress-reporter/file' printed, and another
|
||||
;; one to visually separate substitutions.
|
||||
(display "\n\n" (current-error-port))
|
||||
|
||||
(every (compose zero? cdr waitpid) pids))))
|
||||
(display "\n\n" (current-error-port)))))
|
||||
|
||||
|
||||
;;;
|
||||
|
|
|
@ -153,9 +153,11 @@ buffered data is lost."
|
|||
(close-port in)
|
||||
(dump-port input out))
|
||||
(lambda ()
|
||||
(close-port input)
|
||||
(false-if-exception (close out))
|
||||
(primitive-_exit 0))))
|
||||
(child
|
||||
(close-port input)
|
||||
(close-port out)
|
||||
(loop in (cons child pids)))))))))
|
||||
|
||||
|
|
Loading…
Reference in New Issue