aboutsummaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-02-28 12:25:22 +0100
committerLudovic Courtès <ludo@gnu.org>2015-02-28 12:25:22 +0100
commitdd0a8ef15f903422c6b020e7d793986427add927 (patch)
treefd3d56c756a4ac8d351a50bd38fd501d1e71ca16 /guix
parent4db87162e68e58031d71597a86b253072e18e2ac (diff)
downloadgnu-guix-dd0a8ef15f903422c6b020e7d793986427add927.tar
gnu-guix-dd0a8ef15f903422c6b020e7d793986427add927.tar.gz
utils: Treat 'configure' and Makefiles with an 8-bit encoding.
* guix/build/utils.scm (patch-makefile-SHELL, patch-/usr/bin/file): Wrap 'substitute*' in 'with-fluids'. Fixes <http://hydra.gnu.org/build/262895>.
Diffstat (limited to 'guix')
-rw-r--r--guix/build/utils.scm38
1 files changed, 21 insertions, 17 deletions
diff --git a/guix/build/utils.scm b/guix/build/utils.scm
index c98c4ca0f0..a5a6167a8c 100644
--- a/guix/build/utils.scm
+++ b/guix/build/utils.scm
@@ -712,16 +712,18 @@ When KEEP-MTIME? is true, the atime/mtime of FILE are kept unchanged."
shell))
(let ((st (stat file)))
- (substitute* file
- (("^ *SHELL[[:blank:]]*:?=[[:blank:]]*([[:graph:]]*/)([[:graph:]]+)(.*)$"
- _ dir shell args)
- (let* ((old (string-append dir shell))
- (new (or (find-shell shell) old)))
- (unless (string=? new old)
- (format (current-error-port)
- "patch-makefile-SHELL: ~a: changing `SHELL' from `~a' to `~a'~%"
- file old new))
- (string-append "SHELL = " new args))))
+ ;; Consider FILE is using an 8-bit encoding to avoid errors.
+ (with-fluids ((%default-port-encoding #f))
+ (substitute* file
+ (("^ *SHELL[[:blank:]]*:?=[[:blank:]]*([[:graph:]]*/)([[:graph:]]+)(.*)$"
+ _ dir shell args)
+ (let* ((old (string-append dir shell))
+ (new (or (find-shell shell) old)))
+ (unless (string=? new old)
+ (format (current-error-port)
+ "patch-makefile-SHELL: ~a: changing `SHELL' from `~a' to `~a'~%"
+ file old new))
+ (string-append "SHELL = " new args)))))
(when keep-mtime?
(set-file-time file st))))
@@ -738,13 +740,15 @@ unchanged."
"patch-/usr/bin/file: warning: \
no replacement 'file' command, doing nothing~%")
(let ((st (stat file)))
- (substitute* file
- (("/usr/bin/file")
- (begin
- (format (current-error-port)
- "patch-/usr/bin/file: ~a: changing `~a' to `~a'~%"
- file "/usr/bin/file" file-command)
- file-command)))
+ ;; Consider FILE is using an 8-bit encoding to avoid errors.
+ (with-fluids ((%default-port-encoding #f))
+ (substitute* file
+ (("/usr/bin/file")
+ (begin
+ (format (current-error-port)
+ "patch-/usr/bin/file: ~a: changing `~a' to `~a'~%"
+ file "/usr/bin/file" file-command)
+ file-command))))
(when keep-mtime?
(set-file-time file st)))))