diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-02-28 12:25:22 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-02-28 12:25:22 +0100 |
commit | dd0a8ef15f903422c6b020e7d793986427add927 (patch) | |
tree | fd3d56c756a4ac8d351a50bd38fd501d1e71ca16 /guix/build | |
parent | 4db87162e68e58031d71597a86b253072e18e2ac (diff) | |
download | gnu-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/build')
-rw-r--r-- | guix/build/utils.scm | 38 |
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))))) |