utils: Switch to the new 'setvbuf' API.

* guix/build/utils.scm (setvbuf) [(and guile-2 (not guile-2.2))]: New
procedure.
(remove-store-references): Use the 2.2 'setvbuf' API style.
* guix/build/gnu-build-system.scm (gnu-build): Likewise.
This commit is contained in:
Ludovic Courtès 2019-01-29 09:49:33 +01:00
parent 4bdd41bb83
commit 782f1ea9f6
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 26 additions and 6 deletions

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -784,8 +784,8 @@ in order. Return #t if all the PHASES succeeded, #f otherwise."
(+ (time-second diff) (+ (time-second diff)
(/ (time-nanosecond diff) 1e9)))) (/ (time-nanosecond diff) 1e9))))
(setvbuf (current-output-port) _IOLBF) (setvbuf (current-output-port) 'line)
(setvbuf (current-error-port) _IOLBF) (setvbuf (current-error-port) 'line)
;; Encoding/decoding errors shouldn't be silent. ;; Encoding/decoding errors shouldn't be silent.
(fluid-set! %default-port-conversion-strategy 'error) (fluid-set! %default-port-conversion-strategy 'error)

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org>
@ -101,7 +101,27 @@
locale-category->string)) locale-category->string))
;;;
;;; Guile 2.0 compatibility later.
;;;
;; The bootstrap Guile is Guile 2.0, so provide a compatibility layer.
(cond-expand
((and guile-2 (not guile-2.2))
(define (setvbuf port mode . rest)
(apply (@ (guile) setvbuf) port
(match mode
('line _IOLBF)
('block _IOFBF)
('none _IONBF)
(_ mode)) ;an _IO* integer
rest))
(module-replace! (current-module) '(setvbuf)))
(else #f))
;;; ;;;
;;; Directories. ;;; Directories.
;;; ;;;
@ -989,8 +1009,8 @@ known as `nuke-refs' in Nixpkgs."
;; We cannot use `regexp-exec' here because it cannot deal with ;; We cannot use `regexp-exec' here because it cannot deal with
;; strings containing NUL characters. ;; strings containing NUL characters.
(format #t "removing store references from `~a'...~%" file) (format #t "removing store references from `~a'...~%" file)
(setvbuf in _IOFBF 65536) (setvbuf in 'block 65536)
(setvbuf out _IOFBF 65536) (setvbuf out 'block 65536)
(fold-port-matches (lambda (match result) (fold-port-matches (lambda (match result)
(put-bytevector out (string->utf8 store)) (put-bytevector out (string->utf8 store))
(put-u8 out (char->integer #\/)) (put-u8 out (char->integer #\/))