summary refs log tree commit diff
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
parent4db87162e68e58031d71597a86b253072e18e2ac (diff)
downloadguix-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>.
-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)))))