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)))
|
#:abbreviation nar-uri-abbreviation)))
|
||||||
(progress-report-port reporter raw)))
|
(progress-report-port reporter raw)))
|
||||||
((input pids)
|
((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)
|
(decompressed-port (and=> (narinfo-compression narinfo)
|
||||||
string->symbol)
|
string->symbol)
|
||||||
progress)))
|
progress)))
|
||||||
;; Unpack the Nar at INPUT into DESTINATION.
|
;; Unpack the Nar at INPUT into DESTINATION.
|
||||||
(restore-file input destination)
|
(restore-file input destination)
|
||||||
(close-port input)
|
(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
|
;; Skip a line after what 'progress-reporter/file' printed, and another
|
||||||
;; one to visually separate substitutions.
|
;; one to visually separate substitutions.
|
||||||
(display "\n\n" (current-error-port))
|
(display "\n\n" (current-error-port)))))
|
||||||
|
|
||||||
(every (compose zero? cdr waitpid) pids))))
|
|
||||||
|
|
||||||
|
|
||||||
;;;
|
;;;
|
||||||
|
|
|
@ -153,9 +153,11 @@ buffered data is lost."
|
||||||
(close-port in)
|
(close-port in)
|
||||||
(dump-port input out))
|
(dump-port input out))
|
||||||
(lambda ()
|
(lambda ()
|
||||||
|
(close-port input)
|
||||||
(false-if-exception (close out))
|
(false-if-exception (close out))
|
||||||
(primitive-_exit 0))))
|
(primitive-_exit 0))))
|
||||||
(child
|
(child
|
||||||
|
(close-port input)
|
||||||
(close-port out)
|
(close-port out)
|
||||||
(loop in (cons child pids)))))))))
|
(loop in (cons child pids)))))))))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue